你的git日志显示在develop
分支中有很多提交,但在master
分支中不存在。拉取请求正确显示了这些提交列表,可以合并到master
分支。
要列出develop
分支中不属于master
分支的所有提交,可以使用命令git log master..develop
。这应该与您在拉取请求中看到的列表匹配。
从你的git日志中看,develop
之前已经被合并到了master
。但是由于这些合并提交不再存在于master
分支中,是否有可能有人将master
分支重置为以前的状态?如果您有一个部署到与master
分支同步的环境,可能会回滚更改。
为了使master
再次与develop
同步:
develop
并进行pull
以确保分支是最新的master
执行相同操作develop
合并到master
中master
分支现在,master
将再次与develop
同步,并且master
缺少的develop
中的提交列表应该为空。使用git log master..develop
列出这些提交。您下一个拉取请求将只包含此合并后您做的提交。
如果您想进一步调查如何陷入此状态,可以使用reflog
查看对master
分支进行了哪些更改。例如,如果develop
中的最新提交曾经是master
分支的一部分。
git reflog master
如果你想这样做,可以在合并分支之前这样做,这样你就可以看到修复前的历史记录。
我不确定我是否正确理解了操作。据我所知,您在development
分支中只有一个提交记录,因此这是我的尝试。我正在考虑的问题是您的开发分支与主分支不同步。
撤销开发分支的提交,同时保留本地更改 git reset --soft HEAD^ # 假设最后一次提交是您自己的
此时您的本地更改将保持不变
现在将其推送到git .. 您可以尝试强制推送。 您可以从这里获得帮助 回滚远程Git存储库
隐藏本地更改,以便将来可以获取这些更改: git stash
此时,您的开发分支干净且没有本地更改
现在切换到主分支并更新它与远程同步。 git checkout master & git pull origin master
切换到开发分支并更新它与远程同步。 git checkout development & git pull origin development
将主分支合并到开发分支。 git merge master
此时,您的开发分支与主分支在本地同步
将开发分支推送到远程服务器: git push origin developent
现在,您可以转到GitHub并提出PR,查看是否仍然显示差异。如果上述步骤没有问题,则不应显示任何差异。
现在将您在步骤#2中隐藏的本地更改带回。 git stash pop
现在提交并推送到开发分支,查看PR。
git clean
也可能有所帮助。
git log --oneline master..develop
的输出。另外可能感兴趣的是git log --oneline --decorate --all --graph
。 - Scott Weldon