Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自上次合并操作以来的Git重基 让我们考虑一下我在一个分支上的一个特殊特性: * 456789 bar (origin/master, origin/HEAD, master) | * 3456789 foo (HEAD -> feature) | * 2345678 Merge origin/master in feature | |\ | |/ |/| * | 1234567_Git_Merge_Rebase - Fatal编程技术网

自上次合并操作以来的Git重基 让我们考虑一下我在一个分支上的一个特殊特性: * 456789 bar (origin/master, origin/HEAD, master) | * 3456789 foo (HEAD -> feature) | * 2345678 Merge origin/master in feature | |\ | |/ |/| * | 1234567

自上次合并操作以来的Git重基 让我们考虑一下我在一个分支上的一个特殊特性: * 456789 bar (origin/master, origin/HEAD, master) | * 3456789 foo (HEAD -> feature) | * 2345678 Merge origin/master in feature | |\ | |/ |/| * | 1234567,git,merge,rebase,Git,Merge,Rebase,不久前,我合并了master,但从那时起,我在我的功能上做了foo,而有人在master上做了bar 现在,我想在上次合并之前重新设置bar: * 3456789 foo (HEAD -> feature) * 2345678 Merge origin/master in feature |\ | | | | * | 456789 bar (origin/master, origin/HEAD, master) 我尝试了功能中的git rebase master。问题是Git希望在

不久前,我合并了
master
,但从那时起,我在我的功能上做了
foo
,而有人在
master
上做了
bar

现在,我想在上次合并之前重新设置
bar

* 3456789 foo (HEAD -> feature)
* 2345678 Merge origin/master in feature
|\
| |  
| |
* | 456789 bar (origin/master, origin/HEAD, master) 
我尝试了
功能
中的
git rebase master
。问题是Git希望在主控器的顶部重播我的所有更改,这可能需要大量的工作

一种可能的解决办法是:

$ git checkout -b temp feature~3
$ git merge master
$ git cherry-pick foo -n2
$ git branch -D feature
$ git branch -m temp feature
$ git checkout feature
$ git branch -D temp

我相信有一种更简单的方法可以做到这一点。

你在问题末尾所描述的是一种很好的方法

在这里,您可以了解和理解正在发生的事情。


另一个选项是执行
sqaush

As squash是一种交互式重基,允许您以任何方式修改任何提交。使用edit命令,您可以在历史记录的任何给定点编辑和添加任何提交


要进行git挤压,请执行以下步骤:

// X is the number of commits you wish to squash, in your case 6
git rebase -i HEAD~X
挤压提交后,选择
e
进行编辑,并操纵所需的提交

如果您希望保持提交状态,那么应该使用您建议的
git cherry pick


我真的不明白
git-rebase-I
在这种情况下对我有什么帮助。在我的例子中,
2345678
有两个父母。我希望其第二个父级
1234567
变为
456789
。在合并之前编辑所需的提交,并设置要包含的新内容,合并有两个父级,您可以签出任何父级。