如何将多个提交压缩到另一个分支?
How to squash several commits to another branch?
我将在分支 dev
中开发我的应用程序,并在分支 public
.
上提供“迄今为止最好的”(在 GitHub 上发布)
分支 dev
将有提交 c964dea
、06cf8ee
、396b4a3
和 9be7fdb
。 我想将它们压缩成分支 public
上的单个提交(将它们原样保留在分支 dev
上)。
这可能吗?
我看到很多关于压缩提交的问题和答案,但是 none 似乎解决了“压缩到另一个分支”的问题。
创建并切换到 dev
的新分支。
git switch -c <new-branch>
此时它与 dev
相同,但现在您可以在不更改 dev
的情况下压缩提交。开始交互式变基。
git rebase -i <first-commit>
然后将所有提交设置为压缩。
您可能希望首先挑选单个提交,如果它们不是 运行 的顺序:
git cherry-pick <commitSHA>
您的功能分支上将有一系列精心挑选的提交。
之后你想从你精心挑选的所有提交中对你的分支进行交互式变基。
git rebase -i HEAD~<n+1>
其中 n 将是精心挑选的提交数。
用 s 标记除最后一个以外的所有提交。
s, squash = 使用提交,但合并到之前的提交中
如果您要挑选的所有提交都是按顺序进行的,那么就更容易了:
git cherry-pick A^..B
其中 A 和 B 是要挑选的第一个和最后一个提交。之后重新调整它们。
我将在分支 dev
中开发我的应用程序,并在分支 public
.
分支 dev
将有提交 c964dea
、06cf8ee
、396b4a3
和 9be7fdb
。 我想将它们压缩成分支 public
上的单个提交(将它们原样保留在分支 dev
上)。
这可能吗?
我看到很多关于压缩提交的问题和答案,但是 none 似乎解决了“压缩到另一个分支”的问题。
创建并切换到 dev
的新分支。
git switch -c <new-branch>
此时它与 dev
相同,但现在您可以在不更改 dev
的情况下压缩提交。开始交互式变基。
git rebase -i <first-commit>
然后将所有提交设置为压缩。
您可能希望首先挑选单个提交,如果它们不是 运行 的顺序:
git cherry-pick <commitSHA>
您的功能分支上将有一系列精心挑选的提交。 之后你想从你精心挑选的所有提交中对你的分支进行交互式变基。
git rebase -i HEAD~<n+1>
其中 n 将是精心挑选的提交数。 用 s 标记除最后一个以外的所有提交。 s, squash = 使用提交,但合并到之前的提交中
如果您要挑选的所有提交都是按顺序进行的,那么就更容易了:
git cherry-pick A^..B
其中 A 和 B 是要挑选的第一个和最后一个提交。之后重新调整它们。