如何在Git中更改基础分支?

10

问题描述如下图所示,文本中出现了一些错误。

在此输入图片描述

在此输入图片描述


2
解答SO上的支持问题。这对我来说是新的。 - Michael
如果你在child1和child2中没有做任何工作,删除它们并重新创建,就像你原本打算的那样。如果已经完成了工作,请从child1和child2创建临时(备份)分支,然后删除它们,并按照你的意图重新创建,并从临时(备份)分支中挑选需要的内容。 - Foolish
答案在这里 - https://dev59.com/FWgv5IYBdhLWcg3wF89P#10853956 - Sushant Gosavi
1个回答

12

我不知道为什么你的问题会被投票贬低,因为它是合理的,对于使用Git时初学者经常犯的错误来说非常常见。

你意外地从分支 BR-01 创建了分支 BR-02。一个解决方案是使用正确的基础创建分支,然后将你在 BR-02上所做的任何提交挑选到这个正确的分支上。

git checkout BS-00      # switch to the correct branch
git checkout -b BR-03   # create the correct branch using BS-00 as a base
git cherry-pick <SHA-1> # cherry-pick the commit from BR-02

这里的<SHA-1>是您希望保留的分支BR-02上提交的哈希值。 您可以通过切换到BR-02并从终端键入git log来找到此值。

请注意,这实际上是将您在BR-02分支上进行的提交合并到BR-03分支中,因此可能会存在冲突。 最后,您可以删除不需要的BR-02分支:

git branch -d BR-02     # delete the wrong branch BR-02 locally
git push origin :BR-02  # delete the wrong branch BR-02 on the remote

我在这个分支上提交了一个文件,并使用git push origin命令将其推送到该分支。 @Tim Biegeleisen,您能否详细说明一下这个情况。 - Shail_42
我更新了我的回答。你需要创建一个正确的分支,然后将你做出的好提交(cherry-pick)到BR-02分支上。 - Tim Biegeleisen
我不应该删除任何已创建的分支,有没有将它变基到BS-00的选项?我的意思是在这种情况下如何进行变基? - Shail_42
对于你来说,关于rebase有各种各样的问题。首先,你需要执行交互式rebase以删除任何你不想要的存在于BR-00上但不存在的提交。 其次,你将重写历史记录,这意味着在rebase之后拉取该分支的任何其他人可能会遇到问题。我建议创建一个新分支并挑选你想要的提交,尽管其他人可能不同意我的看法。 - Tim Biegeleisen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接