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

问题描述 投票:3回答:3

我经常发现自己只想检出一棵树中的某些文件,但由于我在本地修改了它们而不能这样做,并且不希望尝试找出合并的麻烦(我不希望合并任何东西,我只希望某些文件的git版本文件)。

因此,如何强制检出这些文件分散在目录结构上的“ db-backup *”?

例如

git-parent
  - dir1
    - db-backup1
  - dir2
    - db-backupA

谢谢,

r。

git merge git-checkout
3个回答
8
投票
有一些可能的解决方案,取决于您要做什么

  • 如果您想

    放弃所做的更改,则可以使用

    git checkout -f <paths>...
  • 如果您想保存更改以供以后使用,但暂时不担心,可以

    保存更改,然后进行检出:

    git stash git checkout <paths>...
    要恢复更改,请使用git stash pop(或git stash apply)。
  • 如果您只想

    查看文件的Git版本(并可能将其保存在临时文件中或使用其他名称),则可以使用git show

    git show <file>
  • 如果要

    检出某个目录或文件子集在其他位置,则可以按照git-archive主页“示例”部分中的说明使用git archive

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

    另一种实现方法是使用--tempgit checkout-index选项,尽管这可以认为是黑客。

  • HTH


    0
    投票
    git checkout <filename>对我来说很好,即使对该文件进行了修改。作为错误,您究竟得到了什么?您正在尝试运行什么命令?这可能应该起作用:

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


    0
    投票
    使用Git 2.23+(2019年8月),最佳做法是使用git restore而不是git restore命令。

    confusing git checkout结合,将使用HEAD内容还原工作树(即:unstage)

    git checkout

    © www.soinside.com 2019 - 2024. All rights reserved.