是否可以从远程Git存储库中仅导出单个修订版中的文件?在Subversion中,我们可以轻松地做到这一点:
svn export https://some.website.com/trunk/app/etc@5317 --username=user --password=pass --force -r 5317 ./build/trunk/app
这将只提供修订版5317中更改的文件,而不提供任何其他内容。为什么在Git中这不可能?
注意:我已经阅读了How to do a “git export” (like “svn export”),但所有答案都提到了克隆整个存储库的一些变体。我不需要整个工作树。我只需要一些文件。我的存储库是4.5演出,我托管在VM上的FTP构建系统对入站收费并且磁盘空间有限。任何帮助表示赞赏。
答案 0 :(得分:1)
请参阅man git-archive
。
之后,你可以做你想做的事,例如:
git archive --remote=<repo> --output=repo-master.zip master
答案 1 :(得分:0)
这将只提供修订版5317中更改的文件,而不提供任何其他内容。 为什么在Git中这不可能?
它没有按钮,因为git fetch
或其他几种git方法中的任何一种都更好,但转储提交中更改的文件的全部内容是
git clone --no-checkout . ../scratch # dirt cheap
( cd ../scratch
git diff-tree --name-only -r commit^! | xargs git checkout commit --
git ls-files | tar czTf - ../export.tgz
)
rm -rf ../scratch
进行最小提取的git方法是从浅层克隆开始。可以用事后事后的方式做到这一点,甚至可以避免在对象数据库中有任何东西,但除非磁盘空间有些荒谬,否则git的做法是来自您的远程站点
git clone --depth=1 -b mainbranch u://r/l
从此开始,只是
git pull
保持最新
答案 2 :(得分:0)
您可以使用此工具https://github.com/hegoku/git-export,安装它,以及在两次提交之间将修改后的文件导出到文件夹时:
$ git-export -o /home/path_of_folder commit_1 commit_2
或者您只想将修改后的文件从特定提交导出到文件夹:
$ git-export -o /home/path_fo_folder commit_1