github Web UI,在创建从发布到主版本的 PR 合并期间报告了错误的"文件更改"



在我们的项目中,我们已经做了很多次了。但这次更糟了。当试图创建一个PR以将发布分支合并到master中进行部署时,github web UI认为500个文件发生了更改,而不是报告少于100个文件的更改。许多文件差异是错误的。

主分支用作生产部署的分支构建。发布分支用于QA构建。

例如,文件foo.java已经几个月没有更改了,并且在两个分支中都存在相同的历史记录。但公关认为master没有文件,并试图添加它。即使是陌生人,如果我做反向公关,从master到发布。现在更改的github文件认为该版本没有该文件。

你知道会出什么问题吗?

我不完全理解github为什么这么做,但我有一个解决办法。解决方法是从发布分支创建一个中间分支,并使用它首先与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

在这一点上,创建一个PR供测试/主机以maser为基础发布,然后PR只正确显示发布中更改的文件。对于同一分支,当创建以发布为基础的PR时,它只显示从主文件更改的文件。因此,test/master to release是一个中间分支,用于解决冲突,并提供一个干净的分支库以与master或release合并。

如果您在本地检查两个分支的差异,您可以确定发生了什么变化:

  • 文件的大小写(大写/小写(
  • 或许可(755而不是644(
  • 或eol字符(行尾,当某人在提交时仍将git config core.autocrlf设置为true时(

如果是交叉合并问题,更好的选择是:

  • 从原始"上游"存储库中提取以更新上游master分支:upstream/master
  • 将您的PR分支机构重新设置在上游/主分支机构之上
  • git push --force所述PR分支(重定基础(

是的,我以前也遇到过这个问题,git web ui上更改的文件与本地主机上的git diff不同。我还必须签出一个新的分支作为解决这个问题的变通方法。

最新更新