git merge --no-commit with edits

Bil*_*oor 4 git

如果我使用

git merge --no-commit <other-branch>
Run Code Online (Sandbox Code Playgroud)

然后进行更改,例如从合并中删除文件,这仍然是真正的合并吗?

我希望分支相关(通过合并),但我不希望新分支中的所有更改。

作为一个更具体的例子,other-branch 是旧版本的发布分支。当前分支是当前产品的开发分支。我们对应该移到开发分支的发布分支进行了一些更改。

我们过去曾使用过cherry-picks,但我觉得让git了解两个分支之间的关系可能有好处。

编辑过的合并仍然是合并吗?

Von*_*onC 7

--no-commit选项只是停止并让您在提交合并之前调查合并是否顺利。

这现已记录在 Git 2.22(2019 年第 2 季度)中

请参阅Elijah Newren ( )的提交 1ede45e(2019 年 2 月 21 日)。(由Junio C Hamano 合并 -- --提交082c15a,2019 年 3 月 7 日)newren
gitster

merge-options.txt--no-commit:选项的正确措辞

前面的措辞暗示--no-commit总是会导致合并操作“暂停”并允许用户进行进一步的更改和/或为合并提交提供特殊的提交消息。

快进合并则不是这种情况,因为没有要创建的合并提交。

如果没有合并提交,就没有地方可以“停止合并并允许用户调整更改”;这样做需要某种形式的完全变基。

由于用户可能不知道他们的分支是否已分叉,因此请修改措辞以正确解决快进情况,并建议使用--no-ffwith--no-commit来确保合并在完成之前停止。

文档更清楚:

--no-commit创建合并提交之前执行合并并停止,以便用户有机会在提交之前检查并进一步调整合并结果。

请注意,快进更新不会创建合并提交,因此无法停止这些合并--no-commit
因此,如果您想确保合并命令不会更改或更新您的分支,请使用--no-ffwith --no-commit


Edw*_*son 5

是的,它仍然是一个合并。无论您运行git merge <other-branch>还是git merge --no-commit <other-branch>,结果都将是一个合并提交,它有两个父项。该--no-commit选项只是停止并让您在提交合并之前调查合并是否顺利。