如何在分支的 git 中将 2 次提交合并为 1 次提交?
How can I combine 2 commits into 1 in git in a branch?
我在 "Feature" 分公司工作。
所以我的 git 树是:
master
A<--B<--C<--D<--F<--G
|<--E
Feature
我想在 Feature 分支上工作时获取 master 的所有最新信息,所以我做了:
git checkout Feature
git rebase master
在变基过程中,我在一个文件中遇到了合并冲突,在手动解决冲突过程中,我犯了一个错误,后来我才意识到 运行 git rebase --continue
所以我最终得到了一棵树:
master
A<--B<--C<--D<--F<--G<--E
Feature
然后我意识到我的错误实际上破坏了 E 中的构建。
我纠正了我的错误(尚未提交)并继续我的工作,但我不想在 Feature 中有 2 次提交最终会出现在 master 中,而其中一次提交是错误的提交。
另外,我想在我的 Feature 工作的 master 分支中完成一次提交。
所以如果我有:
master
A<--B<--C<--D<--F<--G<--E<--H
Feature
如何将 E 和 H 合并为一个提交,这样当我这样做时:
git checkout master
git rebase feature
我的主人只有 1 次提交?
注意:分支功能是本地的,如果重要则不会推送。
您可以使用交互式变基来组合两个提交。您需要在第二个上使用 squash
选项。
开始于:
git rebase -i HEAD~2
在编辑器中,您将按以下顺序看到 2 行:
pick E's SHA-1
pick H's SHA-1
替换为
pick E's SHA-1
squash H's SHA-1
然后关闭编辑器。
Git会选择E,然后组合H。
系统将提示您输入新的合并提交消息。完成后关闭该编辑器,rebase 将自行完成。
我在 "Feature" 分公司工作。
所以我的 git 树是:
master
A<--B<--C<--D<--F<--G
|<--E
Feature
我想在 Feature 分支上工作时获取 master 的所有最新信息,所以我做了:
git checkout Feature
git rebase master
在变基过程中,我在一个文件中遇到了合并冲突,在手动解决冲突过程中,我犯了一个错误,后来我才意识到 运行 git rebase --continue
所以我最终得到了一棵树:
master
A<--B<--C<--D<--F<--G<--E
Feature
然后我意识到我的错误实际上破坏了 E 中的构建。
我纠正了我的错误(尚未提交)并继续我的工作,但我不想在 Feature 中有 2 次提交最终会出现在 master 中,而其中一次提交是错误的提交。
另外,我想在我的 Feature 工作的 master 分支中完成一次提交。
所以如果我有:
master
A<--B<--C<--D<--F<--G<--E<--H
Feature
如何将 E 和 H 合并为一个提交,这样当我这样做时:
git checkout master
git rebase feature
我的主人只有 1 次提交? 注意:分支功能是本地的,如果重要则不会推送。
您可以使用交互式变基来组合两个提交。您需要在第二个上使用 squash
选项。
开始于:
git rebase -i HEAD~2
在编辑器中,您将按以下顺序看到 2 行:
pick E's SHA-1
pick H's SHA-1
替换为
pick E's SHA-1
squash H's SHA-1
然后关闭编辑器。 Git会选择E,然后组合H。
系统将提示您输入新的合并提交消息。完成后关闭该编辑器,rebase 将自行完成。