“git checkout <filename>”和“git checkout”之间的区别
http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
我找到了一篇文章。
但仍不知道有什么区别
git checkout <filename>
git checkout -- <filename>
我应该在什么情况下分别使用第一个和第二个?
特殊的“选项” --
意思是“把这个点之后的每个参数都当作文件名,不管它看起来如何”。 这不是Git特有的,它是一个通用的Unix命令行约定。 通常你用它来阐明参数是文件名而不是选项,例如
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
1也需要--
意味着后面的参数不是它的可选“treeish”参数,它指定了你想要的提交。
因此,在这种情况下,可以安全地使用--
总是,但是当您要恢复的文件的名称以-
开头或与分支名称相同时,则需要使用该文件。 分支/文件消除歧义的一些示例:
git checkout README # would normally discard uncommitted changes
# to the _file_ "README"
git checkout master # would normally switch the working copy to
# the _branch_ "master"
git checkout -- master # discard uncommitted changes to the _file_ "master"
和选项/文件消除:
git checkout -p -- README # interactively discard uncommitted changes
# to the file "README"
git checkout -- -p README # unconditionally discard all uncommitted
# changes to the files "-p" and "README"
如果你有一个名字以-
开头的分支,我不确定你会怎么做。 也许首先不要这样做。
1在这种模式下; “结帐”也可以做其他几件事。 我从来没有理解过为什么git选择实施“放弃未提交的更改”作为“checkout”子命令的一种模式,而不是像大多数其他VCS一样“恢复”,或者我认为git自己的条款更有意义。
任何继--
被视为一个文件名(未作为程序参数)。 例如,如果您有以破折号开头的文件名,这很重要。
上一篇: Difference between "git checkout <filename>" and "git checkout