这是什么" git reset"命令吗?

时间:2015-10-13 20:57:52

标签: git

我打算取消暂存文件,但不是输入:

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指出正确的解决方案。

1 个答案:

答案 0 :(得分:3)

它忽略了head部分(假设它不是文件)。

要强制git将参数解释为路径(例如,在取消暂存文件删除时),请使用--

git reset HEAD -- some/path