如何将主从git提交到不同的现有分支
这个问题在这里已经有了答案:
如果我没有弄错,在你提交之前,你有两个同步分支, master
和dev
,并且只是忘了切换分支。
如果是这样的话,我们有:
----------------
git log in dev
xxx
yyy
...
----------------
和:
----------------
git log in master
ccc
bbb
aaa
<---- here you forgot to switch branch
xxx
yyy
...
----------------
解决方案是:
首先,确保:
git status -s
返回空结果。
接下来,从master
到dev
获取所有新的提交:
git checkout dev
git merge master
现在回到你的master
:
git checkout master
删除不必要的提交:
git reset --hard HEAD~3
数字~3
是要删除的提交数量。
记住: git status -s
必须返回空结果。 否则, git reset --hard
会导致数据丢失。
为了应对另一个分支,你可以使用樱桃采摘:
git cherry-pick <commit>
删除并不那么容易。 你可以使用rebase和squash或者编辑commit:
git rebase -i <commit>~1
但是我不确定何时在重新绑定期间选择编辑,如果您也可以编辑文件而不是仅仅提交消息。
你可以cherry-pick
你的提交过来的develop
和交互之后rebase
你的master
分支:
git checkout develop
git cherry-pick aabbcc
git cherry-pick ddeeff
git checkout master
git rebase 123456 -i
在你犯错之前123456
是一个提交。 这将打开一个编辑器,显示每个将受到rebase影响的提交。 删除与要放弃的提交相对应的行并退出编辑器。
上一篇: How to move git commits from master to a different existing branch
下一篇: What's the difference between "git reset" and "git checkout"?