github网页界面在创建PR从发布版合并到主版的过程中,报告了错误的 "文件已更改"。

问题描述 投票:1回答:2

在我们的项目中,我们已经做了很多很多次。但这次却很奇怪,当我们试图创建PR将发布分支合并到master中进行部署时,github的Web用户界面却认为改变了500个文件,而不是报告少于100个文件。当我们试图创建一个PR来将发布分支合并到master中进行部署时,github的Web用户界面没有报告少于100个文件的变化,而是认为有500个文件变化。而且很多文件的差异都是错误的。

master 分支是用于生产部署的分支,release 分支是用于 QA 构建的。

例如,文件foo.java已经好几个月没改了,而且在两个分支中都有相同的历史记录。但PR认为master没有这个文件,于是尝试添加它。更奇怪的是,如果我做反向PR,从master到release。现在github文件改变了,认为release没有这个文件。

有什么办法可以解决这个问题吗?

git github git-merge
2个回答
0
投票

不完全理解为什么github会这样做,但我有一个工作方法。工作方法是从 release 分支创建一个中间分支,先用它与 master 合并,然后以 master 为基础创建 PR。

git checkout release
git pull
git checkout -b test/master-to-release
git merge --no-commit master
git commit -m'test/master-to-release created branch from release. merge with master. use master for beam files. use release for the rest'
git push

这时,以 maser 为基础创建一个 testmaster-to-release 的 PR,然后 PR 只正确地显示 release 中修改的文件,对于同一个分支,当以 release 为基础创建 PR 时,它只显示 master 中修改的文件。因此,testmaster-to-release 是一个中间分支,用来解决冲突,并为与 master 或 release 合并提供一个干净的分支基础。


0
投票

如果你在本地检查这两个分支的差异,你可以确定哪些地方发生了变化。

  • 要么是文件的大小写 (大写字母)
  • 或权限(755而不是644)
  • 或eol字样(行文结束时,有人还带着。git config core.autocrlf 提交时设置为true)

如果是交叉合并的问题,一个更好的选择是。

  • 从原来的 "上游 "仓库中获取信息,更新 "上游 "仓库。master 分支。upstream/master
  • 把你的公共关系分支重新建立在upstreammaster之上
  • git push --force 上述公关部门
© www.soinside.com 2019 - 2024. All rights reserved.