我无法在远程工作时推送,因此我想从尚未推送到我的开发分支的所有提交中创建一个补丁,以通过电子邮件发送。我该怎么做?
答案 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仓库)。
如果您唯一的用途是通过远程仓库(从中无法直接推送)完成提交来完成本地仓库,这比补丁更容易。