等待公关期间工作


71

我正在一个项目上,我提交了我的第一个请求请求,而在等待期间,我想从仍在进行的合并工作中继续构建我的项目。现在我有:

*master
user_story_1

user_story_1 有一个打开请求请求。

现在,我正在尝试创建一个新分支user_story_2,以继续我在的工作user_story_1。如何在Git中做到这一点而又不陷入任何冲突或影响我的待处理合并?

Answers:


71

我假设您要user_story_2在中完成的工作之上开始新的分支user_story_1。这是我在这种情况下使用的工作流程:

  1. 开启以下请求user_story_1

      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  2. user_story_2根据以下内容创建新分支user_story_1

    $ git checkout -b user_story_2 user_story_1
      * (user_story_1, user_story_2)
      *
     /
    * (master)
    *
    *
    
  3. 在新分支上工作:

      * (user_story_2)
      *      
      * (user_story_1)
      *
     /
    * (master)
    *
    *
    
  4. 拉取请求被合并:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | * (user_story_1)
    | *
    |/
    *
    *
    *
    
  5. 删除旧分支:

      * (user_story_2)
      *      
    * | (master)
    |\|
    | *
    | *
    |/
    *
    *
    *
    
  6. 将新分支改组为master

      * (user_story_2)
      *      
     /
    * (master)
    |\
    | *
    | *
    |/
    *
    *
    *
    

9
如果第一个分支被拒绝怎么办?
Narayon

4
我通常会重订user_story_2mastergit rebase --onto master user_story_1 user_story_2-可能会导致冲突,如果两个分支并不是完全独立的。
alextercete

我会尝试一下
anquegi

1
对于第6步,使用交互式重定基准使事情变得更容易。试试看git rebase -i master,它应该显示一个提交清单,user_story_2包括来自的早期提交user_story_1pick从中删除提交行user_story_1,并完成变基。
Athyuttam Eleti '19

1
@shaneb因为user_story_1已被合并(并且可能已删除),所以您需要在user_story_2上进行基础调整master。这是相同的原则:master现在包含所有在user_story_1(加上合并提交),因此,实际上就像在user_story_1添加另一个提交之后重新建立基础一样。Git中的分支只是对提交的引用(认为是指针),因此,在基于分支的基础上,您仅将提交重新应用于新的基本提交(该基本分支引用的提交)。
alextercete

9

我的首选工作流程是:

  1. 在分支主管上 git checkout -b user_story_1
  2. 对进行更改 user_story_1
  3. 公开PR user_story_1
  4. 在分支上user_story_1git checkout -b user_story_2
  5. 对进行更改user_story_2
  6. 一旦user_story_1合并到master中,请切换至user_story_2do git rebase -i master
  7. 这应该向您显示user_story_2要包含在基准库中的提交列表。删除来自的前几个提交user_story_1
  8. 除非使用其他更改更新了主服务器,否则该基准应该干净利落地完成。现在,您已经user_story_2基于master重新建立了基础,并且只有其提交。

6

为您的每个故事/功能从master创建一个新分支。

在合并每个分支之前,要么将master合并到该分支中,要么将您的分支重新部署到master上。后者是我的偏爱,但最终结果是相同的。

您将遇到冲突,没有解决办法。但是,您想解决分支中的冲突;不掌握。这样,您可以在解决冲突之后测试分支,然后再将其合并到主分支中。


2
只要您从旧分支中创建一个新分支,并在同步master之后重新设置基准(请参见接受的答案),就不会有冲突。
pixelbits '18

在接受的答案中,第二个分支(假设它已更改-否则为什么要这样做?)在第一个分支合并到master之后,肯定会发生冲突。
Stephan Bijzitter

它可以,但是如果您是唯一正在研究它的人,则不应该这样做
pixelbits '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.