我最近回答了关于多计算机git开发设置的问题,我到那里的解决方案确实解决了我的master分支机构的情况,但没有基于主机的侧支路.
这是我目前的设置:
A--B--C--D master
\
E--F--G--H BUG_37
Run Code Online (Sandbox Code Playgroud)
BUG_37是一个分支,它正在为系统中的功能请求开发可选跟踪错误的修复程序,并最终将合并到主行中,但暂时是独立的.在这个状态下的存储库,一台机器,我对master分支做了一些更改:
A--B--C--D--I--J--K master
\
E--F--G--H BUG_37
Run Code Online (Sandbox Code Playgroud)
然后,我将BUG_37分支重新设置为master,以确保它可以作为对最新变化的增强:
A--B--C--D--I--J--K master
\
E1--F1--G1--H1 BUG_37
Run Code Online (Sandbox Code Playgroud)
让我们说rebase有一些冲突需要在rebase最终之前手动修复.如果我将这些更改推送到远程存储库,并且现在希望将更改下载到仍具有原始设置的另一个开发系统,那么最好的方法是什么?git pull --rebase将再次运行rebase,我将不得不手动完成我第一次经历的冲突,对吧?如果我再次遇到冲突时会出现轻微的错误,那么在这个新系统中E1-H1略有不同,我将使存储库更加不同步.
如何在原始状态和第三个状态的远程存储库中获取本地存储库,并更新本地存储库以与远程存储库完全匹配(删除更改EH并将HEAD移动BUG_37到新位置)?
我根本不会在已经共享的分支上变基。虽然它会产生最干净的历史记录,但它会更改BUG_37. 因此,在目标机器上,您需要BUG_37完全删除并再次拉取它。这可以做一两次,但不如常规工作流程好。
合并master到 中会容易得多BUG_37;然后合并提交(您修复冲突的地方)可以推送到其他机器,并且不需要删除分支。
删除分支,然后从远程存储库中拉取两个分支。
git branch -D BUG_37
git pull origin master
git pull origin BUG_37:BUG_37
Run Code Online (Sandbox Code Playgroud)
如果您不想在确定其有效之前删除本地 BUG_37 分支,请将远程分支拉入另一个本地分支:
git pull origin BUG_37:NEW_BUG_37
Run Code Online (Sandbox Code Playgroud)