我需要为某人制作补丁(他们不使用git) - 通过提交更改的文件的zip。
我想像
git archive --format = zip commitguid> myfiles.zip
但这会提取整个内容,而不仅仅是已更改的文件。有没有办法做到这一点? 并且使它变得更复杂 - 有没有任何方法可以通过多次提交来执行此操作(是的,我应该在进行更改之前进行分支,但事后才知道)
修改
基于下面的@Amber解决方案,我可以在Git Bash的两个步骤中执行此操作,以便在c:\ data \ progs中安装7Zip的Windows。
git diff --name-only a-sha b-sha > tmp.txt
/C/data/progs/7za.exe a myzip.zip @tmp.txt
答案 0 :(得分:15)
git diff --name-only <oldsha> <newsha> | zip dest.zip -@
填写适当的SHAs / refs。例如,要创建仅包含master
和feature
分支之间更改的文件的zip:
git diff --name-only master feature | zip dest.zip -@
答案 1 :(得分:1)
另见git help format-patch
。它生成一个提交中所有更改的diff补丁,以及提交作者,日期,消息和一些不错的差异统计信息。你可以压缩并发送它。
答案 2 :(得分:0)
我找到了问题(on github-gist,来自rmkpatchaa用户)的解决方案。
它不需要任何外部工具,并且是Windows Git Bash窗口中的单行命令:
git archive --output=changes.zip HEAD $(git diff --name-only SHA1 SHA2 --diff-filter=ACMRTUXB)
它创建了一个标准的zip存档,其中只包含两次提交之间更改的文件,没有多余的git东西或任何东西,并且在接收端不需要任何额外的工具。