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