git commit --amend很危险

cod*_*ave 7 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 ?)
Run Code Online (Sandbox Code Playgroud)

这很棒.

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

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

pok*_*oke 6

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

添加您不打算添加的提交可能很麻烦,但根本没有问题。您可以使用git reset --soft HEAD~1. 这将重置指向提交之前的分支指针,而不会影响您的工作目录。

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

所以我个人不会打扰 Git 以错误的方式解释它。是的,这很烦人,但仅此而已。当您注意到它时,只需将其撤消。

我个人会推荐什么,特别是如果你发现自己更频繁地修改提交,为git commit --amend. 我个人使用git amend. 您可以使用以下命令进行设置:

git config --global alias.amend "commit --amend"
Run Code Online (Sandbox Code Playgroud)

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

git config --global alias.amend "commit --amend -C HEAD"
Run Code Online (Sandbox Code Playgroud)