git将另一个分支改为我的工作分支

时间:2018-01-12 14:39:19

标签: git merge version-control rebase

我想知道如何从我曾经分支的分支机构获取提交,将所有提交应用到我的工作分支并再次应用我的工作分支提交。

例如: develop是我分支的分支 - > working_branch。 我正在研究working_branch,过了一段时间我想把所有提交从开发提取到我的工作分支,然后想要在提交完成的所有提交之后提交我的提交。

我希望这是可以理解的。 我知道可以重新开发,但问题是如何创建一个合适的合并请求。 在重新定义到开发之后,我无法推送开发分支并创建合并请求。

那么实现这一目标的命令是什么。

如果完全无意义,我很抱歉。

1 个答案:

答案 0 :(得分:3)

您最初提出的答案是如何移动提交。字面上的答案是你不能移动提交,但是你可以重新设置它们(创建新的提交,在不同的提交上应用相同的更改,并将分支移动到新的提交),你已经知道如何做。所以这不是你的问题。

你无法推动的原因是这样做会从分支中删除历史记录。在变基之后你有

                       A' -- B' -- C' <--(feature)
                      /
x -- x -- x -- x -- x <--(develop)
      \
       A -- B -- C <--(origin/feature)

通常当您将更新推送到分支时,相应的远程分支从您的分支“可到达”在这种情况下并非如此,因为您移动了分支(以不同于“将新的提交添加到分支的尖端”的方式)分支“)。

默认情况下,git会拒绝此推送,因为如果其他人提取了feature,则以这种方式移动它会导致问题。您可以与其他用户协调以解决这些问题,因此您可以覆盖git的默认决策来拒绝推送。请注意,如果您在没有与其他开发人员协调的情况下执行此操作,则会给每个人带来问题(包括您的工作可能最终被撤消)。

有关如何协调清理的信息,请参阅“从上游rebase恢复”下的git rebase文档。您可以在此处找到它:https://git-scm.com/docs/git-rebase

如果您已完成所有操作(或者,在简单的情况下,如果没有其他人拥有该分支的副本),那么您可以“强制”推送

git push -f

一个警告是,根据git的托管方式,服务器可能配置也可能不配置为允许您强制推送到该分支。如果没有,那么这是一个团队级别的规则,说“你不能修改你已经推动的分支”。在这种情况下,你必须决定将develop合并到feature

是否值得。