git从未提交的提交创建补丁

时间:2014-10-03 10:02:26

标签: git patch

我无法在远程工作时推送,因此我想从尚未推送到我的开发分支的所有提交中创建一个补丁,以通过电子邮件发送。我该怎么做?

2 个答案:

答案 0 :(得分:14)

git format-patch <commit-ish>为自指定提交后的每次提交创建一个补丁文件。

因此,要导出所有未删除的提交,只需输入

即可
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


旁注:
更容易(也更强大)的事情可能是将您的回购副本保存在拇指驱动器上或类似的。然后将thumbdrive设置为远程(git remote add thumb /media/thumbdrive),将提交推送到它(git push thumb master),当你回到公司时,从驱动器拉出并推到原点。

答案 1 :(得分:4)

您可以创建一个 creating a patch (意味着代表git仓库的文件,而不是bundle。) 在您的情况下,需要incremental bundle

git bundle create ../yourRepo.bundle" --since=x.days.ago --all

x替换为您想要放入该捆绑包中的天数:不要害怕放置&#34;太多&#34;该回购中的日子:从您的捆绑中克隆的人只会获得新的提交,而不是他/她在本地回购中已经拥有的提交。

捆绑包是一个单独的文件,就像一个补丁,但可以用作Git仓库:易于复制并易于使用(作为常规的Git仓库)。
如果您唯一的用途是通过远程仓库(从中无法直接推送)完成提交来完成本地仓库,这比补丁更容易。