git commit --amend很危险

时间:2016-12-22 16:40:23

标签: git version-control git-commit git-alias

当我真的想git commit -amend时,我有时会不小心输入git commit --amend。 Git检测到并问我

$ git commit -amend
error: did you mean `--amend` (with two dashes ?)

这很棒。

但是,有时我写git commit -ammend然后git会接受这个并将我的拼写错误视为git -a -m "mend",所以它只是提交日志消息“mend”。

我正在寻找一种方法来阻止git这样做。我试图为git commit -ammend定义一个别名,但现在失败了。您对如何处理此问题有任何建议吗?

1 个答案:

答案 0 :(得分:4)

git commit --amend(拼写正确)实际上比git commit -a -m "mend"更危险。前者将重写现有提交,将其替换为新提交,因此这或多或少是破坏性命令。然而,后者只是创建一个你不打算做的提交。这是一个建设性的命令,不会重写任何现有的历史记录,只是添加它。

添加一个你不打算添加的提交可能很麻烦,但根本不存在问题。您可以使用git reset --soft HEAD~1撤消该提交(不丢失任何内容)。这将在不影响工作目录的情况下将分支指针重置为提交。

当然,您也可以撤消提交的修改,但这更像是一个破坏性的命令,您需要小心谨慎。

所以我个人不会打扰Git以错误的方式解释它。是的,这很烦人,但这就是它的全部。只要你注意到它就撤消它。

我个人推荐的内容,特别是如果您发现自己更频繁地修改提交,为git commit --amend创建别名。我个人使用git amend。您可以使用以下ocmmand进行设置:

git config --global alias.amend "commit --amend"

如果您不想触发编辑但只想保留原始提交消息(我这么做,这就是我正在使用的别名),您也可以添加-C HEAD

git config --global alias.amend "commit --amend -C HEAD"