从另一个具有相同名称和相同路径的Git存储库获取子目录很容易,例如:
git remote add checklists https://github.com/janosgyerik/software-construction-notes
git fetch checklists
git checkout checklists/master checklists
示例远程存储库的根目录中有一个名为checklists
的目录。最后一个checkout
命令将获取该目录的内容并将其放在本地存储库的根目录中。
但是如果我想将目录放在其他地方?当然,在checkout
之后,我可以使用git mv checklists my/specs/dir/checklists
将目录移动到我想要的任何位置。但是,如果我在本地项目中已经有一个具有相同名称(可能不同的目的)的目录,这可能会很麻烦。我首先要把目录移开。有一个更清洁的方法,一步到位吗?像这样:
# grab the "checklists" dir and put its contents to my/specs/dir/checklists
git checkout checklists/master checklists my/specs/dir/checklists
顺便说一句,本地存储库是一个完全独立的项目。 software-construction-notes
项目是一个带有一组注释的公共资源,我只是在多个项目中将其简化为克隆,以用作执行需求分析和体系结构设计的模板。这些独立项目不需要跟踪software-construction-notes
项目的历史记录,我真的只需要文件的最新快照。
答案 0 :(得分:1)
git read-tree --prefix=my/specs/dir checklists/master
git checkout-index -a
可能已经有用了。
它读取清单/主树并将其放入索引中,但在某个目录中。之后的checkout命令只是从索引更新您的工作目录,并基本上还原我的/ specs / dir / checklists中的新“待删除”文件。
如果你通常同意git会做什么,你可以通过
组合这两个命令git read-tree -u --prefix=my/specs/dir checklists/master