2016-10-12 153 views
4

我有一个特征分支test。我做了我的更改并对该分支进行了更改。同时,我的master提示发生了变化(假设它有更多来自其他开发者的提交)。拉请求后重新激活

在将我的更改推送到远程分支之前,我做了一个git rebase,然后推送了我的更改并创建了“合并请求”。

对于我的拉取请求,我需要解决一些问题。

修复后,我看到我的master分支已更新。 (假设来自其他开发者的更多提交)。

在任何时候,之所以合并mastertest分支是:有可能是场景中需要被集成在主的变化和测试此功能分支

应用在这种情况下,我有2个问题。

  1. 如何合并/变基的master到我test分支的新变化,而不必合并在我test分公司承诺?通过这种方式,我将同时拥有属于合并请求一部分的以前的提交和合并请求评论修正的新提交。

  2. 如何合并/重新组合mastertest并将新提交添加到我现有的以前的提交中,以便始终在我的PR中提交一个提交?

+1

您是否将rebase用于任何特定原因而不是合并?为什么签出'测试'并运行'git merge master'? –

+0

为避免nee合并提交 – Rams

+0

好吧,相反,如果这是唯一原因,您应该考虑使用'merge --ff'。 –

回答

3

首先,确定您是否确实需要将master中的新更改集成到您的功能分支中。这可能是因为您可以忽略master的新更改。如果它们不会与test中的更改相冲突,那么这是最容易做的事情,维护人员无论如何都可以合并您的PR。

您可以通过检查GitHub PR页面轻松查看是否属于这种情况。如果您收到“无法自动合并”消息,则必须使用以下解决方案之一。


的标准方法,包括上游的变化不合并是刚刚重新变基:

git checkout test 
git rebase master 

由于这个改写历史,你将需要强制推送:

git push --force-with-lease 

你公关将与您的所有提交进行更新,并将在其历史记录中包含master的新提交。

强制性警告:由于重新编写了重写历史记录,因此对于在此分支上工作的其他人可能是危险的/破坏性的。一定要清楚地告诉你与你合作的任何人所做的事情。

如果你不想变基,你的其他选择:

  • 合并mastertest,但你说你不希望这样做。
  • git cherry-pickmaster上的任何新提交。这有副本你的分支上的这些提交的缺点。
  • 做一个壁球合并mastertestgit merge --squash master。这与cherry-pick类似,但只创建一个提交。
+0

谢谢@Scott我会尝试解决方案并进行更新。 – Rams

+0

重新合并或合并的原因不是因为git说'PR可以合并'有可能出现这样的情况:需要集成主机中的更改并使用此功能分支测试应用程序 – Rams

+0

@Rams啊,好的。这是一个有效的原因。你可能应该[编辑](// stackoverflow.com/help/editing)提到你的问题。 –