简单的Git功能分支问题

时间:2014-03-27 12:29:48

标签: git branch

这应该是一个相对微不足道的问题,我只是(非常)使用Git的新手,所以请原谅这个简单的问题。我需要在我们的开发分支中获得一些更新到功能分支,因为它们是关键的,但是有一个小的复杂因素,因为某些功能更新先前被推送过,但不是全部推送。

我一直在阅读git手册,我已经环顾四周了,我不是110%我已经完全失望了。我不确定这是如何运作的......


我做了什么:

  1. 我创建了一个本地功能分支,将其从我们的开发中分离出来 分行在{B}
  2. 我对它进行了一些研究。我做了三次改变 {I,J,K}。
  3. 我推了这三个提交,作为一个新的远程分支。
  4. 我必须将功能合并到开发中{E}。
  5. 我进一步研究了Feature,再次提交了两次{L,M}。
  6. 出现了一些问题,然后我不得不推动三次提交 发展{F,G,H},对特征至关重要。

  7. 我们拥有什么:

    A ---- B ---- C ---- D ---- E ---- F ---- G ---- H [DEVELOPMENT]
            \                 /
             \               /
              I ---- J ---- K ---- L ---- M  [FEATURE]
    

    因此,我们目前的状态:

    • 本地/功能位于{M}
    • 远程/功能位于{K}
    • 本地/发展处于{H}
    • 远程/开发位于{H}

    我的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开发(然后纠正任何冲突)?

    我不知道这对遥控器有什么影响,我真的不想为任何人打破任何东西。如果有人能够告诉我如何正确地做到这一点,我会很感激。 :)

2 个答案:

答案 0 :(得分:1)

您总是希望保持您的功能分支与开发分支保持同步。

这可以通过pull或rebase来完成。由于你已经推动,rebase会产生新的潜在问题。

如此简单:

git merge development

来自您的功能分支。结果是所有关键提交现在都是功能分支的一部分,完全符合您的要求。

答案 1 :(得分:1)

首先,您必须修复本地分支:
git checkout M

使用左侧的本地功能分支更新 git rebase Hgit merge H(我更喜欢rebase)

此时,您可能需要使用git mergetool修复一些冲突,只需按照说明操作即可。

现在,您可以从本地功能分支更新远程功能分支:
git push origin feature_branch:feature_branch

您只需要在推送时担心远程分支,其他一切都在本地完成。例如,在最后一个命令中,唯一受影响的远程分支是:在那之后的一个:,feature_branch。