这应该是一个相对微不足道的问题,我只是(非常)使用Git的新手,所以请原谅这个简单的问题。我需要在我们的开发分支中获得一些更新到功能分支,因为它们是关键的,但是有一个小的复杂因素,因为某些功能更新先前被推送过,但不是全部推送。
我一直在阅读git手册,我已经环顾四周了,我不是110%我已经完全失望了。我不确定这是如何运作的......
A ---- B ---- C ---- D ---- E ---- F ---- G ---- H [DEVELOPMENT]
\ /
\ /
I ---- J ---- K ---- L ---- M [FEATURE]
因此,我们目前的状态:
我的IDE报告我的功能分支是2 Ahead {L,M}和4 Behind {E,F,G,H}。
我们需要将最新的更新提交到开发中,以便将其引入功能,因此我可以坚持下去。它应该看起来像:
A ---- B ---- C ---- D ---- E ---- F ---- G ---- H [DEVELOPMENT]
\ / \
\ / \
I ---- J ---- K ----- ------ ------ ----- L ---- M [FEATURE]
如何修复此解决方案,而不会使远程分支系统特别难看或碎片化? 这应该是来自Feature分支的一个非常简单的rebase或merge操作,一个命令,对吧?
git rebase开发(然后纠正任何冲突)?
我不知道这对遥控器有什么影响,我真的不想为任何人打破任何东西。如果有人能够告诉我如何正确地做到这一点,我会很感激。 :)
答案 0 :(得分:1)
您总是希望保持您的功能分支与开发分支保持同步。
这可以通过pull或rebase来完成。由于你已经推动,rebase会产生新的潜在问题。
如此简单:
git merge development
来自您的功能分支。结果是所有关键提交现在都是功能分支的一部分,完全符合您的要求。
答案 1 :(得分:1)
首先,您必须修复本地分支:
git checkout M
使用左侧的本地功能分支更新
git rebase H
或
git merge H
(我更喜欢rebase)
此时,您可能需要使用git mergetool修复一些冲突,只需按照说明操作即可。
现在,您可以从本地功能分支更新远程功能分支:
git push origin feature_branch:feature_branch
您只需要在推送时担心远程分支,其他一切都在本地完成。例如,在最后一个命令中,唯一受影响的远程分支是:在那之后的一个:,feature_branch。