taverna-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stian Soiland-Reyes <st...@apache.org>
Subject Resolving merge conflicts
Date Mon, 06 Jun 2016 12:56:55 GMT
Here's a walk-through I did with Thilina on solving a merge conflict.

The basis is that the pull request at


> This branch has conflicts that must be resolved

That is typically because both you and someone else (e.g. in this case
me) have changed the same file.

Here's what you can do

git status ## ensure everything is checked in
git checkout cwl-browse ## branch of the pull request

# Fetch the latest branch we want to merge into
git remote add apache
git fetch apache
git merge apache/cwl-browse

Auto-merging taverna-external-tool-activity/src/main/java/org/apache/taverna/activities/externaltool/desc/RuntimeEnvironment.java
Removing taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/InvocationException.java
Removing taverna-external-tool-activity/src/main/java/de/uni_luebeck/inb/knowarc/usecases/invocation/AskUserForPw.java
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Automatic merge failed; fix conflicts and then commit the result.

You see git does a good job when our changes are not in conflict, but
both have edited pom.xml around the same lines, so that have to be
fixed manually.

git status

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   pom.xml

Open pom.xml in an editor, which should highlight the merge conflict -
in this case:

<<<<<<< HEAD
                                        <excludes combine.children="append">

<!-- W3C Software License (See NOTICE) -->

<exclude>**/src/test/resources/test-spreadsheet*</exclude> <!--  Our
own test spreadsheets -->

<exclude>**/src/main/resources/json2.js</exclude><!-- public domain
>>>>>>> apache/cwl-browse

So Thilina has added a new <module>, but someone has added a new
<plugin> configuration in the apache repository. In this particular
case we want both changes to survive, so we can simply remove the <<<<
==== and >>> markers, and also remove the then duplicate </modules>

Then we scan the rest of the files for any more <<< markers.. which
there are none.

Run mvn clean

to be sure the pom.xml parses still.

so we tell git we have solved the conflict in this file:

git add pom.xml

git status

should now have all in green, so we can commit the merge

git commit

(the default message for merges are generally OK unless we had to do
some other change)

now we can push to github again

git push

and the pull request should update and be happy.. as now your pull
request can be merged without conflicts.

Note that it's also possible to use "git rebase" instead of git merge
- in some ways this is cleaner as it means your branch will be
rewritten to be added on top of the latest commits - but this can
sometimes give you many more conflicts to solve, e.g. because you have
done many commits, or it's been a long time since last time you
rebase. Also if you use git rebase to rewrite your history, you would
need to use "git push --force" to rewrite history also on your github

More info from the Git book, with fancy graphics:


Stian Soiland-Reyes
Apache Taverna (incubating), Apache Commons

View raw message