首页 > 解决方案 > 使用 git rebase 将提交移动到新分支

问题描述

我在 Git 中的分支上苦苦挣扎,未能正确地将它们归因于提交。最新的两个提交最终在不同的分支中(一个在 master 中,一个在 pm/gitrev 中) - 但需要它们都在同一个功能分支中彼此之上(例如,新的东西,如 pm/git-version)我可以推送到远程存储库“pm”,这样我就可以在 GitHub 上为 origin/master 创建一个适当的拉取请求。

我目前的历史完全是线性的,看起来像:

$ git log --graph --pretty=format:"%h %d %s %n" -4
* 02f82ee  (HEAD -> git-version, pm/gitrev) Fail gracefully when operating on detached head 
| 
* 998d969  (pm/master, master) Change: Adopt the versioning scheme now with git 
| 
* c95db24  (origin/master, origin/HEAD) Added tag 0.4.5 for changeset e115586dd0a0 
| 
* 3418735  (tag: 0.4.5) Update: Changelog for release 

我创建了一个基于 998d969(主)的新分支,并将其他两个重新基于它,例如通过git rebase -b master git-version. 然而我的历史是线性的,但提交并没有像假设的那样改变他们的分支。

我想念git rebase什么?如何根据 origin/master 从最顶部的提交中删除所有分支信息并将它们移动到他们的联合但新分支?

我可以重写远程 repo 'pm' 的历史记录。

标签: git

解决方案


要将提交移动到其他分支,您可以使用以下命令git cherry-pick

git cherry-pick <commit-hash>

您可以在原始提交分支的日志中获取提交哈希:

git log

推荐阅读