【问题标题】:How to git rebase a topic branch from a different topic branch?如何从不同的主题分支git rebase一个主题分支?
【发布时间】:2023-02-07 03:28:33
【问题描述】:

我正在寻找一系列 git 命令来获取尝试做类似于我的更改的更改,但不是来自 master/main,而是来自 repo 分支的另一个贡献者。

如果从 master 变基,我通常会使用以下内容:

git checkout TopicA
git rebase master
git push origin TopicA
git push --set-upstream origin TopicA

回购的设置目前是:

                F"---G"---H" TopicB
                |
A---B---C---D---E  master
                |
                F'---G'---H'   TopicA
                                

我需要将 TopicA 的 o' 更改替换为 TopicB 的 o" 更改。

预计到达时间:所以所需的布局是:

               F"---G"---H" TopicB
               |
A---B---C---D--E  master
               |
               F"---G"---H"  TopicA
                               

我的直觉是在我的序列中用“TopicB”替换“master”,但这不是我从 rebase 文档中得到的印象。

我的另一个想法是创建一个从 TopicB 分支出来的新分支 (TopicC),然后删除 TopicA,然后将 TopicC 重命名为 TopicA。

我不喜欢后一种方法,因为我需要将 TopicA 中的一些更改适应 TopicB 中存在的更改。

到目前为止,我已经通读了 git-rebase(1) 手册页,对此感到有些困惑和困惑,并且不想尝试太多可能会损坏存储库或我的 TopicA 分支或TopicB 分支。

我想知道是否

git rebase--onto TopicB 

将是我所需要的,尤其是在查看Merging changes from a branch based off a topic branch to a different topic branch in git 之后,尽管我有点不清楚那个案例和我的案例是否相同。

另一个建议的问题:Git rebase to a different branch while excluding a certain branch 似乎没有帮助。

我正在使用 Git Bash 来处理我的 git 命令。我也可以使用 TortoiseGit,但 Git Bash 是我的首选工具。

【问题讨论】:

  • 您可以为想要的结果添加另一个图表吗?
  • 当然,我会编辑添加它。
  • 我不明白。根据您的第二张图,主题 a 和主题 b 是完全相同的分支。那是你要的吗???
  • (你能不能停止对所有东西都使用“o”?不同的提交在图中有不同的字母,拜托。)
  • 然后就进入主题a并创建主题b。 (或者可能是相反的方式,我对图中所有内容都相同的方式感到困惑。)完成。有什么问题?

标签: git git-bash tortoisegit


【解决方案1】:

如果你希望主题 A 至少在此刻与主题 B 完全相同,那么制作他们同样的承诺。假设 topicA 已经存在:

git switch topicA
git reset --hard topicB

这将删除所有已经在主题 A 上的提交,并在主题 B 现在所在的位置重新开始主题 A。

【讨论】:

  • 请记住,几乎所有事情都是不可挽回的。所以不要害怕。
  • 我总是使用checkout, checkout -B,但这似乎更好。例如,它可能不会删除记录的上游跟踪器。
猜你喜欢
  • 2016-03-25
  • 2021-06-28
  • 2021-08-20
  • 1970-01-01
  • 2014-09-19
  • 2022-11-25
  • 1970-01-01
  • 2015-10-31
  • 2017-02-21
相关资源
最近更新 更多