几个月前,我在一个项目中从主开发分支中分离出来。我一直在自己的实验分支上工作,但不断地从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版本)
我相信这是你喜欢看到的