Github拉取请求显示过多更改/提交

26

我们有两个分支:developmaster

由于某些原因,当我创建一个从developmaster的PR时,它会显示出之前所有提交和更改的列表,即使我只在develop中进行了一行更改。

此外,当我从命令行中将develop合并到master时,它会显示"无法自动合并"。

你知道可能发生了什么吗?以前对我们来说都很正常。

编辑:这是我们尝试将develop合并到master时的情况。只有最近的提交是新的。其他的之前已经合并过了: enter image description here 以及git log --oneline --decorate --all --graph的输出 enter image description here


1
这些额外的提交包含了哪些更改?它们只是合并提交吗?请发布 git log --oneline master..develop 的输出。另外可能感兴趣的是 git log --oneline --decorate --all --graph - Scott Weldon
1
@ScottWeldon 已添加 - 如果还有其他有用的信息,请告诉我。 - Evan Hobbs
1
@ScottWeldon PS 添加了赏金。 - Evan Hobbs
1
@ScottWeldon 在这种情况下,我认为有所区别:分支和修饰参考的颜色都很有帮助。 您是正确的,我仍然会添加文本格式,但在pastebin外部链接中,以不过多地混淆问题。 - VonC
@VonC 好的,没问题。 - Scott Weldon
显示剩余2条评论
2个回答

14

你的git日志显示在develop分支中有很多提交,但在master分支中不存在。拉取请求正确显示了这些提交列表,可以合并到master分支。

要列出develop分支中不属于master分支的所有提交,可以使用命令git log master..develop。这应该与您在拉取请求中看到的列表匹配。

从你的git日志中看,develop之前已经被合并到了master。但是由于这些合并提交不再存在于master分支中,是否有可能有人将master分支重置为以前的状态?如果您有一个部署到与master分支同步的环境,可能会回滚更改。

解决方案

为了使master再次与develop同步:

  1. 切换到develop并进行pull以确保分支是最新的
  2. master执行相同操作
  3. develop合并到master
  4. 解决冲突
  5. 推送master分支

现在,master将再次与develop同步,并且master缺少的develop中的提交列表应该为空。使用git log master..develop列出这些提交。您下一个拉取请求将只包含此合并后您做的提交。

进一步调查

如果您想进一步调查如何陷入此状态,可以使用reflog查看对master分支进行了哪些更改。例如,如果develop中的最新提交曾经是master分支的一部分。

git reflog master

如果你想这样做,可以在合并分支之前这样做,这样你就可以看到修复前的历史记录。


1

我不确定我是否正确理解了操作。据我所知,您在development分支中只有一个提交记录,因此这是我的尝试。我正在考虑的问题是您的开发分支与主分支不同步。

  1. 撤销开发分支的提交,同时保留本地更改 git reset --soft HEAD^ # 假设最后一次提交是您自己的

    此时您的本地更改将保持不变

    现在将其推送到git .. 您可以尝试强制推送。 您可以从这里获得帮助 回滚远程Git存储库

  2. 隐藏本地更改,以便将来可以获取这些更改: git stash

    此时,您的开发分支干净且没有本地更改

  3. 现在切换到主分支并更新它与远程同步。 git checkout master & git pull origin master

  4. 切换到开发分支并更新它与远程同步。 git checkout development & git pull origin development

  5. 将主分支合并到开发分支。 git merge master

    此时,您的开发分支与主分支在本地同步

  6. 将开发分支推送到远程服务器: git push origin developent

    现在,您可以转到GitHub并提出PR,查看是否仍然显示差异。如果上述步骤没有问题,则不应显示任何差异。

  7. 现在将您在步骤#2中隐藏的本地更改带回。 git stash pop

  8. 现在提交并推送到开发分支,查看PR。

如果一切正常,它应该显示正确的差异。步骤2后,git clean也可能有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接