版本控制- Git错过了扩展分支开发的rebase



几个月前,我在一个项目中从主开发分支中分离出来。我一直在自己的实验分支上工作,但不断地从master中提取更改以保持最新。每次这样做时,我都使用这个命令集

git checkout master
git pull
git checkout experiment
git merge master

今天我去合并我的实验分支回master。我只是确保我与master保持一致,并调用

git checkout master
git merge experiment

当我在GitX中查看主分支时,它显示了一个单独的开发行,看起来每次我从主分支中拉出来以保持自己的最新状态。这是因为我应该在修改master的时候重新定位吗?

有没有人有一个像样的解决方案来解决这个问题?我想我可以把实验移到master上?但实验是一个分支,我想把它作为历史上一个明显的独立分支。有没有办法让我回去重新设置旧的有问题的合并?你可能也看得出来,我是新来的。

谢谢!

没错。

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

原始历史:

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 <-/

这就是为什么你会看到那些"separate lines"

在rebase的情况下,是这样的:

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

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

你重新base(这意味着GIT再次应用你的更改X, Y)

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

(放弃X和Y版本)

我相信这是你喜欢看到的

最新更新