Git导出与SVN导出完全一样

时间:2013-11-25 16:09:07

标签: git build-system svn-export

是否可以从远程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构建系统对入站收费并且磁盘空间有限。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

请参阅man git-archive

另见this related question

之后,你可以做你想做的事,例如:

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