将提交从一个分支移动到另一个分支
Posted
技术标签:
【中文标题】将提交从一个分支移动到另一个分支【英文标题】:Moving commits from one branch to another 【发布时间】:2011-05-06 11:33:55 【问题描述】:我已经在我的 git 存储库的 master 分支上提交了一堆更改,并将其推送到上游(尽管我是唯一一个解决这些问题的人。)我想要做的是提取最后几个提交关闭,将 master 回滚到拉出提交之前,将提交重新应用到开发分支,然后合并回 master。
这是我的存储库现在的样子:
a [master] [remotes/origin/master]
|
b
|
c
|
d (merge branch 'develop')
|\
| \
| e [develop] [remotes/origin/develop]
| |
q f
| |
r g
这就是我想要的样子:
Z [master] [remotes/origin/master]
|\
| \
| A
| |
| B
| |
d C
|\ |
| \|
| e [develop] [remotes/origin/develop]
| |
q f
| |
r g
我能得到一些帮助吗?我认为这是一个 rebase 的工作,但我不太确定如何实现它。
【问题讨论】:
您的图表让我有些困惑 - 将来,您可能希望按时间顺序而不是倒序标记您的提交。 【参考方案1】:你在这里:
# move cba onto e
git branch foo
git rebase --onto <SHA1-e> <SHA1-d> foo
# rewind master to d
git checkout master
git reset --hard <SHA1-d>
# merge
git merge foo
您可能想要选择一个比 foo 更具描述性的分支名称,因为它将记录在 Z 的合并提交消息中。
【讨论】:
谢谢,这正是我所需要的。我已经到了那里,但重置是我所缺少的。以上是关于将提交从一个分支移动到另一个分支的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Git / IntelliJ 将整个文件从一个分支移动/复制到另一个分支? [复制]
如何将一个git的master分支提交添加到另一个git中?