应该使用什么git命令为PR准备分支?

时间:2017-08-25 17:44:24

标签: git

嘿 - 我有一个感觉非常简单的问题,但是我无法绕过它,尝试找到答案会导致许多类似但又微妙不同的问题的答案。< / p>

我一直在从主人的旧分支上开发一个功能,而其他团队成员则管理着巨大的拉力。现在他们已经完成了,我需要让我的功能准备好提出拉取请求。

我需要从我的分支机构(在10-15个提交中分布在3-4个文件中)进行相关更改,并将它们与master中的大量更改集成在一起(分布在数十个或数百个文件中的数十个文件中)提交)。我的文件版本与其版本之间会发生合并冲突,但它们很容易解决。什么是传统的方式来抓住我的分支(或建立一个结合了主人和旧分支的新分支)并解决冲突?我开始重新调整,但最后必须解决自fork以来在master中发生的每一次提交,这看起来完全没必要且耗时。

谢谢!

2 个答案:

答案 0 :(得分:0)

执行此操作的典型方法是git pull master进入您的分支并解决冲突。然后git push你的分支。这使拉动请求不那么令人头痛。

答案 1 :(得分:0)

作为TriskalJM stated,通常的方法是git pull master进入您的分支,然后git push进入PR。但是,正如您所说,在您的用例中,rebase可以让您在每次提交的基础上处理冲突。我建议你根据实际结果检查一些方法。

我认为有必要分别处理master分支和旧功能分支的合并,分别对旧内容进行新的更改。为此,您可以尝试将您在功能分支上所做的更改选择到主服务器上(或者更好地从主服务器创建一个新的分支,在其上进行樱桃采摘,然后将其与结果合并以检查它是否隔离)。如果您对此更清楚,也可以尝试:

  1. 从功能创建一个新分支,但从更改前的最后一次提交。我们称之为feature1
  2. masterfeature1合并,处理冲突。
  3. Cherrypick 您的提交从功能到feature 1
  4. 检查结果并发布到master
  5. 对于具有功能分支的merge,您可以选中对于首先出现的简单rebase方法有效的选项。我引用的那个是strategymerge命令的rebase选项。

    使用git rebase ... -s recursive -X theirs通过支持他们的版本”(在这种情况下为theirs = master)强制冲突的帅哥得以干净利落地自动解决。

    注1:请注意,在文档上可能会有点混乱,有一个名为ours的合并策略和一个名为{{1}的选项称为递归的策略(或ours,如我的提案中所述)。 theirs&lt;&gt; git merge ... -s ours