最好用一个例子解释:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: README
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: CONTRIBUTING.md
这可能是一个小细节,但为什么在git checkout -- <file>
工作时写git checkout <file>
?我测试了它,它也适用于破折号,但我无法弄清楚它们的用途。
答案 0 :(得分:3)
git checkout filename
仅在您没有名为filename
的分支时才有效。 :d
--
消除歧义。如果要查看名为foo
的分支:
> git checkout foo
Switched to branch 'foo'
如果要在当前分支中签出名为foo
的文件名:
> git branch
foo
* master
> git checkout -- foo
> cat foo
This is file `foo` in the `master` branch.
如果您想查看分支foo
中存在的名为foo
的文件名:
> git branch
foo
* master
> git checkout foo -- foo
> cat foo
This is file `foo` in the `foo` branch.
答案 1 :(得分:2)
--
是从bash借用的语法。来自bash手册页的报价:
-
A - 表示选项结束并禁用进一步的选项处理 - 之后的任何参数都被视为文件名和参数。 - 的参数相当于 - 。