我最近有一个 question answered关于多计算机 git 开发设置,我得到的解决方案确实用 master
解决了我的情况分支,但不是基于主分支的侧分支。
这是我当前的设置:
A--B--C--D master
\
E--F--G--H BUG_37
BUG_37
是一个分支,正在为系统中的功能请求开发对可选跟踪错误的修复,最终将 merge 到主线中,但暂时是分开的。在这种状态下的存储库,一台机器上,我对 master
进行了一些更改分支:
A--B--C--D--I--J--K master
\
E--F--G--H BUG_37
然后我重新设置了 BUG_37
的基线分支到 master
,以确保它作为对最新更改的增强工作:
A--B--C--D--I--J--K master
\
E1--F1--G1--H1 BUG_37
假设 rebase 有一些冲突需要在 rebase 最终确定之前手动修复。如果我将这些更改推送到远程存储库,现在希望将更改 pull 到另一个仍然具有原始设置的开发系统,那么最好的方法是什么? git pull --rebase
将再次运行 rebase,我将不得不手动解决我第一次遇到的冲突,对吗?如果我再次经历冲突时犯了一个小错误,例如 E1-H1 在这个新系统中略有不同,我将使存储库更加不同步。
如何获取原始状态的本地存储库和第三种状态的远程存储库,并更新本地存储库以与远程存储库完全匹配(删除更改 E-H 并将 BUG_37
的 HEAD 移动到新位置)?
最佳答案
我根本不会在已经共享的分支上 rebase 。虽然它会产生最干净的历史记录,但它会更改 BUG_37
中所有提交的哈希值。因此,在目标机器上,您需要完全删除 BUG_37
并重新 pull 它。这样做一次或两次是可以的,但作为常规工作流程就不是很好了。
将master
merge 到BUG_37
中会容易很多;然后可以将 merge 提交(您修复冲突的地方)推送到其他机器,并且不需要删除分支。
关于重新设置分支的 git 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218133/