Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 将旧提交移动到新的单独分支(推送到远程)_Git_Github_Version Control_Git Branch_Rebase - Fatal编程技术网

Git 将旧提交移动到新的单独分支(推送到远程)

Git 将旧提交移动到新的单独分支(推送到远程),git,github,version-control,git-branch,rebase,Git,Github,Version Control,Git Branch,Rebase,我是Git新手,希望得到一些帮助。此问题与类似,但该问题询问最近的提交。这不是我需要的。让我进一步解释 我有一个分支,我们称之为Feature1分支。Feature1的父级是主分支,Feature1具有以下提交: A B C D E F 但是,A和B提交实际上并不属于该特定分支,而是应该位于作为Feature1分支的子分支的另一个分支中。让我们把A和B所属的这个假定分支称为Feature2分支。同样,此分支必须来自Feature1分支,而不是来自master分支 此功能2分支尚未创建。但是,

我是Git新手,希望得到一些帮助。此问题与类似,但该问题询问最近的提交。这不是我需要的。让我进一步解释

我有一个分支,我们称之为Feature1分支。Feature1的父级是主分支,Feature1具有以下提交:

  • A
  • B
  • C
  • D
  • E
  • F
但是,A和B提交实际上并不属于该特定分支,而是应该位于作为Feature1分支的子分支的另一个分支中。让我们把A和B所属的这个假定分支称为Feature2分支。同样,此分支必须来自Feature1分支,而不是来自master分支

此功能2分支尚未创建。但是,Feature1的内容已经被推送到远程。我的问题基本上是。。。如何将A和B提交移动到名为Feature2的新分支

注意:C、D、E和F不依赖于A和B。A和B更改的文件与分支中的其他提交完全不同

假设A和B不是最近的提交,您有:

m--m                   (master)
    \
      a--b--c--d--e--f (feature1)
由于feature1已经推出,因此重新调整其基础以重写其历史是有风险的

然后,为了使功能1不显示这些更改,您可以:

git checkout feature1
git revert a^..b

m--m                      (master)
    \
      a--b--c--d--e--f--g (feature1)
然后可以从feature1创建feature2分支,并在其上执行以下操作:


非常感谢你的帮助。真的很感激!!
git checkout -b feature2
git cherry-pick a^..b

m--m                      (master)
    \
      a--b--c--d--e--f--g (feature1)
                         \
                          a'--b' (feature2)