如何使用git从另一个分支获取新的更改



一周前,我将分支B合并到我的分支C,并对我的分支C进行了一些更新。

与此同时,我的同事更新了他的分支B

我想让他更新我的分支C

我真的很困惑,因为他告诉我只在他的分支上重新基本,但这会让删除我所有的新更新/添加的文件。

我再次尝试合并这两个分支,但不知何故这次我没有得到他的更新

我们的项目看起来有点像:

Origin---o---o---o---o---o---      main

o---o---o---o---o---o---o---o---o B
               (merged)       (rebase here?)
o---o---o---o---o---o---o---o---o C

回扣很复杂,在这种情况下可能是个坏主意。让我们采用您的拓扑结构:

o---o---o---o---C1---o---o---o---o friend
               
o---o---o---o---M---o---o---o me

要获取朋友的更改,正确而简单的做法是(在me上(:

git merge friend

这将给出:

o---o---o---o---C1---o---o---o---o friend
                               
o---o---o---o---M---o---o---o---M2 me

尽管你的朋友说了什么,但你现在无法连贯地重新设置基准,因为me已经包含了来自friend的合并提交(M(。回扣不容易应付;它将忽略合并提交,因此合并的效果将在分支中撤消。有很多方法可以解决这个问题,但不值得在这里深入探讨。

然而,现在的关键问题是,如何摆脱糟糕的重组和糟糕的合并所带来的混乱。答案是使用reflog,这使得你在Git中所做的很多事情都是不可撤销的。当你说git reflog时,你会看到一个列表,上面列出了你的HEAD之前的所有状态。其中之一将是在您开始重新基准之前的状态。你想通过说git reset --hard <SHA>(正如我在这里解释的那样(回到这一点。现在做你应该做的合并,然后继续前进

最新更新