将较旧的提交移动到新的独立分支(推送到远程)
Move Older Commits To New Separate Branch (Pushed To Remote)
我是 Git 的新手,需要一些帮助。这个问题类似于 Move the most recent commit(s) to a new branch with Git 但那个问题询问的是最近的提交。这不是我需要的。让我进一步解释...
我有一个分支,我们称它为 Feature1 分支。 Feature1 的父级是主分支,Feature1 有以下提交:
- 一个
- B
- C
- D
- E
- F
但是,A 和 B 提交并不真正属于那个特定的分支,实际上应该在不同的分支中,该分支是 Feature1 分支的子分支。我们将 A 和 B 所属的这个假定分支称为 Feature2 分支。同样,这个分支必须来自 Feature1 分支,而不是来自 master 分支。
尚未创建此 Feature2 分支。但是,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 已经被推送,重新设置它的基址以重写它的历史是有风险的。
然后您可以 revert a--b 以便 feature1 不 显示这些更改:
git checkout feature1
git revert a^..b
m--m (master)
\
a--b--c--d--e--f--g (feature1)
然后你可以从feature1创建一个feature2分支,cherry-pick a--b在上面:
git checkout -b feature2
git cherry-pick a^..b
m--m (master)
\
a--b--c--d--e--f--g (feature1)
\
a'--b' (feature2)
我是 Git 的新手,需要一些帮助。这个问题类似于 Move the most recent commit(s) to a new branch with Git 但那个问题询问的是最近的提交。这不是我需要的。让我进一步解释...
我有一个分支,我们称它为 Feature1 分支。 Feature1 的父级是主分支,Feature1 有以下提交:
- 一个
- B
- C
- D
- E
- F
但是,A 和 B 提交并不真正属于那个特定的分支,实际上应该在不同的分支中,该分支是 Feature1 分支的子分支。我们将 A 和 B 所属的这个假定分支称为 Feature2 分支。同样,这个分支必须来自 Feature1 分支,而不是来自 master 分支。
尚未创建此 Feature2 分支。但是,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 已经被推送,重新设置它的基址以重写它的历史是有风险的。
然后您可以 revert a--b 以便 feature1 不 显示这些更改:
git checkout feature1
git revert a^..b
m--m (master)
\
a--b--c--d--e--f--g (feature1)
然后你可以从feature1创建一个feature2分支,cherry-pick a--b在上面:
git checkout -b feature2
git cherry-pick a^..b
m--m (master)
\
a--b--c--d--e--f--g (feature1)
\
a'--b' (feature2)