【发布时间】:2015-12-05 17:06:45
【问题描述】:
我从原点创建了一个分支,并对该分支进行了更改。我做了几个提交来向朋友展示我在做什么,但我不希望这些提交在我提出拉取请求时显示在源上。
我怎样才能做到只有一个提交将显示在拉取请求中。
我想做的是创建另一个分支,并将我以前的分支重置为 head.... 但我真的不知道该怎么做。
提前致谢!
【问题讨论】:
标签: git github git-pull pull-request
我从原点创建了一个分支,并对该分支进行了更改。我做了几个提交来向朋友展示我在做什么,但我不希望这些提交在我提出拉取请求时显示在源上。
我怎样才能做到只有一个提交将显示在拉取请求中。
我想做的是创建另一个分支,并将我以前的分支重置为 head.... 但我真的不知道该怎么做。
提前致谢!
【问题讨论】:
标签: git github git-pull pull-request
您要做的是压缩分支上的提交。
这可以通过(在您要修改的新分支中)键入以下内容来完成:
$ git rebase -i <your_starting_commit_SHA>
然后您将能够pick 或squash 提交(或改写提交,以便在压缩后匹配更合适的提交消息)。
当您执行此交互式 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,然后将剩余的picks 更改为squash。然后,Git 会将 commit2、commit3 和 commit4 压缩为 commit1,从而在您的拉取请求之前为您提供 clean 提交历史记录。
这里的最终结果将是 single 提交,其中包含您改写的提交消息,而不是原来的四个提交(当然,用于说明目的)。
【讨论】:
我会这样做:
假设您从原点克隆的分支称为 A。我将再次将原点克隆到一个名为 B 的新分支中。然后我将使用 --squash 标志将 A 分支合并到 B 分支(在分支 B : git merge --squash A),因此您在分支 A 中的所有提交都将作为一个提交到分支 B。然后你可以从你的 B 分支发出拉取请求
【讨论】: