git签出某些文件,尽管存在冲突

git签出某些文件,尽管存在冲突,git,merge,git-checkout,Git,Merge,Git Checkout,我经常发现自己只想签出树中的某些文件,但无法签出,因为我已经在本地修改了它们,不想麻烦地尝试合并(我不想合并任何东西-我只想要某些文件的git版本) 那么,如何强制签出,例如,“db backup*”,其中这些文件分散在一个目录结构上 e、 g 谢谢 r、 git checkout对我来说很好,即使文件有修改。您得到的错误是什么,您试图运行的命令是什么?这可能会起作用: find . -name 'db-backup*' | xargs git checkout -- 有几种可能的解决方案,具

我经常发现自己只想签出树中的某些文件,但无法签出,因为我已经在本地修改了它们,不想麻烦地尝试合并(我不想合并任何东西-我只想要某些文件的git版本)

那么,如何强制签出,例如,“db backup*”,其中这些文件分散在一个目录结构上

e、 g

谢谢

r、

git checkout
对我来说很好,即使文件有修改。您得到的错误是什么,您试图运行的命令是什么?这可能会起作用:

find . -name 'db-backup*' | xargs git checkout --

有几种可能的解决方案,具体取决于您想做什么

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

    git checkout -f <paths>...
    
  • 如果您想在其他地方签出某些目录或文件子集,您可以使用
    git archive
    ,如git archive主页“示例”部分所述:

    git archive --format=tar --prefix=subdir/ HEAD:subdir | 
        (cd /var/tmp/ && tar xf -)
    
    请注意,它将使用来自HEAD(lastcommit)的版本,而不是来自索引的版本,尽管通常不会有任何区别

    实现这一点的另一种方法是使用
    git checkout index
    --temp
    选项,尽管这可能被认为是黑客行为

对于Git 2.23+(2019年8月),最佳实践是使用而不是命令

结合使用,将恢复具有头部内容的工作树(即:取消显示)

git stash
git checkout <paths>...
git show <file>
git archive --format=tar --prefix=subdir/ HEAD:subdir | 
    (cd /var/tmp/ && tar xf -)
git restore -s@ :(glob)db-backup*