将分支上的 git 提交保存到文件

Save git commits on a branch to the file

给定本地分支(比如 'test')- 是否可以使用一些 git 魔法将此分支上的提交保存到一个文件中,我可以将该文件发送给其他开发人员,然后他们可以申请这些提交到他的分支?我知道有一种方法可以将分支上的每个提交都保存到文件中,但不确定是否可以只对本地分支上的提交进行保存。

例如假设 master 分支有提交 'a'、'b' 和 'c',我的测试分支是在 'c' 上创建的,并且有提交 'd' 和 'e':

 + (branch:master)
 |
 * commit:'a'
 |
 * commit:'b'
 |
 * commit:'c'
 |  \
...  + (branch:test)
     |
     * commit:'d'
     |
     * commit:'e' 
     x

因此,在 'test' 和 'master' 分支之间生成差异后,我只想在该差异中提交 'd' 和 'e'。 所以其他开发人员也可以从 master 创建他自己的测试分支,应用我的 diff 并在他的分支上提交 'd' 和 'e'。

我知道这可以通过将更改推送到远程分支来实现,但出于某些原因我想避免这样做,是的,我知道分支很便宜,但相信我我有充分的理由不这样做将这些更改推送到远程分支。

在你的测试分支中做

git format-patch master --stdout > patch.diff

申请时

git am < patch.diff

您可以使用git diff命令。

尝试以下操作:

git diff test master

我认为最好的方法是创建一个 bundle。它不仅会移动您的分支所具有的差异,还会移动实际的提交。

该文档有一个很好的示例,但您基本上要做的是在一台计算机上创建一个捆绑包,将其传输到另一台计算机并将其添加为远程。从那里你可以合并、变基、挑选或任何你喜欢的东西。

文档中没有明确提到的是,制作一个太大的包是可以的,它包含目标计算机上已经存在的大量提交,只要它有一个共同点就可以工作。