git checkout - .vs git checkout

Lao*_*jin 65 git

我总是习惯git checkout -- .清理我的工作目录.我以为我读到了某个地方--需要避免git认为你传递的参数(或其他东西)

现在一位同事告诉我,我可以放弃--,实际上,快速测试也是如此.

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

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

Tim*_*sen 104

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

git checkout stuff
Run Code Online (Sandbox Code Playgroud)

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

git checkout stuff       # checkout the branch stuff
git checkout -- stuff    # checkout the file stuff
Run Code Online (Sandbox Code Playgroud)

请注意,这git checkout <name>实际上是针对分支,但Git语法是放松的,如果Git找不到分支,那么它将查找文件.

密切相关:当存在同名文件时Git更改分支


Pow*_*ord 30

-- 作为独立参数(即不是另一个参数的一部分),许多UNIX命令行程序使用它来指示其后面的任何内容都不是参数.

为什么?好吧,在这种情况下,它用于你有一个名字以...开头的路径,--不应该被解释为它自己的参数.

git checkout -- --mydirectory哪个,没有--会抛出错误.