Git 在等待待处理的PR时工作
我正在做一个项目,我提交了我的第一个拉请求,在我等待的时候,我想继续做我的项目,从我在合并中做的工作开始,这个合并仍在等待中。现在我有:Git 在等待待处理的PR时工作,git,pull-request,Git,Pull Request,我正在做一个项目,我提交了我的第一个拉请求,在我等待的时候,我想继续做我的项目,从我在合并中做的工作开始,这个合并仍在等待中。现在我有: *master user_story_1 user\u story\u 1有一个打开的拉取请求 现在我正在尝试创建一个新分支user\u story\u 2,在那里我可以继续我在user\u story\u 1上留下的工作。我如何在Git中做到这一点而不陷入任何冲突或影响我的挂起合并?从master为您的每个故事/功能创建一个新分支 在合并每个分支之前,请将
*master
user_story_1
user\u story\u 1
有一个打开的拉取请求
现在我正在尝试创建一个新分支
user\u story\u 2
,在那里我可以继续我在user\u story\u 1
上留下的工作。我如何在Git中做到这一点而不陷入任何冲突或影响我的挂起合并?从master为您的每个故事/功能创建一个新分支
在合并每个分支之前,请将主分支合并到该分支中,或将分支重新设置到主分支上。我更喜欢后者,但最终结果是一样的
你会遇到冲突,这是无法避免的。但是,您希望解决分支中的冲突;不是主人。通过这种方式,您可以在解决冲突后测试分支,然后再将其合并到master中。我假设您希望在您在
user\u story\u 1
中所做工作的基础上启动新的user\u story\u 2
分支。以下是我在此类场景中使用的工作流:
用户\u故事\u 1打开拉取请求:
* (user_story_1)
*
/
* (master)
*
*
$ git checkout -b user_story_2 user_story_1
用户故事1
创建新分支用户故事2
:
* (user_story_1)
*
/
* (master)
*
*
$ git checkout -b user_story_2 user_story_1
* (user_story_2)
*
* (user_story_1)
*
/
* (master)
*
*
* (user_story_2)
*
* | (master)
|\|
| * (user_story_1)
| *
|/
*
*
*
* (user_story_2)
*
* | (master)
|\|
| *
| *
|/
*
*
*
* (user_story_2)
*
/
* (master)
|\
| *
| *
|/
*
*
*
我对此的首选工作流:
git checkout-b user\u story\u 1
用户故事\u 1
用户\u故事\u 1的PR
user\u story\u 1
,git checkout-b user\u story\u 2
user\u story\u 2
进行更改user\u story\u 1
合并到master中,切换到user\u story\u 2
并执行git-rebase-i master
user\u story\u 2
提交列表。删除来自user\u story\u 1
的前几个提交user\u story\u 2
在master的基础上重新设置,并且只有它的提交如果第一个分支被拒绝,会发生什么?我通常会将
user\u story\u 2
重设到master
:git-rebase——重设到master user\u story\u 1 user\u story\u 2
——如果两个分支不是完全独立的,可能会导致冲突。我会尝试一下第6步,使用交互式重设使事情变得更容易。尝试git-rebase-i master
,它会向您显示user\u story\u 2
上的提交列表,包括user\u story\u 1
的早期提交。从user\u story\u 1
中删除提交的pick
行,并完成重新基础。@shaneb因为user\u story\u 1
已合并(可能已删除),您需要将user\u story\u 2
重新基础到master
。这是相同的原则:master
现在包含了user\u story\u 1
中的所有提交(加上合并提交),因此它实际上与在添加另一个提交后重新基于user\u story\u 1
的情况相同。Git中的分支只是对提交的引用(思考指针),因此当您重新设置分支的基础时,您只需将提交重新应用于新的基础提交(基础分支引用的基础提交)。只要您从旧分支创建一个新分支,并在同步主分支后重新设置基础(请参阅接受的答案),不应该有冲突。在公认的答案中,第二个分支(假设它有变化——否则,为什么要这样做?)在第一个分支合并到master之后肯定会有冲突。它可以,但如果你是唯一一个处理它的人,它不应该有冲突