Git Bitbucket分支差异仅单向可见

Git Bitbucket分支差异仅单向可见,git,version-control,bitbucket,git-diff,Git,Version Control,Bitbucket,Git Diff,在这种情况下,如果我比较Bitbucket上的主分支和开发分支,它不会显示任何更改,但如果我比较开发分支和主分支,它会显示更改。Dev分支有正确的代码库(master错误),但git没有检测到要合并到master中的更改。发生什么事了 编辑:我能够让master通过使用 git rebase -s theirs dev 然后强行推大师,但它抹去了我的分支历史。有更好的方法吗?如果master包含“错误”的代码,您可以将其替换为dev的内容: git checkout dev git mer

在这种情况下,如果我比较Bitbucket上的主分支和开发分支,它不会显示任何更改,但如果我比较开发分支和主分支,它会显示更改。Dev分支有正确的代码库(master错误),但git没有检测到要合并到master中的更改。发生什么事了

编辑:我能够让master通过使用

git rebase -s theirs dev

然后强行推大师,但它抹去了我的分支历史。有更好的方法吗?

如果
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
然后一个简单的推送就足够了,无需强制。

如果将master(更改源)与dev(更改目标)进行比较,则不会有任何更改。并将dev与master进行比较,会显示更改。这意味着dev分支比master分支更新,其结构主要如下:

      A---B---C  dev
     /         
D---E  master
      A---B---C  master
     /         
D---E  dev
您可以使用
git checkout master
git merge dev
,它将主分支快进到C,而不创建新的提交id。结构如下所示:

D---E---A---B---C  master, dev
如果将主设备(更改目标设备)与开发设备(更改源设备)进行比较,则不会发生任何更改。并将dev与master进行比较,会显示更改。这意味着主分支比开发分支更新,结构主要如下:

      A---B---C  dev
     /         
D---E  master
      A---B---C  master
     /         
D---E  dev

因此,您可以使用
git checkout master
git cherry pick
来更新主分支。

git merge dev在主分支上时会告诉我“一切都是最新的”。主分支和dev分支的git结构看起来像图,还是相反?如果相反(主分支比dev分支更新),因此,您应该使用
git checkout master
git cherry pick
来代替。这样做后,主分支的提示功能正常,但在执行此操作后,我在dev中删除的一些提交会重新出现在master中。在这些提交中,我删除了一个我不想删除的文件。如果我查看Bitbucket的diff以查找我删除它的提交,它会显示文件正在删除,但几次提交后,它会重新出现在repo中,而没有diff显示它已添加,就像它从未消失一样。只需使用添加或删除的正确文件进行新的提交,推送,然后继续。