15

我有 2 个分支,一个是主分支,一个是实验分支。如图所示:

master-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-Y
                  \
                   -x-x-x-x

我的实验已经过时了,我希望通过简单地将主分支(Y)中的最后一次提交复制到实验来更新它:

master-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-Y
                  \
                   -x-x-x-x-Y

如果可能的话,我不想做任何合并我想覆盖实验中的任何东西(主人是我的主要优先事项)。

编辑: 让我简单解释一下情况:当我尝试在主分支和实验分支的提示合并提交时,我遇到了很多合并冲突!如果我尝试从实验中挑选出主人,也会发生同样的情况!我希望避免使用它们,因为我根本不希望对实验进行任何更改!到目前为止,我一直在从 master 到 Experiment 进行挑选,当出现合并冲突时,我只保留 master 分支的更改。但是在做了很多次之后,我希望可能有某种方式可以让我做一些类似于合并的事情,除了 where (我没有提示任何合并冲突,因为我只需要主更改(据我所知它不会不管以前在实验分支上是什么!

4

2 回答 2

23

选择 从on提交:_Ymasterexperimental

git checkout experimental
git cherry-pick Y

或者:

git checkout experimental
git cherry-pick master

...将在master分支顶端应用由提交引入的更改,并experimental使用此更改创建一个新的提交。

于 2013-09-12T19:11:27.680 回答
3

这是我最初尝试的!:

git checkout experimental
git rebase --onto <COMMIT ID OF LAST MASTER COMMIT> experimental

在尝试这段代码的过程中,我发现不仅master端的commit,整个experimental分支都变成了master的clone!是的,这不是一个优雅的解决方案,也是对 git 的错误使用!

但是,正如@Johnsyweb 所指出的,最佳解决方案是合并实验性和大师,但是,

Git 更喜欢在 master 上进行更改而不是在实验上进行更改

因此做一个:

git checkout experimental
git merge -Xtheirs master

应该可以正常工作。虽然它说的是合并,但由于它只考虑了实验分支相对于主分支的变化,所以它更像是从实验分支到主分支的副本,用于所有实际目的。(在此处
查看类似的讨论)

于 2013-09-13T17:42:21.037 回答