git checkout - 。 vs git checkout

时间:2016-12-12 13:28:44

标签: git

我总是使用git checkout -- .来清除我的工作目录。我以为我在某个地方读到需要--以避免git认为你传递的参数(或其他东西)

现在一位同事告诉我,我可以放弃--,事实上,快速测试确实完全一样。

这两个命令之间有什么区别吗?

PS:在这里问,因为git checkout -- . vs git checkout .有点难以谷歌...

2 个答案:

答案 0 :(得分:75)

我似乎记得--是一种告诉Git将checkout后面的内容视为文件而不是分支的方法。假设您同时拥有一个名为stuff的文件和分支。然后以下命令看起来很模糊:

git checkout stuff

因为不清楚您是要求签出文件还是分支机构。通过使用--,您明确告诉Git按该名称/路径签出文件。因此,在这种情况下,以下命令允许检出分支和名为stuff的文件:

git checkout stuff       # checkout the branch stuff
git checkout -- stuff    # checkout the file stuff

请注意,git checkout <name>实际上是用于分支,但Git语法是放宽的,如果Git找不到分支,那么它将查找文件。

密切相关:Git change branch when file of same name is present

答案 1 :(得分:23)

许多UNIX命令行程序使用

--作为独立参数(即不是另一个参数的一部分)来指示其后面的任何内容都不是参数。

为什么呢?好吧,在这种情况下,如果你有一个名字以--开头的路径,它就会被使用,不应该把它解释为它自己的参数。

即。 git checkout -- --mydirectory,如果没有--会抛出错误。