如何将分支继承的基础提交移动到当前分支中的第一个提交?

时间:2018-10-17 14:40:08

标签: git github gitlab

如何制作X分支

feature/name          D - E - F
                  /
develop A - B - C 

看起来像这样

feature/name      C - D - E - F
              /
develop A - B

并将C移到y分支上的第一次提交

编辑 抱歉打错了。 这是我需要的简短情况

  

在这种情况下,我忘记了从开发中创建一个新的功能分支并提交要开发的更改,然后发布了我正在开发中的信息,因此我创建了功能分支并继续进行工作。所以我想重置开发分支并将所有工作保留在功能分支上

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的图表,则希望将develop而不是B指向C

要在本地执行此操作:

  1. git checkout B
  2. git branch -D develop
  3. git checkout -b develop

当然,如果要对远程仓库应用相同的更改,则还需要删除远程develop,(git push --delete)并重新创建(git push )。

更新:注释:

从评论和其他答案来看,似乎对git分支的工作方式存在误解。简单来说,分支feature/name不包含提交DEF。它由所有6个提交ABCDEF组成。有关更详尽的说明,请参见https://git-scm.com/book/en/v1/Git-Branching-What-a-Branch-Is或其他示例。

答案 1 :(得分:1)

您可以做的是从开发分支的提交B创建一个新的分支exclusive consumer。然后复制所有提交,并删除旧的feature/name2分支。

看看是否有帮助。

feature/name

从远程,您可以在推送新的分支之后删除旧的功能分支。在删除本地和远程# Go to commit B git checkout <B commit id> # Create a new branch from Commit B git checkout -b "feature/name2" # Copy all commit (D to F) to this new branch. git cherry-pick <C commit id> git cherry-pick <D commit id> git cherry-pick <E commit id> git cherry-pick <F commit id> #If you want you can delete the old branch using (use with caution) git branch -D feature/name # To delete commit C from develop branch git checkout develop git reset HEAD~ 分支之后,也可以将该分支重命名为feature/name

相关问题