2012-03-05 56 views
1

这是一个复杂的情况,但基本上这里发生的是我们的分支已经与主人分离了。所以基本上:如何重新连接与主人分离的Git分支? (并复制父母?)

A - B - C   master 
    \ 
     X - Y - Z feature 

已变成:

A - B - C   master 

(A) - (B) - X - Y - Z feature 

的SHA值是用于A /(A)和B /(B)是相同的。这正是它在GitK中的表现。在这一点上,我只是试图基本上将它恢复到与以前相同的顺序。不幸的是,由于SHA似乎是相同的,我不知道如何操作X来分支出B而不是(B)。我真的不知道从哪里开始尝试这种恢复。如何在提交B时重新连接两个分支?

请注意,我已经看到this question,但它似乎是一个稍微不同的问题,因为B和(B)的sha-1是相同的,因为它没有被改变。

+0

什么'git merge-base 'return? – tjdett 2012-03-05 04:45:12

+1

出于好奇,你知道这究竟是怎么发生的吗? – 2012-03-05 05:09:35

+1

如果(B)和B的sha-1相同,那么这是不是表示它实际上是连接的? – bdonlan 2012-03-05 05:12:14

回答

5

如果您确定A /(A)和B /(B)是相同的SHA散列,那么我不会看到问题是什么,因为X的父代是B ===(B)根据你的图。

这是全部在本地存储库吗?是否有任何远程裸仓库参与?

尝试从运行以下以显示图形,并把它放在你的问题:

git log --graph --oneline --all 

我复制你的设置简单的推动,并承诺和该命令给出了(从功能分支):

* 86bf1b1 added Y on feature 
* a690031 added X on feature 
| * a7347fe added C on master 
|/ 
* d02c518 added B 
* 7d81e39 added A 

如果SHA提交符合您的建议,您应该看到相同的行为。如果不是,请在您遇到的有问题的隔离区域发布更新。

+0

一致认为,如果sha1相同,则意味着它们是相同的,唯一的选择是我认为远程跟踪可能会被破坏,并且(A)和(B)自此以后没有提交过,但在本地分支出去。 – 2012-03-05 11:43:08

+0

使用git log --graph --oneline --all DOES似乎显示正确的树。我不确定为什么我认为它昨天不同。也许有一个合并,导致树木加入,这是重新启动。感谢您的帮助。 – 2012-03-05 13:06:48