Git 如何从拉取请求中排除不必要的提交?
我在使用git分支时遇到了一个问题。我发送了PR以将开发分支合并到主分支,但它包含了不必要的提交。我想从公共关系中删除这些Git 如何从拉取请求中排除不必要的提交?,git,github,Git,Github,我在使用git分支时遇到了一个问题。我发送了PR以将开发分支合并到主分支,但它包含了不必要的提交。我想从公共关系中删除这些 我从主分支创建了开发分支,并添加了D1、D2提交。最后,我使用“挤压和合并”将开发分支合并到主分支 我从“开发”分支创建了一个要素分支,并添加了F1、F2 同时,另一个人向主分支添加了M4 commit 我发送了一个请求将功能分支合并到master。然而,该PR包括D1、D2、F1和F2提交 我必须从master创建特性分支。这是我的错误:( 除了D1和D2之外,我如何只包
除了D1和D2之外,我如何只包括F1和F2提交?只要D1、D2更改已经合并到主控中,就可以通过新的拉取请求再次发送它们(D1、D2不被视为更改) 然而,在您的案例中,您需要使用M1 Commit重新设置开发分支的基础,这样您的PR就会用所有东西更新,而GIT只会将F1和F2检测为新的东西
- 或
最简单的方法就是从Master创建一个PR进行开发,并在拉出更新后将其合并。因为您与第一个PR进行了挤压合并,Git不知道D1和D2已经包含在Master分支中 您需要
rebase--on
feature分支到主分支的(最新)提交:
结果如下所示:
───M1───M2───M3───S────────────M4 (master)
└────D1───D2──┘ (develop) └────F1───F2 (feature)
现在,您可以push--force
您的功能分支并更新您的PR。或者关闭旧的PR并使用当前功能分支创建一个新的PR
顺便说一句:从您的分支名称来看,我假设您使用的是一种GitFlow分支模型。在这种模型中,您不应该使用挤压合并将开发分支合并到主控中,因为对于已合并的提交,您将始终存在此问题。请PR的作者创建最新主控的另一个分支(或存储库中的目标分支) 作者必须选择所需的提交,并在需要时进行挤压并提交 作者发送了一份新的PR是正确的,但所有这些稍微花哨(使用方框字符集)的图表都有点不对劲,从您自己的开始: 原因是: …我使用“挤压和合并”将开发分支合并到主分支 clicky GUI上的“挤压和合并”按钮,或命令行上的“
git merge--squash
”,会生成一个不是合并的新提交。而不是:
...--M1--M2--M3--S--M4 <-- master
\ /
D1-----D2 <-- develop
我们看到,feature
有四个提交可以从其tip提交(包括tip提交本身)中访问从master
无法访问的,即D1-D2-F1-F1
。无论是否有某个名称指向D2
,这四个提交都是在功能上的四个提交,而master
上没有(提交M1
在两个分支上,其左侧的所有内容也是如此。)
我认为考虑这一点的一个好方法是,“挤压合并”具有终止刚刚合并的分支的副作用。提交D1
和D2
现在实际上是“死的”而且必须被视为至少有轻微的放射性。因为,它们最终通常是无害的。但是它们会让你的提交历史看起来很丑陋,因为为什么要提交两次,一次是两次单独的提交,然后是一次更大的提交?如果功能实际上是合并的,而不是挤压-“合并”-最坏的情况是,由于S
的后代提交中的某些更改,它们可能会在以后导致冲突
因为合并的分支现在“死了”应该删除它。也就是说,您应该运行git branch-D develope
。但在执行此操作之前,请确保提交D1
和D2
本身不包含在任何其他分支中,当然,在您的情况下,它们是包含在其他分支中的。如果它们包含在其他分支中,则必须将这些分支重新构建为不再有这两项承诺
请注意“重新设置基础并合并”(GitHub上的另一个clicky按钮实际上所有三个按钮都组合成一个带有内部下拉菜单的按钮,但这只是表示三个不同按钮的一种方式)另外还有杀死分支的副作用,因为rebase实际上意味着将旧的提交复制到新的提交,然后停止使用旧的提交以支持新的副本
我会以这种方式将post-git-rebase——绘制到主开发功能图上,保持图片中的“dead”develope
:
F1'-F2' <-- feature
/
...--M1--M2--M3--S--M4 <-- master
\
D1--D2 <-- develop
\
F1--F2 [abandoned]
F1'-F2“将开发基础重新设置为母版”是什么意思?我认为这是“将开发分支的头移到M4”,对吗?不对。它复制提交F1
和F2
在母版的顶部,将特征分支的头设置为新的F2
提交,请参见
───M1───M2───M3───S────M4 (master)
└────D1───D2───┘ (develop)
└────F1───F2 (feature)
...--M1--M2--M3--S--M4 <-- master
\ /
D1-----D2 <-- develop
...--M1--M2--M3--S--M4 <-- master
\
D1--D2 <-- develop
...--M1--M2--M3--S--M4 <-- master
\
D1--D2--F1--F2 <-- feature
F1'-F2' <-- feature
/
...--M1--M2--M3--S--M4 <-- master
\
D1--D2 <-- develop
\
F1--F2 [abandoned]