Was Sie erreichen werden
Sie werden absichtlich einen Merge-Konflikt erstellen, durch die Auflosung gehen und die Tools und Muster lernen, die Konflikte unbeangstigend machen.
Schritt 1: einen Sandbox einrichten
mkdir conflict-tutorial && cd conflict-tutorial
git init
cat > recipe.txt <<'EOF'
Tomato Sauce Recipe
Ingredients:
- 1 onion, chopped
- 2 cloves garlic
- 1 can tomatoes
EOF
git add recipe.txt
git commit -m "Initial recipe"
Schritt 2: zwei divergierende Branches erstellen
git checkout -b add-basil
sed -i.bak 's/2 cloves garlic/2 cloves garlic\n- handful of basil/' recipe.txt && rm recipe.txt.bak
git commit -am "Add basil"
git checkout -b add-oregano main
sed -i.bak 's/2 cloves garlic/2 cloves garlic\n- pinch of oregano/' recipe.txt && rm recipe.txt.bak
git commit -am "Add oregano"
Schritt 3: den Konflikt auslosen
git checkout main
git merge add-basil
git merge add-oregano
CONFLICT (content): Merge conflict in recipe.txt
Automatic merge failed; fix conflicts and then commit the result.
Schritt 4: die Konflikt-Marker lesen
<<<<<<< HEAD
- handful of basil
=======
- pinch of oregano
>>>>>>> add-oregano
Schritt 5: auflosen
- 2 cloves garlic
- handful of basil
- pinch of oregano
- 1 can tomatoes
Schritt 6: stagen und Merge abschliessen
git add recipe.txt
git status
git merge --continue
git commit
Tools, die helfen
git mergetool
git config --global merge.tool vimdiff
Abbrechen
git merge --abort
Haufige Muster
- Eine Seite ganz nehmen.
- Beide nehmen.
- Den Merge neu starten.
Vor dem Auflosen inspizieren
git diff
git log --merge -p <file>
git show :1:<file>
git show :2:<file>
git show :3:<file>
Rerere fur wiederholte Konflikte
git config --global rerere.enabled true