2016-08-05 11:26:53 -04:00
|
|
|
# Merge conflict resolution
|
|
|
|
|
2016-08-17 08:34:53 -04:00
|
|
|
> [Introduced][ce-5479] in GitLab 8.11.
|
|
|
|
|
2016-08-05 11:26:53 -04:00
|
|
|
When a merge request has conflicts, GitLab may provide the option to resolve
|
|
|
|
those conflicts in the GitLab UI. (See
|
|
|
|
[conflicts available for resolution](#conflicts-available-for-resolution) for
|
|
|
|
more information on when this is available.) If this is an option, you will see
|
|
|
|
a **resolve these conflicts** link in the merge request widget:
|
|
|
|
|
|
|
|
![Merge request widget](img/merge_request_widget.png)
|
|
|
|
|
|
|
|
Clicking this will show a list of files with conflicts, with conflict sections
|
|
|
|
highlighted:
|
|
|
|
|
|
|
|
![Conflict section](img/conflict_section.png)
|
|
|
|
|
|
|
|
Once all conflicts have been marked as using 'ours' or 'theirs', the conflict
|
|
|
|
can be resolved. This will perform a merge of the target branch of the merge
|
|
|
|
request into the source branch, resolving the conflicts using the options
|
|
|
|
chosen. If the source branch is `feature` and the target branch is `master`,
|
|
|
|
this is similar to performing `git checkout feature; git merge master` locally.
|
|
|
|
|
2017-01-24 10:13:38 -05:00
|
|
|
## Merge conflict editor
|
|
|
|
|
|
|
|
> Introduced in GitLab 8.13.
|
|
|
|
|
|
|
|
The merge conflict resolution editor allows for more complex merge conflicts,
|
|
|
|
which require the user to manually modify a file in order to resolve a conflict,
|
|
|
|
to be solved right form the GitLab interface. Use the **Edit inline** button
|
|
|
|
to open the editor. Once you're sure about your changes, hit the
|
|
|
|
**Commit conflict resolution** button.
|
|
|
|
|
|
|
|
![Merge conflict editor](img/merge_conflict_editor.png)
|
|
|
|
|
2016-08-05 11:26:53 -04:00
|
|
|
## Conflicts available for resolution
|
|
|
|
|
|
|
|
GitLab allows resolving conflicts in a file where all of the below are true:
|
|
|
|
|
|
|
|
- The file is text, not binary
|
2016-08-23 11:37:14 -04:00
|
|
|
- The file is in a UTF-8 compatible encoding
|
2016-08-05 11:26:53 -04:00
|
|
|
- The file does not already contain conflict markers
|
|
|
|
- The file, with conflict markers added, is not over 200 KB in size
|
|
|
|
- The file exists under the same path in both branches
|
|
|
|
|
|
|
|
If any file with conflicts in that merge request does not meet all of these
|
|
|
|
criteria, the conflicts for that merge request cannot be resolved in the UI.
|
|
|
|
|
|
|
|
Additionally, GitLab does not detect conflicts in renames away from a path. For
|
|
|
|
example, this will not create a conflict: on branch `a`, doing `git mv file1
|
|
|
|
file2`; on branch `b`, doing `git mv file1 file3`. Instead, both files will be
|
|
|
|
present in the branch after the merge request is merged.
|
2016-08-17 08:34:53 -04:00
|
|
|
|
|
|
|
[ce-5479]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/5479
|