如何从不同的提交创建一个补丁?

时间:2017-01-23 15:39:27

标签: git github

让我们说,开发服务器中的git日志就像这样

aaaa - mine
bbbb - other dev
cccc - another dev 
dddd - mine
eeee - another dev
ffff - mine
gggg - mine

基于该示例日志,如何在我提交的4个提交中创建一个补丁?以便将我的代码推送到登台服务器很容易。

因为如果我这样做

git show gggg > first.patch
git show ffff > second.patch
git show bbbb > third.patch
git show aaaa > fourth.patch 

已经相当多了。 我们目前的流程就像这样

1)发展 2)提交并推送代码到dev服务器 3)经产品所有者测试和验证后,为分段创建补丁 4)将补丁应用于分期 5)经过QA测试验证后,推向生产。

那么如何组合我的提交来创建一个.patch文件?

1 个答案:

答案 0 :(得分:2)

我要做的是使用交互式rebase来创建只有您的更改的分支。这里的警告是,当您执行此操作时,您将创建一个新的,未经测试的代码状态。但这是你问题中固有的,所以如果它真的是你想做的事情:

我的建议是创建一个新的分支和rebase(保留所有现有的分支)。新分支将代表针对此推动量身定制的替代历史。

git checkout aaaa
git checkout -b staging_branch
git rebase --interactive gggg^

您将获得一个带有rebase待办事项列表的编辑器。删除除您之外的提交行。如果你想要你也可以压制你保留的提交(而不是挑选所有提交),但它并不重要。

从那里你可以将staging_branch推送到您的登台服务器,或者如果您真的想要补丁,可以使用git diff(或者,如果您压缩了提交,git show)以获取它