Git - 包含当前更改但不包含先前提交的拉取请求

Git - Pull request with current changes but not previous commits

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

我怎样才能使拉取请求中只显示一个提交。

我想做的是创建另一个分支,并将我以前的分支重置为 head...。但我真的不知道该怎么做。

提前致谢!

这是我会做的:

假设您从原点克隆的分支称为 A。我会再次将原点克隆到一个名为 B 的新分支。然后我会使用 --squash 标志(同时打开)将 A 分支合并到 B 分支branch B: git merge --squash A), 所以你在 Branch A 中的所有提交都将作为一个提交到 Branch B。然后你可以从你的 B 分支发出一个 pull request

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

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

$ git rebase -i <your_starting_commit_SHA>

然后您将能够 picksquash 提交(或改写提交,使其在压缩后匹配更合适的提交消息)。

当你做这个交互式变基时,你会遇到以下问题:

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 提交历史记录在你的请求请求之前。

此处的最终结果将是 单次 提交,其中包含您改写的提交消息,而不是最初的四次提交(当然用于说明目的)。