在我们的项目中,我们已经做了很多次了。但这次更糟了。当试图创建一个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
不同。我还必须签出一个新的分支作为解决这个问题的变通方法。