2012-01-26 62 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