2012-01-26 63 views
11

我需要将一组提交输出到归档文件中。 我该怎么做? 使用svn,我可以选择提交并导出为zip。Git:检索特定的提交

+0

你的意思是这些提交的出口差异? – CharlesB

+0

对不起,现在我意识到这并不容易理解。 我需要在2次提交之间包含大多数更新文件的存档。 – user1170896

回答

18

要向上导出库一定承诺:

git archive -o export.zip <COMMIT>。将<COMMIT>替换为要导出的提交编号。

要创建一个补丁两次提交之间:

git diff COMMIT1 COMMIT2 > patch.txt

+0

我虽然这个命令会导出存储库中的每个提交,直到找到指定的提交。 我只需要导出指定的提交。就像一个补丁。 – user1170896

+0

答案已调整。 – tobiasbayer

+0

好的...但是一个补丁用于另一个存储库。 它包含标记以了解修改的位置。 我只需要在指定的提交之间修改(最新)文件的存档。 – user1170896

10

Git有创建每个提交补丁的便捷方式。尽管这本来就是一种格式化补丁的方式,可以通过电子邮件发送,但它们是提取一组更改的简便方法。

您需要的命令是git format-patch,将这些格式化的补丁应用回git的方式是使用git am命令。

例如,如果您有两个提交C1和Cn要导出为一组git的补丁,你只需要:

git format-patch -k C1..Cn 

这将创建一组编号的补丁(在当前目录)。每个补丁都是提交的差异,以及提交信息(标题,评论,作者,日期等)。

这比两个提交之间的简单差异文件提供的内容要多得多。

+0

我认为这需要'git format-patch -k C1〜..Cn'而不是'git format-patch -k C1..Cn',因为范围的左边是_exclusive_,所以你必须给第一次提交的_parent_('〜')。 – nh2