繁体   English   中英

我从尚未合并的 master 分支创建了一个 PR。 现在我想在不显示第一个 PR 的提交的情况下进行第二个 PR

[英]I made one PR from master branch which is yet to be merged. Now I want to make a second PR without showing commits of first PR in it

我从 master 分支发出了我的第一个 Pull 请求,该分支已经过审查但尚未合并。 现在我尝试通过创建一个新分支来创建第二个 Pull Request。 但我面临的问题是,第二个 Pull Request 也显示了第一个 Pull Request 的提交。 我不想在此 Pull Request 中有以前的提交

任何人都可以提出一种方法,以便我可以只使用我为此 PR 所做的提交来制作第二个 PR。

Git中的一个分支是一个可以自由移动的label。 它指向一个提交。 每个提交都指向其父提交。 当您创建一个分支并且没有指定它的起点时,它将被创建为指向HEAD ,这是您当前签出的提交/分支。

假设您在当前分支上工作时已经提交了提交:当您创建新分支时,这些提交也可以从新分支访问 只要它们没有合并到您的目标分支中,它们就会显示为“要合并的提交”(在 GitHub PR 或gitk target..yourbranch )。

可视化:

A-B-C           master, origin/master
     \
      D-E-F     old-branch
           \
            G   new-branch

出路何在? 您可以重新创建分支及其在目标分支(可能是origin/master )之上的更改,或者您可以变基(这将重写历史,确保您在执行此操作之前了解其含义):

git rebase --onto origin/master oldbranch newbranch

变基后的提交图:

      G'        new-branch
     /
A-B-C           master, origin/master
     \
      D-E-F     old-branch

来自 new-branch ( G ) 的旧提交仍然存在,但不再可以通过命名引用(分支或标签)访问。 G'是一个新的、独立的提交(可以从它的提交 id/hash 看出)与旧G有相同(或非常相似)的补丁(即git diff "G'^" "G'"git diff G^ G )。

old-branchmaster可以访问的任何提交都不会受到变基操作的影响。 (记住:Git 提交是不可变的,永远不会改变。你只能让它们不可访问)。

我建议在远程(!) master上创建一个新分支(因为你的本地master可能指向其他地方),然后从你已经拥有的分支中挑选你想要的提交:

git checkout -b my-new-feature-branch remotes/upstream/master

git cherry-pick <sha1-of-a-commit>

对您想要挑选的每个提交重复最后一步。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM