我基于master分支创建了一个功能分支。 该分支具有本地副本和远程副本(需要与其他开发人员一起使用)。 Master分支已经升级,因此我对本地功能分支(git rebase master)进行了重新定位,以适应master的最新更新。 但是,现在我的本地功能分支和远程功能分支已经分开了-并且我无法推送到远程功能分支(除非我使用-f标志)。
有没有一种方法可以正确解决此问题而无需强行推动?
答案 0 :(得分:3)
有没有一种方法可以正确解决此问题而无需强行推动?
您将不得不使用git reset --hard origin/master
放弃重新建立基础的分支,这会将您的本地分支恢复为master
上的origin
状态。然后合并 master到您的分支中,而不是重新部署,这样您的分支的历史记录就与origin/master
兼容。
在没有-f
或--force
的情况下,您无法重新建立分支并继续推送分支。您正在以某种方式重写本地历史记录,从而使您的分支机构与远程分支机构以及其他所有人的本地分支机构根本不同,从而使您无法进行更改。强行解决问题只会给当前共享您分支的每个其他人带来问题,最终您的提交历史将比仅仅git merge origin/master
复杂得多( far )功能分支以保持最新状态。
如果您担心线性历史记录,那么最好的解决办法是在将要素分支合并到master
中时,通过变基或压缩提交来解决此问题。如果您使用的是Github并拉出请求以将更改合并到master
中,Github会对此提供帮助。