我总是使用git checkout -- .
来清除我的工作目录。我以为我在某个地方读到需要--
以避免git认为你传递的参数(或其他东西)
现在一位同事告诉我,我可以放弃--
,事实上,快速测试确实完全一样。
这两个命令之间有什么区别吗?
PS:在这里问,因为git checkout -- .
vs git checkout .
有点难以谷歌...
答案 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找不到分支,那么它将查找文件。
答案 1 :(得分:23)
--
作为独立参数(即不是另一个参数的一部分)来指示其后面的任何内容都不是参数。
为什么呢?好吧,在这种情况下,如果你有一个名字以--
开头的路径,它就会被使用,不应该把它解释为它自己的参数。
即。 git checkout -- --mydirectory
,如果没有--
会抛出错误。