如果不排除具有.gitattributes导出忽略的文件,请尝试git签出
mkdir /path/to/checkout/
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout -f -q
-f级从索引中检出路径时,不要在未合并时失败条目;相反,将忽略未合并的条目。
and
-问避免冗长
此外,您可以从SVN中的特定提交修订中获取任何分支或标记,只需添加SHA1即可(Git中的SHA1相当于SVN中版本号)
mkdir /path/to/checkout/
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout 2ef2e1f2de5f3d4f5e87df7d8 -f -q -- ./
/path/to/checkout/必须为空,Git不会删除任何文件,但会在没有任何警告的情况下覆盖同名文件
更新:为了避免斩首问题,或者在使用签出导出标签、分支或SHA1时保持工作存储库的完整性,需要添加--./最后
双破折号——告诉git破折号后面的所有内容都是路径或文件,在本例中,告诉git签出不更改HEAD
示例:
该命令将仅获取libs目录以及来自该提交的readme.txt文件
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout fef2e1f2de5f3d4f5e87df7d8 -f -q -- ./libs ./docs/readme.txt
这将在头部HEAD^2后面创建(覆盖)my_file_2_behind_HEAD.txt两次提交
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout HEAD^2 -f -q -- ./my_file_2_behind_HEAD.txt
获取其他分支的导出
git --git-dir=/path/to/repo/.git --work-tree=/path/to/checkout/ checkout myotherbranch -f -q -- ./
注意。/相对于存储库的根