我正在使用git bash on windows:
$ git --version
git version 2.7.2.windows.1
我已将以下内容放入~/.gitconfig
:
[core]
mergeoptions = --edit
目的是让我在执行合并时让git始终加载编辑器,这样我就可以检查消息了。我已经确认git正在读取并加载~/.gitconfig
:
$ git config --list | grep "edit"
core.mergeoptions=--edit
然而,当我将分支合并到master
时,它不会加载编辑器,更糟糕的是,当我查看提交列表时,没有迹象表明合并甚至发生了!另一个分支肯定合并了。也许我做错了什么?以下是我使用的流程:
git checkout master
git checkout -- .
git clean -fd
git merge other-branch
git push origin master
答案 0 :(得分:0)
一个简短的理论:你应该将git branches视为git提交图上的可移动标签(通常是树,但不一定)。因此,如果您与已经包含提交的分支进行合并,当前分支指向,git认为您只是希望将该另一个分支的所有更改包含到相关分支中,因此它只是移动指针(当前分支机构)到另一个分支机构。
您可以使用git merge --no-ff
来阻止此类行为,但通常只会创建不必要的无用提交。
我建议你在图形工具合并之前检查你的提交的当前状态(gitk已经足够了但是还有很多),要清楚地了解什么到被执行。
查看git reflog
输出也很有用,因为它会将所有更改记录到引用状态。