如何解决解决没有推送特权的两个分支之间的合并冲突
给予
- 将
development
合并为integration
- 两个分支都不允许
push
- 合并时存在冲突
$ git merge development
Auto-merging .gitlab-ci.yml
CONFLICT (content): Merge conflict in .gitlab-ci.yml
Automatic merge failed; fix conflicts and then commit the result.
步骤1
从integration
创建一个临时分支,并合并development
$ git checkout integration
$ git checkout -b patch-1
$ git merge development
Auto-merging .gitlab-ci.yml
CONFLICT (content): Merge conflict in .gitlab-ci.yml
Automatic merge failed; fix conflicts and then commit the result.
步骤2 手动修复冲突后,将临时分支推送到原始位置
$ git push --set-upstream origin patch-1
步骤3
将合并请求从patch-1
提升到integration.
成功合并,没有冲突。
步骤4 ,重新尝试将development
分支合并到integration
,
$ git merge development
Auto-merging .gitlab-ci.yml
CONFLICT (content): Merge conflict in .gitlab-ci.yml
Automatic merge failed; fix conflicts and then commit the result.
最后,我仍然遇到相同的合并冲突。
- 此策略有什么问题吗?
- 更正建议
在两个分支之间添加git日志
$ git log --graph --oneline development origin/development integration origin/integration
* 3ae0efe (origin/integration,integration) Merge branch 'patch-1' into 'integration'
|\
| * c393837 Comment-01
|/
* 2a77f4f Merge branch 'release' into integration
|\
| * 67f7ed6 (release) Merge branch 'integration' into 'release'
| |\
| | * e15411f Comment-02
| |/
| * d5ec084 Merge branch 'integration' into 'release'
| |\
| | * 6540f71 Comment-02
| |/
| * 064b304 Merge branch 'integration' into 'release'
| |\
| | * 8def831 Comment-02
| |/
| * 4214907 Merge branch 'integration' into 'release'
| |\
| | * da7c967 Comment-02
| |/
* | b0bfb25 Merge branch 'development' into 'integration'
|\ \
| * | 75e4d3d
|/ /
* | 56ae216 (origin/feature/rbac-on-rbac-data) Merge branch 'development' into 'integration'
|\ \
* \ \ 3ca4d3b Merge branch 'development' into 'integration'
|\ \ \
* \ \ \ 9df80be Merge branch 'development' into 'integration'
|\ \ \ \
* \ \ \ \ 9c9718c Merge branch 'release' into integration
|\ \ \ \ \
| | |_|_|/
| |/| | |
| * | | | 94f6141 Merge branch 'integration' into 'release'
| |\ \ \ \
| | * | | | 99fddaf Comment-02
| |/ / / /
| * | | | 5e69629 Merge branch 'integration' into 'release'
| |\ \ \ \
| | * | | | bd2dc44 Comment-02
| |/ / / /
* | | | | d704342 Merge branch 'development' into 'integration'
|\ \ \ \ \
* \ \ \ \ \ c62b668 Merge branch 'development' into 'integration'
|\ \ \ \ \ \
| | | | | | | * fdbd3f4 (HEAD -> development,origin/development) Merge branch 'feature/two' into 'development'
| | | | | | | |\
| | | | | | | | * 840cbaf Feature Two
| | | | | | | |/
| | | | | | | * 8dd03dd Merge branch 'feature/one' into 'development'
| | | | | | | |\
| | | | | | | | * 8549cba Comment-01
| | | | | | | |/
| | | | | | | * fbc75d4 Merge branch 'feature/one' into 'development'
| | | | | | | |\
| | | | | | | | * a233226 Comment-01
| | | | | | | |/
| | | | | | | * f774d98 (tag: oct20.v1) Merge branch 'configuration/change-01' into 'development'
| | | | | | | |\
| | | | | | | | * 649ae41 Comment-03
| | | | | | | |/
| | | | | | | * a7ab4d8 Merge branch 'configuration/change-01' into 'development'
| | | | | | | |\
| | | | | | | | * eae0789 Comment-03
| | | | | | | |/
| | | | | | | * dc61af9 Merge branch 'defect-importdata-workday-exception' into 'development'
| | | | | | | |\
| | | | | | | | * 5842e04 Defect importdata workday exception
| | | | | | | |/
| | | | | | | * 0719f2e Merge branch 'hotfix-01' into 'oct20-dev-release'
| | | | | | |/|
| | | | | | | * a226119 (origin/hotfix-01,hotfix-01)
| | | | | | |/
| | | | | | * 1a14721 Comment-04 <======= Git merge-base commit
解决方法
您可以在图形中看到:不知何故,分支development
没有合并到integration
-
development
的当前头是:
* fdbd3f4 (...) Merge branch 'feature/two' into 'development'
|\
| * 840cbaf Feature Two
...
不是分支integration
的祖先(从development
到integration
没有行)。
对integration
的最后一次提交提到了合并:
* 3ae0efe (...) Merge branch 'patch-1' into 'integration'
|\
| * c393837 Comment-01
|/
* 2a77f4f Merge branch 'release' into integration
...
但是看起来这种合并仅带来了一次提交(c393837
),而不是development
的完整历史记录。
这就是为什么在将development
合并到integration
时仍然存在冲突的原因。
如果您知道提交3ae0efe
(integration
的头)包含合并到development
中的integration
的全部内容,则可以创建伪合并致力于结合历史。
但是,通过检查回购的实际内容,您可以知道:由于两个分支是分开的,git
不知道。
否则,您将必须将development
重新合并到integration
中。
[编辑]
您正在使用gitlab,并且使用“ squash&merge”选项合并了您的MR,对吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。