我如何强制git pull覆盖每次拉动的所有内容?
我有一个CENTRAL裸机存储库,有三个开发人员存储库可以正常进行推送。
我还有另外两个仓库从CENTRAL裸机回购:一个是现场服务器,另一个是测试/阶段服务器 - 每个都从各自的分支中提取。
场景是这样的:我在CENTRAL回购站上有一个post-update
挂钩脚本,它可以自动访问测试和实时回购,并在每个回收站上运行一个pull命令。 这会更新测试服务器和活动服务器,全部取决于哪个分支有新的提交。 这一切都很好。
问题在于:在紧急情况下可能会有时间直接在服务器上更新文件(通过ftp或其他方式),并且CENTRAL更新后的脚本将因为合并/覆盖冲突发生而失败。 没有办法避免这种情况,这是不可避免的。
我想要发生的事情是这样的:我希望从实况和测试网站拉总是覆盖/合并拉。 总是。 由于这些回购不适合开发,因此这些回购将仅为拉回。
在我所有的研究中,我找不到一个好的解决方案,总是强制覆盖本地文件。 这是可能吗? 如果是这样的话,它会带来一个很好的发展情景。
真正做到这一点,理想的方式是不使用pull
在所有的,而是fetch
和reset
:
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