【问题标题】:"git checkout --" . vs git checkout [duplicate]“git 结帐——”。 vs git checkout [重复]
【发布时间】:2017-04-27 09:16:38
【问题描述】:

我总是使用git checkout -- . 来清除我的工作目录。我以为我在某处读到 -- 是为了避免 git 认为您正在传递参数(或其他东西)

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

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

PS:在这里提问是因为 git checkout -- .git checkout . 很难用 Google 搜索...

【问题讨论】:

标签: git


【解决方案1】:

我似乎记得 -- 是一种告诉 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

【讨论】:

  • 我真的是说git co . 又名git reset HEAD --hard。但我想在过去的 2 年里我一直在输入这两个破折号 :)
  • @Laoujin git co . 绝对不是aka git reset --hard。这两个命令做不同的事情。
【解决方案2】:

-- 作为一个独立的参数(即不是另一个参数的一部分)被许多 UNIX 命令行程序用来表明它后面的任何东西都不是一个参数。

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

git checkout -- --mydirectory 其中没有 -- 会抛出错误。

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多