2013-08-12 31 views
1

有沒有辦法僅使用git archive來獲取git push中的文件到單獨的文件夾?使用git存檔的git推文件列表

我嘗試了以下解決方案

git archive --format zip --output /full/path/to/zipfile.zip ${commitid} 

,但我可以得到整個版本庫的內容。

我基本上是尋找在服務器端提交併推送的文件(預接收)。

+0

請不要從根本上改變你的問題,問另外一個問題,如果你有一個新的問題。 – nikoshr

回答

0

下面的命令準備通過提交指定的修改的所有文件的歸檔:

$ git diff-tree -z --no-commit-id --name-only -r <commit-id> | xargs -0 git archive -o list.zip HEAD: 
+0

請注意,如果樹包含帶有嵌入空白的文件名,則xargs會表現不佳。如果你的xargs有'-0',簡單的解決方法是將'-z'添加到'git diff-tree'和'-0'到'xargs'。 (另外 - 我還沒有測試過,如果列表足夠長,導致xargs多次運行'git archive',會發生什麼?) – torek

+0

@torek這兩個都非常精明的觀察。按照建議更新第一個修復程序。 – TheCodeArtist

+0

@torek第二個問題的潛在解決方法是覆蓋後端命令以追加到現有的歸檔。例如,以下命令將已備份的tar命令配置爲附加模式(-r)'git config tar.tar.gz.command「tar -cvrzf」'。 – TheCodeArtist