“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自己的条款更有意义。


    任何继--被视为一个文件名(未作为程序参数)。 例如,如果您有以破折号开头的文件名,这很重要。

    链接地址: http://www.djcxy.com/p/50859.html

    上一篇: Difference between "git checkout <filename>" and "git checkout

    下一篇: Make subprocess find git executable on Windows