我没有将B(分支)合并到A(特征),而是在GIT LAB中将A(特征)合并到B(分支)。
这是我所做的图形表示。
我有这个如下。有了这个,"Branch A2"
合并到"feature B2"
,这不是我想要的。
问题:现在如果我继续开发,那么必须继续开展的分支是"feature B2"
而不是"Branch A2"
Branch A ----A1------ A2 <-- last commit
\ \ (merge into feature)
Branch(feature) B -- -B1- - -- B2 <-- feature now contains Branch "A2" edits.
这就是我想要的。要将"feature B2"
合并到"Branch A2"
;这样,当我继续开发时,它将位于"Branch A2"
而不是"feature B2"
Branch(feature) B ----B1------ B2 <-- last feature commit
\ \ (merge into Branch)
Branch A -- -A1- - -- A2 <-- Branch now contains "B2" feature edits.
解决此问题的最简洁方法是什么,以便我可以获得方案2并继续处理"A2"
分支机构而不是"B2"
功能分支?
从功能的角度来看,无论是合并A2-> B2还是B2-> A2,都可以实现相同的目标
我想到的一种方法是,我可以重命名Merged分支并将其命名为Branch A2
答案 0 :(得分:1)
假设您的更改未被推送到上游,我认为
git checkout feature
git reset B1 --hard
git checkout branch
git merge feature
应该这样做,其中B1是合并前的提交。
我想到的一种方法是,我可以重命名Merged分支并将其命名为Branch A2
当你完成&#34;完成&#34;无论如何,有功能,甚至可能是你的情况下更清洁的解决方案。
git branch -d branch branch-tmp # Delete branch
git branch -m feature branch # Rename feature into branch
答案 1 :(得分:0)
您应该能够在分支中合并之前恢复提交(请参阅How to revert Git repository to a previous commit?),然后以正确的方向重做合并。
答案 2 :(得分:0)
只是为了其他人可能会受到这个问题的影响,这是我的高谈阔论。注意:所有操作都是在** Local Repo
中完成的,尽管您可以在remote Repo
中的** Git Lab
中执行此操作。合并完成后,如原始主题中的图1所示:
git branch <branch name e.g Branch A>
git checkout <branch name eg Branch A>
。现在,您的新签出分支和分支B基本上是相同的,因为自上次合并分支以来没有代码更改。 git push origin --delete <your remote branch name e.g feature A>
并使用git branch -d <your local branch name e.g feature A>
git branch --list
然后git branch -a
将其推送到远程仓库之前,请确认这是否是您想要的。
即使您删除了这些分支,也不用担心历史记录,因为下次推送提交时会显示代码合并,而您最近的分支Branch A
将在合并时将所有更改都包含在内科。它的工作方式几乎就像C语言中的指针一样。变量名称已消失,但由于您将指针复制到另一个名称,因此更改的地址仍然完好无损。