我经常发现自己希望仅检出某棵树中的某些文件,但由于我在本地修改了它们而不想尝试弄清合并的麻烦(我不想合并任何东西 - 我只想要某些文件的git版本)。git签出某些文件尽管存在冲突
那么我怎么能强制结账,例如,“db-backup *”这些文件分散在目录结构中?
e.g
git-parent
- dir1
- db-backup1
- dir2
- db-backupA
感谢,
河
我经常发现自己希望仅检出某棵树中的某些文件,但由于我在本地修改了它们而不想尝试弄清合并的麻烦(我不想合并任何东西 - 我只想要某些文件的git版本)。git签出某些文件尽管存在冲突
那么我怎么能强制结账,例如,“db-backup *”这些文件分散在目录结构中?
e.g
git-parent
- dir1
- db-backup1
- dir2
- db-backupA
感谢,
河
有几个可能的解决方案,这取决于你想要做
如果你想放弃更改什么,你可以使用
git checkout -f <paths>...
如果您想保存更改以备后用,但暂时不担心它们,您可以存储您的更改ES然后做一个结账:
git stash
git checkout <paths>...
恢复所做的更改,使用git stash pop
(或git stash apply
)。
如果要将文件的根本视图的Git版本(也许它保存在临时文件中,或者在其他的名字),你可以使用git show
为:
git show <file>
如果您要结账一些目录或文件的子集在其他一些地方,您可以使用git archive
在“示例”混帐档案主页的部分描述:
git archive --format=tar --prefix=subdir/ HEAD:subdir |
(cd /var/tmp/ && tar xf -)
请注意,它会使用来自HEAD(上次提交)的版本,而不是来自索引,尽管通常不会有任何区别。
另一种实现方法是使用--temp
选项git checkout-index
,虽然这可以被认为是hackery。
HTH
git checkout <filename>
即使对文件进行了修改,也能正常工作。你究竟发生了什么错误,你试图运行什么命令?这或许应该工作:
find . -name 'db-backup*' | xargs git checkout --