我有一个CENTRAL裸存储库,有三个开发人员存储库正常拉动和推送它.
我还有另外两个来自CENTRAL裸仓库的存储库:一个是实时服务器,另一个是测试/阶段服务器 - 每个都来自它自己的分支.
场景是这样的:我post-update在CENTRAL repo上有一个钩子脚本,它自动访问测试和实时回购并在每个上运行一个pull命令.这会更新测试服务器和实时服务器,具体取决于具有新提交的分支.一切都很好.
问题是:在紧急情况下有时可能会在服务器上直接更新文件(通过ftp或其他),然后CENTRAL更新后脚本将失败,因为会发生合并/覆盖冲突.没有办法避免这种情况,这是不可避免的.
我想要发生的是:我希望实时和测试站点的拉力总是覆盖/合并拉.总是.这些回购将是拉动的,因为它们不适合开发.
在我的所有研究中,我找不到一个好的解决方案,让拉总是强制覆盖本地文件.这是可能吗?如果是这样,那将是一个很好的发展方案.
Amb*_*ber 485
真正做到这一点,理想的方式是不使用pull在所有的,而是fetch和reset:
git fetch origin master
git reset --hard FETCH_HEAD
git clean -df
Run Code Online (Sandbox Code Playgroud)
(改变master你想要跟随的任何分支.)
pull是围绕以某种方式将更改合并在一起而reset设计的,而是围绕简单地使本地副本与特定提交匹配而设计的.
clean根据系统的需要,您可能需要考虑稍微不同的选项.
use*_*007 20
你可以试试这个:
git reset --hard HEAD
git pull
Run Code Online (Sandbox Code Playgroud)
另一个想法是删除整个git并制作一个新的克隆.
我不确定如何在一个命令中执行此操作,但您可以执行以下操作:
git reset --hard
git pull
Run Code Online (Sandbox Code Playgroud)
甚至
git stash
git pull
Run Code Online (Sandbox Code Playgroud)
要提取分支的副本并从原始位置强制覆盖本地文件,请使用:
git reset --hard origin/current_branch
Run Code Online (Sandbox Code Playgroud)
当前所有工作都将丢失,然后将与原始分支相同
git reset --hard HEAD
git fetch --all
git reset --hard origin/your_branch
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
281850 次 |
| 最近记录: |