Git 合并不会生成编辑器
Git merge does not spawn editor
我正在使用 git bash on windows:
$ git --version
git version 2.7.2.windows.1
我已将以下内容放入我的~/.gitconfig
:
[core]
mergeoptions = --edit
目的是让 git 在我进行合并时始终加载编辑器,以便我可以检查消息。我已经验证 ~/.gitconfig
正在被 git:
读取和加载
$ 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
一个简短的理论:您应该将 git 分支视为 git 提交图(通常是树,但不一定)上的可移动标签。因此,如果您与一个已经包含提交的分支进行合并,则当前分支指向,git 认为您只是希望将其他分支的所有更改包含到当前分支中,所以它只是将指针(当前分支)移动到另一个分支。
您可以使用 git merge --no-ff
来防止此类行为,但通常它只会产生不必要的、无用的提交。
我建议您在合并之前在图形工具中检查提交的当前状态(gitk 已经足够了,但有很多),以清楚地了解要执行的操作.
查看 git reflog
输出也很有用,因为它记录了对引用状态的所有更改。
我正在使用 git bash on windows:
$ git --version
git version 2.7.2.windows.1
我已将以下内容放入我的~/.gitconfig
:
[core]
mergeoptions = --edit
目的是让 git 在我进行合并时始终加载编辑器,以便我可以检查消息。我已经验证 ~/.gitconfig
正在被 git:
$ 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
一个简短的理论:您应该将 git 分支视为 git 提交图(通常是树,但不一定)上的可移动标签。因此,如果您与一个已经包含提交的分支进行合并,则当前分支指向,git 认为您只是希望将其他分支的所有更改包含到当前分支中,所以它只是将指针(当前分支)移动到另一个分支。
您可以使用 git merge --no-ff
来防止此类行为,但通常它只会产生不必要的、无用的提交。
我建议您在合并之前在图形工具中检查提交的当前状态(gitk 已经足够了,但有很多),以清楚地了解要执行的操作.
查看 git reflog
输出也很有用,因为它记录了对引用状态的所有更改。