【问题标题】:Github pull request shows too many changes/commitsGithub 拉取请求显示太多更改/提交
【发布时间】: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 外部链接中,以免问题过于混乱。

标签: git github version-control pull-request


【解决方案1】:

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

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

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

解决方案

master 再次与develop 同步:

  1. 检查 developpull 以确保分支是最新的
  2. master做同样的事情
  3. develop 合并到master
  4. 解决冲突
  5. 推送master分支

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

进一步调查

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

git reflog master

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

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 2011-05-05
      • 2013-06-09
      • 1970-01-01
      • 2011-11-13
      • 2017-08-30
      • 1970-01-01
      • 2012-08-06
      • 2013-04-24
      相关资源
      最近更新 更多