我遇到这种情况,如果我将我的主分支与Bitbucket上的dev分支进行比较,它不会显示任何更改,但如果我将我的dev分支与我的主分支进行比较则显示更改。 Dev分支具有正确的代码库(master是错误的)但是git没有检测到合并到Master中的更改。发生了什么事?
编辑:我能够通过使用
将其重新定位到开发人员来获取正确的代码库git rebase -s theirs dev
然后强制推动大师,但它消灭了我的一堆分支历史。有更好的方法吗?
答案 0 :(得分:0)
如果master
包含"错误"代码,您可以将其替换为dev
的内容:
git checkout dev
git merge -s ours master # ignore master content, but record the merge
git checkout master
git merge dev # fast-forward master HEAD to dev HEAD
然后一个简单的推动就足够了,不需要强迫。
答案 1 :(得分:0)
如果将master(更改源)与dev(更改目标)进行比较,则不会发生任何更改。并将dev与master相比较,显示出变化。这意味着dev分支比master分支更新,结构主要类似于:
A---B---C dev
/
D---E master
您可以使用git checkout master
和git merge dev
,它会将master分支快进到C,而无需创建新的提交ID。结构将如下所示:
D---E---A---B---C master, dev
如果将master(更改目标)与dev(更改源)进行比较,则不会发生任何更改。并将dev与master相比较,显示出变化。这意味着主分支比dev分支更新,结构主要类似于:
A---B---C master
/
D---E dev
因此您可以使用git checkout master
和git cherry-pick <latest commit id for dev branch>
更新主分支。