我有一个git repo,目前我正在使用功能分支。
我有类似的东西:
dev: ---1--2--3--
\
fb: --f1
当我在我的功能分支上工作时,发生了更多对dev的提交,所以我对它进行了重新设置,现在我的提交已经改变了
dev: ---1--2--3--4--5----
\
fb: --f1(another)
所以现在我无法将其推送到远程功能分支,因为SHA无效。我无法强行推送,因为它被服务器禁止。
那么,在这种情况下,正确的工作流程是什么,我该怎么办?
答案 0 :(得分:1)
我的建议是merge remote/dev into local/fb
或delete remote/fb
然后使用git history推送local / fb。
撤消rebase并将remote / dev合并到local / fb 。
# undo rebase: reset your local/fb with remote/fb
$ git checkout fb
$ git reset --hard origin/fb
# merge and push to remote/fb
$ git pull origin dev
$ git push origin fb
删除remote / fb 分支,然后按 local / fb with history 。
$ git push origin --delete fb # delete remote/fb branch
$ git push origin fb
答案 1 :(得分:0)
例如,您可以执行以下操作之一:
答案 2 :(得分:0)
这取决于您公司/团队的预期整体工作流程。但是,他们可能还没有完全考虑过它。
防止对所有分支进行强制推送,并要求对功能分支进行重新分配是相互矛盾的。这两件事都可以是工作流程的合理部分,但不是相同的工作流程。
两个选项
如果强制推送功能分支必须在您的公司内被拒绝,那么结果是您无法重新绑定这些功能分支。您需要预先形成非快进合并。
如果您的公司希望您重新设置功能分支,那么他们必须让repo接受强制推送到这些功能分支。让git拒绝强制推动某些分支而不是所有分支是非常容易的。
邋around的解决方法
您可以在每次rebase时删除功能分支,并且每次都创建一个新分支。这非常草率,会导致一些荒谬的不必要的分支。您的公司/团队应该考虑他们的工作流程策略以避免此类事情。