为何无法正确执行git reset –hard HEAD^

Git入门书里都会提到放弃最后一次的commit而回复到再上一次commit的指令:

git reset --hard HEAD^

但是这个指令在Windows的命令提示字符cmd.exe里却无法执行,会出现错误:

D:git-root	est>git reset --hard HEAD^ More? More? fatal: ambiguous argument HEAD : unknown revision or path not in the working tree. Use -- to separate paths from revisions, like this: git  [...] -- [...]

今天终于弄清楚了:^是cmd.exe的escape字符,属于特殊字符,命令里要用到文字 ^ 时必须用双引号把它夹起来,因此只要如下就可以正确执行:

git reset --hard HEAD"^"

或者:

git reset --hard "HEAD^"

或许有人会觉得奇怪:为何不直接使用bash就好,因为几乎所有的教学或书籍都是在bash环境里展示的。最主要的原因是团队成员程度参差不齐,为能有效推广学习,还是先让大家能在既有的环境里把动作先做好,行有余力者再自行去使用别的环境吧,毕竟要操作的是Git而不是再多去学另一个Shell。


经验分享 程序员 微信小程序 职场和发展