使用git merge的详细补丁输出类似于git commit

时间:2017-12-09 01:31:14

标签: git vim

我的.gitconfig文件中有以下全局设置:

commit.verbose=true

我非常希望在编写提交消息时看到vim中的文件编辑。使用git merge时是否也可以使用此功能?

合并时的详细标记与提交详细标记的行为不同。

编辑:这里有一些屏幕截图来解释我在谈论的内容:

对我的develop分支进行一些编辑并在vim中编写消息可能看起来像。如上所述,commit.verbose标志设置为true:

$ git commit -a

enter image description here

现在尝试将更改合并到另一个分支(即master)中会产生以下结果:

$ git checkout master && git merge -v --no-ff develop

enter image description here

我认为你在git docs上看到的详细选项,我在上面的命令中使用,并且在成功合并后与输出相关。在我的示例中,输出为:

Merge made by the 'recursive' strategy.
 README | 2 ++
 1 file changed, 2 insertions(+) 

将详细程度提升到5级并不能解决我的问题:

$ GIT_MERGE_VERBOSITY=5 git merge -v --no-ff develop
Merging:
1b4c630 Initial commit
virtual develop
found 1 common ancestor:
1b4c630 Initial commit
Merge made by the 'recursive' strategy.
 README | 2 ++
 1 file changed, 2 insertions(+)
编辑:我的问题的最接近的答案可以在HERE列出的答案中找到,基本上,如果我在合并之前执行以下,我会得到整个差异

git diff <commit1> <commit2>

编辑2:另一种看待完全合并提交与提交消息相同的方法是首先合并分支,然后运行

git commit --amend

这使得可以将合并提交视为正常提交,至少在查看完整差异方面是这样。

2 个答案:

答案 0 :(得分:2)

我认为您可能正在寻找merge.verbosity

  

<强> merge.verbosity

     

控制递归合并策略显示的输出量。如果检测到冲突,则0级除了最终错误消息外不输出任何内容。级别1仅输出冲突,输出2个冲突和文件更改。 5级及以上输出调试信息。默认值为2级。可以被GIT_MERGE_VERBOSITY环境变量覆盖。

https://git-scm.com/docs/git-merge#git-merge-mergeverbosity

编辑:根据你的屏幕截图更新,我想我必须将我的答案改为:没有,因为我可以告诉你无法用vanilla Git做什么。即使fugitive(我强烈推荐BTW)也没有提供类似的东西。我注意到this possibly relevant question

答案 1 :(得分:1)

有一种循环方式,步骤是:

  1. git merge#...您的选择
  2. 删除提交消息或评论,保存空合并提交消息
    • git中止合并提交
  3. git commit
    • git像往常一样用所有差异创建合并提交消息