我想知道如何从我曾经分支的分支机构获取提交,将所有提交应用到我的工作分支并再次应用我的工作分支提交。
例如: develop是我分支的分支 - > working_branch。 我正在研究working_branch,过了一段时间我想把所有提交从开发提取到我的工作分支,然后想要在提交完成的所有提交之后提交我的提交。
我希望这是可以理解的。 我知道可以重新开发,但问题是如何创建一个合适的合并请求。 在重新定义到开发之后,我无法推送开发分支并创建合并请求。
那么实现这一目标的命令是什么。
如果完全无意义,我很抱歉。
答案 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