git + github自动合并提交+拉取请求

时间:2016-04-27 14:59:16

标签: git github version-control pull-request

我通过vanilla接口将回购github分配到vanilla_copy, 之后我做:git clone vanilla_copy,过了一段时间我做了 git pull并获得一个新的提交feature A,我的历史现在看起来像

Merge remote-tracking branch 'upstream/master'
feature A
在我做出自己的事后,它变成了:

feature created by me
Merge remote-tracking branch 'upstream/master'
feature A

现在我要创建pull requestvanilla

  1. 我的提交feature created by me是否正常 vanilla repo中不存在的内容

  2. 我应该如何使用git来创建此auto merge commit,使用git pull --rebase或通过vanilla/master追踪vanilla_copy/upstream并使用git rebase branch或其他一些机制?

  3. 我应该如何删除此现有的合并提交?我应该通过git rebase -i然后git push -f删除提交,如下所述:Delete Github commit history

1 个答案:

答案 0 :(得分:1)

为了保持git repos易于导航,我在提交拉取请求之前将我的提交压缩到几个或一个谨慎的变更集。修复错误通常只需要一次提交,而较大的功能可能包含几个单独的改进,通过不同的提交更容易跟踪。

一旦您在上游主服务器的最新状态之上重新设置了工作,您可能会有几个与您正在处理的问题相关的提交。一切都完成后,将它们压缩成一个带有描述性消息的提交,例如"问题#100:一些错误修正。"

要将四个提交压缩为一个,请执行以下操作:

$ git rebase -i HEAD~4

在出现的文本编辑器中,替换“" pick"用"壁球"在提交之前,你想要压缩它之前的提交。保存并关闭编辑器,git会将" squash" ed提交与之前的提交相结合。然后,Git会让您有机会将提交消息更改为"问题#100:修复了一些错误。"

重要:如果您已经将提交推送到GitHub,然后在本地压缩它们,则必须强行推送到您的分支机构。

$ git push origin branch-name --force

有用的提示:在推送之前,您始终可以使用以下命令编辑上次提交消息:

$ git commit --amend

另见:

Conductor