首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在git中向后移动分支?

如何在git中向后移动分支?
EN

Stack Overflow用户
提问于 2010-05-28 00:44:04
回答 4查看 32.9K关注 0票数 51

标题不是很清楚。我实际需要经常做的事情如下:

假设我有一个正在进行的开发,有几个提交c1,c2,...和3个分支A、B、C

代码语言:javascript
代码运行次数:0
运行
复制
c1--c2--c3--(B)--c4--(A,C)

分支A和分支C处于同一提交。

现在我想让分支A回到B所在的位置,这样看起来就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
c1--c2--c3--(A,B)--c4--(C)

重要的是,这必须在本地和GitHub上进行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-28 00:56:33

使用reset子命令:

代码语言:javascript
代码运行次数:0
运行
复制
git checkout A
git reset --hard B
git push --force github

顺便说一句,当分支已经被推送到其他地方时,在使用git reset时应该小心。这可能会给那些已经签出您的更改的人带来麻烦。

票数 73
EN

Stack Overflow用户

发布于 2010-05-28 00:58:02

如果在分支A上没有提交,那么git reset --hard B solution given by Bram Schoenmakers将会工作。

然而,如果有必须保留的分支A的提交,那么下面的代码应该可以解决这个问题:

  1. 为您的存储库创建备份副本(仅在case)
  2. git checkout A
  3. git rebase -i --onto B SHA1-A^

分支SHA1-A^是分支A的父级的提交id

有关详细信息,请参阅git rebase man page

注意:这将重写历史(就像rebase总是做的那样)。如果您的A分支曾经被推送到公共回购,则应特别考虑。

票数 25
EN

Stack Overflow用户

发布于 2016-01-03 04:14:15

我通常使用这个序列,并找到最简单的方法:

代码语言:javascript
代码运行次数:0
运行
复制
git checkout B
git branch -f A B
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2923055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档