Skip to content

Instantly share code, notes, and snippets.

@sthesing
Last active December 19, 2015 00:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sthesing/2509c2a6f5604f4f06e8 to your computer and use it in GitHub Desktop.
Save sthesing/2509c2a6f5604f4f06e8 to your computer and use it in GitHub Desktop.
Merge-Conflict Infos für nitramred

Wenn du Veränderungen an einer Datei vornimmst, und Christian auch und das ganze dann zusammengefügt wird, dann meldet Git in der Regel einen Konflikt, was erstmal nur heißt, dass ein Mensch sich das angucken muss und entscheiden muss, welche Version der Datei denn bestehen bleiben soll.

##Die händische Variante: Du öffnest die Datei einfach, und suchst nach "<<<<<<<". Vermutlich findest du so etwas:

<<<<<<< HEAD
Auf ADN: <a href="http://alpha.app.net/supicast">@supicast</a>
=======
Auf ADN:<br />
<a href="http://alpha.app.net/demo" rel="me">@demo</a>
>>>>>>> master

Was zwischen "<<<<<<< HEAD" und "=======" steht, ist dein Stand der Datei, was zwischen "=======" und ">>>>>>> master" steht, ist der Stand der Datei in dem branch, mit dem du mergen willst (in diesem Beispiel: master).

Du musst nun die Datei so bearbeiten, wie sie deines Erachtens am Ende aussehen soll. Es gibt jetzt verschiedene Szenarien:

  • Wenn du Christians Änderung ignorieren willst und deine Version behalten willst, dann entfernst du alles von "=======" bis">>>>>>> master" und das "<<<<<<< HEAD". Übrig bleibt:
Auf ADN: <a href="http://alpha.app.net/supicast">@supicast</a>
  • Wenn Du lieber Christians Version behalten und deine verwerfen willst: Dann entfernst du alles von "<<<<<<< HEAD" bis "=======" und das ">>>>>>> master". Übrig bleibt:
Auf ADN:<br />  
<a href="http://alpha.app.net/demo" rel="me">@demo</a>
  • Oder es ist eine Mischung aus beidem. In diesem Beispiel würdest du vielleicht sagen, dass Christians Änderung an der Funktionalität gut ist (Zeilenumbruch und das "rel=me" Attribut dem Link hinzugefügt), du aber dennoch deine eigenen Daten statt der Demodaten drinhaben willst. Am Ende stünde:
Auf ADN:<br />  
<a href="http://alpha.app.net/supicast" rel="me">@supicast</a>

Wie auch immer du dich entscheidest, am Ende muss bei jeder Datei, in der Konflikte markiert sind, der Zustand hergestellt werden, den du haben willst, und die ganzen Steuerzeichen ("=======", ">>>>>>> master" , "< <<<<<< HEAD") müssen entfernt sein. Dann das ganze noch committen:

git commit -a

Mit Tools:

Es gibt auch diverse Tools, die einem helfen, das ganze komfortabler über die Bühne zu bringen. Ich mag keins davon, aber vielleicht ist das bei dir anders. Gib mal git mergetool in der Konsole ein. Git hat eine interne Liste mit geeigneten Tools und prüft jetzt, ob eins davon installiert ist. Falls ja, wird es direkt gestartet, falls nein, zeigt es dir die Liste und du kannst die einzelnen Tools dann installieren und ausprobieren. Vielleicht ist da was dabei, das dir zusagt.

##Zum Nachlesen: http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging#Basic-Merge-Conflicts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment