Git导出与SVN导出完全相同

Git导出与SVN导出完全相同,git,build-system,svn-export,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中是不可能的 注意:我已经读过了,但是所有的答案都提到了克隆整个存储库的一些

是否可以从远程Git存储库中仅导出单个版本中的文件?在Subversion中,我们可以轻松做到这一点:

svn export https://some.website.com/trunk/app/etc@5317 --username=user --password=pass  --force -r 5317 ./build/trunk/app

这将只提供在修订版5317中更改的文件,而不提供其他内容。为什么这在Git中是不可能的


注意:我已经读过了,但是所有的答案都提到了克隆整个存储库的一些变体。我不需要整个工作树。我只需要一把文件。我的存储库是4.5千兆,我的FTP构建系统托管在一个VM上,对入站收费,并且磁盘空间有限。非常感谢您的帮助。

请参阅
man git archive

另见

在这之后,您可以做您想做的事情,例如:

git archive --remote=<repo> --output=repo-master.zip master
git归档--remote=--output=repo-master.zip master

这将只提供在修订版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
要保持最新

您可以使用此工具,安装它,并在两次提交之间导出修改过的文件到文件夹时:

$ git-export -o /home/path_of_folder commit_1 commit_2
或者,如果您只想将修改后的文件从特定提交导出到文件夹:

$ git-export -o /home/path_fo_folder commit_1

-1因为git archive在远程回购上不起作用,所以它首先需要克隆。在git archive的手册页中,我可以看到选项--remote,并给出以下解释:--remote=从远程存储库检索tar存档,而不是从本地存储库创建tar存档。我用的是1.8.4.3。公平地说,当我第一次回答时,我并不知道,当我看到你的评论时,我只是查看了手册页。也许最近增加了什么?也请看。问题是,这将获得所有文件,而不是所有更改的文件。@jthill我理解这个问题的方式是,他想要一次修订的所有文件。他说:“是否可以从远程Git存储库中只导出单个版本的文件?”。随后的“[…]只有在第5317版中更改的文件”可能会引起混淆,并导致您的解释,但我仍然认为作者的原始意图只是获得一个特定的版本及其所有文件。“这将只提供在第5317版中更改的文件,而没有其他内容。”-您确定这不会提供5316版中存在的文件和5317版中未更改的文件吗?谢谢,这正是我要找的