标题不是很清楚.我实际需要经常做的是:
假设我有一个开发正在进行几个提交c1,c2,...和3个分支A,B,C
c1--c2--c3--(B)--c4--(A,C)
分支A和C处于同一提交.
现在我希望分支A回到B所在的位置,这样它就像这样:
c1--c2--c3--(A,B)--c4--(C)
重要的是,这必须在本地和github上进行.
使用reset子命令:
git checkout A git reset --hard B git push --force github
作为旁注,当git reset
分支已被推到别处时,你应该小心使用.这可能会给那些已经检查过更改的人带来麻烦.
如果分支上没有提交A
,那么git reset --hard B
Bram Schoenmakers给出的解决方案将起作用.
但是如果有提交是A
必须保留的分支,那么以下应该做的诀窍:
制作您的仓库的备份副本(以防万一)
git checkout A
git rebase -i --onto B SHA1-A^
... SHA1-A^
分支的父级的提交ID 在哪里A
有关详细信息,请参见git rebase
手册页.
注意:这将重写历史记录(因为rebase总是如此).如果您的A
分支机构被推到公共场所,应该特别考虑.
我通常使用此序列并找到最简单的方法:
git checkout B git branch -f A B