如何将变更集(或提交)存储为文本文件,以便我可以将这些更改加载/应用回到我当前的活动分支中?
例如,我期望得到像这样的东西:
git commit --to-file ~/temp_commit_1.txt
是否存在一种机制可以创建文本文件,其中包含可被 Git 理解的提交详情?如果没有,那么最接近实现这种行为的方式是什么?
如何将变更集(或提交)存储为文本文件,以便我可以将这些更改加载/应用回到我当前的活动分支中?
例如,我期望得到像这样的东西:
git commit --to-file ~/temp_commit_1.txt
是否存在一种机制可以创建文本文件,其中包含可被 Git 理解的提交详情?如果没有,那么最接近实现这种行为的方式是什么?
git format-patch
使用 git format-patch
命令。
git format-patch <master>
0001-commit-msg1.patch
0002-commit-msg2.patch
以上代码将会为每个提交创建一个单独的文件。
如果你想要创建一个文件,以更方便地作为附件或上传到其他地方,你可以使用--stdout
选项并将输出重定向到一个文件中:
git format-patch master --stdout > output_file.patch
# EXample: The last 10 patches from head in a single patch file:
git format-patch -10 HEAD --stdout > 0001-last-10-commits.patch
git am <patch file>
除了 @CodeWizard
说的内容之外,如果你谈论的是同一代码库中的分支,那么在文件中搞文本补丁就没有意义了,因为你可以使用 git cherry-pick
命令来完成这个操作:它会将一个分支上的一个或多个提交逐个作为文本补丁应用到当前检出的分支上。
顺便提一下,如果您需要在不直接连接的Git存储库之间传输一系列提交,则git bundle
可能比使用补丁的命令更容易:前者生成一个自包含的“归档”,您可以从中获取、拉取、cherry-pick等,就像从常规的Git存储库中一样。