我有一个 CENTRAL 裸存储库,其中有三个开发人员存储库可以正常 pull 和推送到它。
我还有另外两个从 CENTRAL 裸仓库中提取的存储库:一个是实时服务器,另一个是测试/阶段服务器——每个都从各自的分支中提取。
场景是这样的:我在 CENTRAL 存储库上有一个 post-update
Hook 脚本,它自动访问测试和实时存储库并在每个存储库上运行 pull 命令。这会同时更新测试服务器和实时服务器,一切都取决于哪个分支有新的提交。这一切都很好。
问题是这样的:在紧急情况下,有时可能会直接在服务器上更新文件(通过 ftp 或其他方式),然后 CENTRAL 更新后脚本将失败,因为会发生 merge/覆盖冲突。这种情况无法避免,而且不可避免。
我希望发生的事情是这样的:我希望从实时站点和测试站点 pull 以始终在 pull 时覆盖/merge 。 始终。这些存储库将是只 pull 式的,因为它们不用于开发。
在我所有的研究中,我找不到一个好的解决方案来让 pull 总是强制覆盖本地文件。这是可能吗?如果是这样,那将是一个很好的发展场景。
最佳答案
真正做到这一点的理想方法是根本不使用pull
,而是使用fetch
和reset
:
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/