尽管发生冲突,git checkout某些文件

Hör*_*nHH 2 git merge git-checkout

我经常发现自己想要只检查树中的某些文件但不能因为我在本地修改它们并且不想尝试找出合并的麻烦(我不想合并任何东西 - 我只想要某些文件的git版本) .

那么如何强制检查,例如,"db-backup*"这些文件分散在目录结构中?

例如

git-parent
  - dir1
    - db-backup1
  - dir2
    - db-backupA
Run Code Online (Sandbox Code Playgroud)

谢谢,

Jak*_*ski 8

根据您的要求,有几种可能的解决方案

  • 如果要放弃更改,可以使用

    git checkout -f <paths>...
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您想稍后保存更改,但暂时不担心它们,您可以隐藏更改,然后进行结帐:

    git stash
    git checkout <paths>...
    
    Run Code Online (Sandbox Code Playgroud)

    要恢复更改,请使用git stash pop(或git stash apply).

  • 如果您只想查看文件的Git版本(并且可能将其保存在临时文件中或其他名称下),您可以使用git show:

    git show <file>
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果要在其他位置签出某些目录或文件子集,可以按照git-archive主页的"示例"部分中的说明使用:git archive

    git archive --format=tar --prefix=subdir/ HEAD:subdir | 
        (cd /var/tmp/ && tar xf -)
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,它将使用HEAD(最后一次提交)的版本,而不是索引,但通常没有区别.

    实现这一目标的另一种方法是使用--temp选项git checkout-index,尽管这可以被认为是hackery.

HTH