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