Ik ben een samenvoeg conflict tegengekomen. Hoe kan ik de samenvoeging afbreken?
Ik gebruikte git pull
en had een samenvoeg conflict:
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Ik weet dat de andere versie van het bestand goed is en dat de mijne slecht is, dus al mijn wijzigingen moeten worden losgelaten. Hoe kan ik dit doen?
2374
3
Aangezien je
pull
niet succesvol was, isHEAD
(nietHEAD^
) de laatste "geldige" commit op je branch:Het andere stuk dat je wilt is om hun wijzigingen jouw wijzigingen te laten overschrijven.
Oudere versies van git stonden je toe om de "theirs" samenvoeg strategie te gebruiken:
Maar dit is sindsdien verwijderd, zoals uitgelegd in dit bericht door Junio Hamano (de Git onderhouder). Zoals opgemerkt in de link, zou je in plaats daarvan dit doen:
Ik denk dat je een 'git reset' nodig hebt.
Let op dat
git revert
iets heel anders betekent dan, laten we zeggen,svn revert
- in Subversion zal de revert je (niet vastgelegde) wijzigingen ongedaan maken, en het bestand terugzetten naar de huidige versie van het archief, terwijlgit revert
"undoes" een commit ongedaan maakt.git reset
zou het equivalent vansvn revert
moeten doen, dat wil zeggen, het verwijderen van je ongewenste wijzigingen.In dit specifieke geval wil je de samenvoeging niet echt afbreken, maar alleen het conflict op een bepaalde manier oplossen.
Er is ook geen specifieke noodzaak om te resetten en een samenvoeging met een andere strategie uit te voeren. De conflicten zijn correct gemarkeerd door git en de eis om de wijzigingen van de andere kant te accepteren is alleen voor dit ene bestand.
Voor een unmerged bestand in een conflict maakt git de gemeenschappelijke basis, lokale en remote versies van het bestand beschikbaar in de index. (Dit is waar ze vandaan gelezen worden voor gebruik in een 3-weg diff tool door
git mergetool
). Je kuntgit show
gebruiken om ze te bekijken.De eenvoudigste manier om het conflict op te lossen om de remote versie woordelijk te gebruiken is:
Of, met git >= 1.6.1: