我打算取消暂存文件,但不是输入:
git reset file.sh
我打字:
git reset file.sh head
输出结果为:
Unstaged changes after reset:
M path/file1
M path/file2
M path/file2
....
^C
我从git文档中知道 git reset 有三种形式
git reset [-q] [<tree-ish>] [--] <paths>...
git reset (--patch | -p) [<tree-ish>] [--] [<paths>...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
但我的命令不符合这三种形式中的任何一种。
我的问题是:这里发生了什么?为什么命令在我的所有存储库上运行?
编辑:实际上, file.sh 存在,但 head 不存在。如果我使用
git reset existing.file nonexisting.file
它将更改 existing.file 上的索引并忽略第二个文件,并显示未分段文件的完整列表(正常,但会导致一些恐慌)。
如果我输入:
git reset nonexisting.file existing.file
它会失败。 http://paste.ubuntu.com/12780596/
感谢@sehe指出正确的解决方案。
答案 0 :(得分:3)
它忽略了head
部分(假设它不是文件)。
要强制git将参数解释为路径(例如,在取消暂存文件删除时),请使用--
git reset HEAD -- some/path