git - 我如何强制 git pull 在每次 pull 时覆盖所有内容?

标签 git git-pull

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

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

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

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

我希望发生的事情是这样的:我希望从实时站点和测试站点 pull 以始终在 pull 时覆盖/merge 。 始终。这些存储库将是只 pull 式的,因为它们不用于开发。

在我所有的研究中,我找不到一个好的解决方案来让 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/

相关文章:

git - 我如何在 Jenkins 上基于 Git 中的特定提交进行构建?

windows - 如何让 git 忽略大小写的变化?

即使使用 --no-edit,Git Pull 也会打开 VIM

git - 如何在忽略本地更改的同时返回 `git pull`?

git - git filter-branch 遇到问题, "ambiguous argument"

windows - 按操作系统划分的 Git 客户端使用率 - 百分比是多少?

git - 如何强制 "git pull"覆盖本地文件?

git - git pull master 的问题与 origin master 不同步

git - 如何查看最新执行的 `git pull`的日期和时间?

具有多个主分支的 Gitflow