Git - 使用当前更改但不是先前提交的请求

时间:2015-09-09 16:09:22

标签: git github git-pull pull-request

我从原点创建了一个分支,并在该分支上进行了更改。我做了几次提交,向朋友展示我在做什么,但是当我提出拉取请求时,我不希望这些提交显示在原点上。

我怎样才能这样做,因此只有一个提交会出现在pull请求中。

我正在考虑做的是创建另一个分支,并将我之前的分支重置为头......但我真的不知道该怎么做。

提前致谢!

2 个答案:

答案 0 :(得分:1)

您要做的是 压缩 分支上的提交。

这可以通过(在您要修改的新分支中)键入以下内容:

$ git rebase -i <your_starting_commit_SHA>

然后您将能够picksquash提交(或重新提交提交,以便在压缩后匹配更合适的提交消息)。

当您执行此交互式rebase时,您将面临以下情况:

pick <commit1_SHA> <commit1_message>
pick <commit2_SHA> <commit2_message>
pick <commit3_SHA> <commit3_message>
pick <commit4_SHA> <commit4_message>
# ... so on and so forth

如果您想将所有提交压缩到原始提交中,那么您将为第一次提交保留pick,然后将剩余的pick更改为squash。然后,Git会将commit2commit3commit4压缩到commit1,从而在拉取请求之前为您提供 clean 提交历史记录。

这里的最终结果将是带有重写提交消息的提交,而不是原来的四次提交(当然用于说明目的)。

答案 1 :(得分:0)

以下是我要做的事情:

假设你的克隆分支从原点被称为A.我会将原点再次克隆到一个名为B的新分支中。然后我将A分支合并到B分支中,使用--squash标志(在分支B上) :git merge --squash A),所以你在分支A中的所有提交都将作为一个进入分支B.然后,您可以从B分支发出拉取请求