标题不是很清楚。我实际需要经常做的事情如下:
假设我有一个正在进行的开发,有几个提交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上进行。
发布于 2010-05-27 16:56:33
使用reset子命令:
git checkout A
git reset --hard B
git push --force github
顺便说一句,当分支已经被推送到其他地方时,在使用git reset
时应该小心。这可能会给那些已经签出您的更改的人带来麻烦。
发布于 2010-05-27 16:58:02
如果在分支A
上没有提交,那么git reset --hard B
solution given by Bram Schoenmakers将会工作。
然而,如果有必须保留的分支A
的提交,那么下面的代码应该可以解决这个问题:
git checkout A
git rebase -i --onto B SHA1-A^
中
分支SHA1-A^
是分支A
的父级的提交id
有关详细信息,请参阅git rebase
man page。
注意:这将重写历史(就像rebase总是做的那样)。如果您的A
分支曾经被推送到公共回购,则应特别考虑。
发布于 2016-01-02 20:14:15
我通常使用这个序列,并找到最简单的方法:
git checkout B
git branch -f A B
https://stackoverflow.com/questions/2923055
复制