我如何强制git pull覆盖每次拉动的所有内容?

我有一个CENTRAL裸机存储库,有三个开发人员存储库可以正常进行推送。

我还有另外两个仓库从CENTRAL裸机回购:一个是现场服务器,另一个是测试/阶段服务器 - 每个都从各自的分支中提取。

场景是这样的:我在CENTRAL回购站上有一个post-update挂钩脚本,它可以自动访问测试和实时回购,并在每个回收站上运行一个pull命令。 这会更新测试服务器和活动服务器,全部取决于哪个分支有新的提交。 这一切都很好。

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

我想要发生的事情是这样的:我希望从实况和测试网站拉总是覆盖/合并拉。 总是。 由于这些回购不适合开发,因此这些回购将仅为拉回。

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


真正做到这一点,理想的方式是不使用pull在所有的,而是fetchreset

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

(把master变成你想跟随的任何分支。)

pull是围绕某种方式合并更改而设计的,而reset是围绕简单地使本地副本匹配特定提交而设计的。

根据您的系统需求,您可能需要考虑稍微不同的选项来clean


你可以试试这个:

git reset --hard HEAD
git pull

(从我如何强制“git pull”覆盖本地文件?)

另一个想法是删除整个git并创建一个新的克隆。


我不知道如何在一个命令中做到这一点,但你可以做一些事情:

git reset --hard
git pull

甚至

git stash
git pull
链接地址: http://www.djcxy.com/p/4279.html

上一篇: How do I force git pull to overwrite everything on every pull?

下一篇: git: Switch branch and ignore any changes without committing