有沒有辦法僅使用git archive
來獲取git push
中的文件到單獨的文件夾?使用git存檔的git推文件列表
我嘗試了以下解決方案
git archive --format zip --output /full/path/to/zipfile.zip ${commitid}
,但我可以得到整個版本庫的內容。
我基本上是尋找在服務器端提交併推送的文件(預接收)。
有沒有辦法僅使用git archive
來獲取git push
中的文件到單獨的文件夾?使用git存檔的git推文件列表
我嘗試了以下解決方案
git archive --format zip --output /full/path/to/zipfile.zip ${commitid}
,但我可以得到整個版本庫的內容。
我基本上是尋找在服務器端提交併推送的文件(預接收)。
下面的命令準備通過提交指定的修改的所有文件的歸檔:
$ git diff-tree -z --no-commit-id --name-only -r <commit-id> | xargs -0 git archive -o list.zip HEAD:
請注意,如果樹包含帶有嵌入空白的文件名,則xargs會表現不佳。如果你的xargs有'-0',簡單的解決方法是將'-z'添加到'git diff-tree'和'-0'到'xargs'。 (另外 - 我還沒有測試過,如果列表足夠長,導致xargs多次運行'git archive',會發生什麼?) – torek
@torek這兩個都非常精明的觀察。按照建議更新第一個修復程序。 – TheCodeArtist
@torek第二個問題的潛在解決方法是覆蓋後端命令以追加到現有的歸檔。例如,以下命令將已備份的tar命令配置爲附加模式(-r)'git config tar.tar.gz.command「tar -cvrzf」'。 – TheCodeArtist
請不要從根本上改變你的問題,問另外一個問題,如果你有一個新的問題。 – nikoshr