Git错过了延长分支机构发展的基础?

时间:2011-07-13 02:29:13

标签: git version-control merge rebase

几个月前,我在一个正在研究的项目中分支了主开发分支。我一直在自己的实验分支工作,但不断从主人那里获取变化以保持最新状态。每次我这样做,我都使用了这个命令集

git checkout master
git pull
git checkout experiment
git merge master

今天我把我的实验分支合并成了主人。我只是确保我与主人约会,并打电话给

git checkout master
git merge experiment

当我在主分支机构中查看GitX时,它显示了一个独立的开发线,我每次都从主人那里看起来像是为了让自己保持最新状态。这是因为当我撤消更改时,我应该一直在改变主人吗?

有没有人有一个像样的解决方案来解决这个问题?我想我可以将实验改为主人吗?但是实验是相当分支的,我想把它作为历史上一个明显的独立分支。有没有办法让我回去重新定义旧的有问题的合并? 你可能会说,我对git很新。

谢谢!

1 个答案:

答案 0 :(得分:1)

完全。

当你执行合并时,你实际上有一个提交有2个父母,发生的事情是这样的:

原始历史:

A <- B <- C
你改变了什么(X和Y)

A <- B <- C <- X <- Y 

你从被跟踪的存储库中取出(假设有人添加了D和E)

A <- B <- C <- D <- E
           ^
            \- X <- Y

然后你合并了:

A <- B <- C <- D <- E <- M
           ^             /
            \- X <- Y <-/

这就是为什么你会看到那些“单独的行”

如果是rebase,它是这样的:

你从被跟踪的存储库中取出(假设有人添加了D和E)

A <- B <- C <- D <- E
           ^
            \- X <- Y

你变基(这意味着GIT再次应用你的变化X,Y)

A <- B <- C <- D <- E <- X' <- Y'

(修订版X和Y被放弃)

我相信你喜欢看