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

Posted

技术标签:

【中文标题】Github 拉取请求显示太多更改/提交【英文标题】:Github pull request shows too many changes/commits 【发布时间】:2016-12-27 04:24:00 【问题描述】:

我们有两个分支:developmaster

由于某种原因,当我创建了develop 的 PR --> master。即使我在 develop 中仅进行了一行更改,它也会显示以前提交和更改的完整列表。

此外,当我从命令行可以毫无问题地将develop 合并到master 时,它会显示“无法自动合并”。

知道会发生什么吗?以前它对我们来说很好用。

编辑:这是我们尝试将develop 合并到master 时的样子。只有最近的提交是新的。其他的以前合并过: 以及git log --oneline --decorate --all --graph 的输出

【问题讨论】:

这些额外提交中包含哪些更改?他们只是合并提交吗?请发布git log --oneline master..develop 的输出。也可能感兴趣的是git log --oneline --decorate --all --graph @ScottWeldon 已添加 - 如果还有其他有用的信息,请告诉我。 @ScottWeldon ps 添加了赏金 Please don't post your console output as an image,而是复制/粘贴输出和use Markdown's code formatting。 (第一张图片可能还可以,但第二张没有在原始文本上添加任何内容。) @ScottWeldon 在这种情况下我会反对:分支和装饰参考的颜色都很有帮助。你是对的,我仍然会添加文本表单,但是在一个 pastebin 外部链接中,以免问题过于混乱。 【参考方案1】:

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

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

从您的 git 日志看来,develop 之前已合并到 master。但是由于这些合并提交不再位于master 分支中,是否有人将主分支重置为早期状态?如果您有部署到同步到 master 分支的环境,可能会回滚更改?

解决方案

master 再次与develop 同步:

    检查 developpull 以确保分支是最新的 用master做同样的事情 将develop 合并到master 解决冲突 推送master分支

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

进一步调查

如果您想进一步调查您是如何进入这种状态的,您可以使用reflog 查看对master 分支所做的更改。例如,如果 develop 中最近的提交之一以前是 master 分支的一部分。

git reflog master

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

【讨论】:

【参考方案2】:

我不确定我的操作是否正确。据我了解,您在developmentbranch 中有一个提交,所以这是我的尝试。 我正在考虑你的开发分支与master不同步的问题

    在保留本地更改的同时恢复开发分支提交 git reset --soft HEAD^ # 假设最后一次提交是你的

    此时,您的本地更改将按原样保留在您的计算机中

    现在将其推送到 git .. 此时您可以尝试强制推送。 您可以从这里获得帮助 Rolling back a remote Git repository

    存储本地更改,以便将来获得这些更改: git 存储

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

    现在切换到 master 分支并使用远程更新它。 git checkout master & git pull origin master

    切换到开发分支并使用远程更新它。 git checkout 开发 & git pull origin 开发

    将主人合并到它。 git 合并大师

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

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

    现在你可以去 github 提 PR 看看是否仍然有区别。如果上述步骤没有问题,则不应显示任何此类差异。

    现在收回您在第 2 步中隐藏的本地更改。 git stash 弹出

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

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

【讨论】:

以上是关于Github 拉取请求显示太多更改/提交的主要内容,如果未能解决你的问题,请参考以下文章

GitHub:重新打开合并的拉取请求

显示已在目标分支中的提交的 GitHub 拉取请求

多用户 Github 拉取请求

代码审查后更新拉取请求的首选 Github 工作流程

使用 github api 从拉取请求编号获取拉取请求合并提交 sha

AWS codebuild 没有构建我的 github 拉取请求