Search code examples
gitgit-mergemerge-conflict-resolution

How can I force IntelliJ to resolve conflicts, which are already committed in a file by another person


Using GIT, I checked out a branch from the remote repository, which another person had worked on. One of the files has conflicts, which are already committed, so the file contains marks like <<<<<<< HEAD etc. Now, is there any way to run IntelliJ conflicts resolving tool, to resolve these conflicts? Or do I need to resolve them by hand?


Solution

  • when conflict happens, you can use the built-in merge tool, do this steps -

    • open project where the conflicts need to be resolved.

    • checkout the branch with conflicts:

      git checkout your-branch
      
    • Open the Version Control Tool in View > Tool Windows > Version Control.

    • In the Version Control tool window, go to the Local Changes tab. You will see a list of files with conflicts, marked with a red triangle.

    • Initiate the Merge Tool:

      • Right-click on the conflicted file.
      • Select Git > Resolve Conflicts.
    • Merge Tool will open a three-way merge tool where you can see:

      • Changes from the current branch on left side.

      • Changes from the branch you are merging on right side.

      • and in center, resulting file where you can choose which changes to keep.

      • Use the buttons above the panes to accept changes from either side or both. You can also manually edit the center pane to resolve the conflict.

    • Once you have resolved all conflicts in the file, click Apply to save the merged result and mark the conflict as resolved.

    • After resolving all conflicts, commit the changes:

      git add path/to/conflicted-file
      git commit -m "Resolved merge conflicts in path/to/conflicted-file"
      

    do this steps , so you dont have to manually edit the conflicted code.

    but yes , once the conflict markers are committed, Git no longer considers them as conflicts and now that is part of the file content.

    you can still do like this -

    • Open the file containing the conflict markers.

    • Look for the conflict markers:

      • <<<<<<< HEAD - this is for start of your changes.

      • ======= - this Separates your changes from the incoming changes.

      • >>>>>>> branch-name - shows the end of the incoming changes.

      • now simply Decide which changes you want to keep: the changes between <<<<<<< HEAD and ======= (your changes) or the changes between ======= and >>>>>>> branch-name (the incoming changes).

      • Edit the file to keep the needed changes and remove the conflict markers.

    • After resolving the conflicts, Test It.

      • then stage the resolved file:
        git add path/to/file
        
      • Commit the resolved changes:
        git commit -m " resolved conflicts in path/to/file"