为什么git重置' HEAD @ {1}'抛出错误?

时间:2018-05-11 13:52:35

标签: git cmd

当我做一个reflog时,我看到了

C:\dev\myproj>git reflog
dfeb578 HEAD@{0}: checkout: moving from release to master
15a6cd0 HEAD@{1}: reset: moving to 15a6cd055d1ce2f1e4592bc3dcb1370c0a330dd3
d5d97e7 HEAD@{2}: merge master: Merge made by the 'recursive' strategy.
b215102 HEAD@{3}: checkout: moving from master to release

我想重置HEAD @ {1}所以我做

git reset 'HEAD@{1}'

但这会返回一个错误:

C:\dev\myproj>git reset 'HEAD@{1}'
fatal: ambiguous argument ''HEAD@{1}'': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

检查我的分支状态,我看到了

> git branch                                           
  JIRA-826-recurse-folder-nodes                        
  JIRA-827-import-duplicate-nodes-fails                
  admin-api                                            
* master                                               

这是在Windows上,使用命令shell和Git Bash的结果相同。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

你应该看到与bash不同的结果。

问题是cmd(与unix shell不同)不会使用'进行引用并将它们传递给git。您可以从错误消息中看到git试图找到一个字面上称为'HEAD@{1}'的分支/文件(包括引号)。

修正:

git reset HEAD@{1}

(或

git reset "HEAD@{1}"

如果你真的想添加引号。)