Git:如何将一个遥控器改成另一个遥控器

时间:2014-04-30 23:54:37

标签: git rebase

我有两个远程git分支(称为" RemoteA"和#34; RemoteB")。

" RemoteB"分散于" RemoteA"过去的某个时候。在那之后,许多提交已经应用于两个分支,但我现在想要" RemoteB"拿起" RemoteA"中的所有提交。

A-B-C-D-E  (RemoteA)
 \
  F-G-H-I  (RemoteB)

我的一个想法就是试图改变" RemoteB"基于" RemoteA"中的最新标签,但我看到一些社区帖子提出反对意见。这是可能的(任何样本命令都会被欣赏),如果是这样,我甚至应该尝试?

A-B-C-D-E  (RemoteA)
         \
          F-G-H-I  (RemoteB)

另一个想法是从" RemoteA"创建一个新分支,称之为" RemoteC"并手动挑选来自" RemoteB"在它上面。这类情况的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

由于这些是远程分支(假设你不是孤立地工作),将一个变为另一个是一个非常糟糕的主意。

这是因为将“B”重新定位到“A”将重新创建“B”的整个历史记录。将要检索远程“B”的任何其他人现在必须处理(通常这意味着他们看到相互矛盾的变化)。你将为你的合作者带来悲惨的生活。

要从“A”中获取更改并将其合并到“B”中,请检查本地版本的“B”,并将“A”合并到其中。然后将更新的“B”推送到远程存储库。

作为一般规则:不要重新绑定已存在于远程存储库中的分支,除非您是唯一使用该远程数据库的人。

答案 1 :(得分:0)

  

针对此类情况的最佳做法是什么?

这主要取决于是否有其他人已经看过两个分支机构的提交。

  • 如果一个分支 - 比如RemoteB - 在您的本地计算机上并且从未被推送到公共存储库,您可以安全地在另一个分支上重新绑定它:

    git checkout RemoteB
    git rebase RemoteA
    
  • 否则,通常的方法是将一个分支合并到另一个分支:

    git checkout RemoteB
    git merge RemoteA