我有一个 CENTRAL 裸存储库,它有三个开发人员存储库,可以正常 pull 和推送到它。

我还有另外两个从 CENTRAL 裸仓库中提取的存储库:一个是实时服务器,另一个是测试/阶段服务器——每个都从各自的分支中提取。

场景是这样的:我在 CENTRAL 存储库上有一个 post-update 钩子(Hook)脚本,它会自动访问测试和实时存储库并在每个存储库上运行 pull 命令。这会更新测试服务器和实时服务器,这一切都取决于哪个分支有新的提交。这一切都很好。

问题是这样的:有时可能会在紧急情况下直接在服务器上更新文件(通过 ftp 或其他方式),然后 CENTRAL 更新后脚本将失败,因为会发生 merge/覆盖冲突。这种情况没有办法避免,而且不可避免。

我想要发生的是:我希望来自实时站点和测试站点的 pull 总是在 pull 时覆盖/merge 。 总是。 这些 repos 将是 pull-only,因为它们不用于开发。

在我所有的研究中,我找不到一个好的解决方案来让 pull 总是强制覆盖本地文件。这是可能吗?如果是这样,那将是一个很好的发展场景。

最佳答案

真正做到这一点的理想方法是根本不使用 pull ,而是使用 fetchreset :

git fetch origin master
git reset --hard FETCH_HEAD
git clean -df

(将 master 更改为您想要关注的任何分支。)
pull 旨在以某种方式将更改 merge 在一起,而 reset 旨在简单地使您的本地副本与特定提交匹配。

根据系统的需要,您可能需要考虑与 clean 略有不同的选项。

关于git - 如何强制 git pull 在每次 pull 时覆盖所有内容?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9589814/

10-13 08:50