在远程工作时,我无法进行推送操作,因此我希望能够从我的 develop 分支中尚未推送的所有提交中创建一个单独的补丁并通过电子邮件发送它。我该如何做到这一点?
git format-patch <commit-ish>
命令可以为自指定提交(commit)以来的每个提交(commit)创建一个补丁文件(patch file)。
因此,要导出所有未推送的提交(commit), 只需执行以下命令:
git format-patch origin/master -o patches/
所有这些都将输出到patches/
目录中。
如果您想要一个单个文件,请添加--stdout
:
git format-patch origin/master --stdout > patches_$(date -I).patch
执行该命令将创建一个名为 patches_2014-10-03.patch
(或其他日期)的文件,并在其中包含所有补丁。 注意:patch
或其他简单的补丁应用程序无法处理生成的文件。它只能使用 git am
。
附注:
更简便(也更稳定)的做法可能是将您的存储库备份到闪存驱动器或类似设备上。然后将闪存驱动器设置为远程 (git remote add thumb /media/thumbdrive
),将您的提交推送到其中 (git push thumb master
),当回到公司时,从驱动器中拉取并推送到源。
$(date -I)
了 :) - cfstras不要创建补丁,你可以创建一个bundle(表示一个代表git存储库的文件,从中你将能够拉取)。 在你的情况下,需要一个增量捆绑包。
git bundle create ../yourRepo.bundle" --since=x.days.ago --all
x
替换为您想要放入该包中的天数:不要担心在该存储库中放入“太多”天:从您的捆绑包克隆的人将仅获得新提交,而不是他/她已经在本地存储库中拥有的提交。