Git Extensions'不承诺'不工作

时间:2017-10-09 06:49:29

标签: git git-commit git-extensions git-commands

我使用的是Git Extensions版本[2.50.02 - 最新(当前)]。当我打开“合并分支”时,我看到复选框“不提交”被选中。

enter image description here

当我执行合并时,我看到所有更改都已提交(未推送到远程)。我期待这些更改不会被提交,所以我可以在推送到远程分支之前进行检查。

日志显示Git Extension执行以下命令

  

git merge branch --no-commit --no-ff

有没有人见过这个问题?如果有,是否有解决方法?

1 个答案:

答案 0 :(得分:2)

--no-commit选项的文档说明:

  

- commit, - no-commit
     执行合并并提交结果。此选项可用于覆盖--no-commit。

     

使用--no-commit执行合并但假装合并失败并且不自动提交,以便让用户有机会在提交之前检查并进一步调整合并结果。

未明确说明的内容是:已修改的文件已暂存(就好像所有文件都已被git add编辑)。
但是,如果您在回购邮件上运行git status,则可以很快看到这一点。

如果您想在真正提交之前查看差异,则必须在--cached命令上使用git diff opiton:

git diff --cached
git difftool --cached
git difftool -d --cached
gitk --cached
# etc ...

如果您的本地计算机上已经提交了更改,那么这不是我所期望的插件,它表明它已经运行git merge branch --no-commit --no-ff

我建议在此行之后的操作中查看日志文件,看看是否有任何机会触发提交,
如果你在那里看不到任何额外的动作,并且你不记得做过可能触发提交的事情,那么它可能是扩展中的一个错误。

无论如何,您的更改尚未发布(未推送),您仍然可以通过运行来查看差异:

git diff HEAD HEAD~1

如果你想摆脱那个提交,但保持修改为暂存,你也可以运行:

git reset --soft HEAD~1

如上所述,您可以使用以下方式查看差异:

git diff --cached