Viac na
Narazil som na konflikt pri spájaní. Ako môžem prerušiť zlučovanie?
Použil som git pull
a došlo ku konfliktu pri zlučovaní:
unmerged: _widget.html.erb
You are in the middle of a conflicted merge.
Viem, že druhá verzia súboru je dobrá a že moja je zlá, takže všetky moje zmeny by mali byť zrušené. Ako to môžem urobiť?
2374
3
Keďže vaše
pull
bolo neúspešné, potomHEAD
(nieHEAD^
) je posledná "platná" revízia vo vašej vetve:Druhá časť, ktorú chcete, je nechať ich zmeny prekrývať vaše zmeny.
Staršie verzie systému git umožňovali použiť stratégiu "ich" zlučovania:
Táto možnosť však bola medzitým odstránená, ako je vysvetlené v tejto správe od Junio Hamano (správca systému Git). Ako je uvedené v odkaze, namiesto toho by ste mali urobiť toto:
Myslím, že potrebujete
git reset
.Dajte si pozor, že
git revert
znamená niečo úplne iné ako napríkladsvn revert
- v Subversion revert zruší vaše (nekomitované) zmeny a vráti súbor do aktuálnej verzie z úložiska, zatiaľ čogit revert
"zruší" commit.git reset
by mal vykonať ekvivalentsvn revert
, t. j. zahodiť vaše nechcené zmeny.V tomto konkrétnom prípade použitia v skutočnosti nechcete prerušiť zlučovanie, len vyriešiť konflikt určitým spôsobom.
Nie je tiež potrebné vynulovať a vykonať zlúčenie s inou stratégiou. Konflikty boli správne zvýraznené systémom git a požiadavka akceptovať zmeny druhej strany sa týka len tohto jedného súboru.
Pre nezlúčený súbor v konflikte git sprístupňuje v indexe spoločnú základnú, lokálnu a vzdialenú verziu súboru. (Odtiaľ sa načítajú na použitie v nástroji na trojcestné porovnávanie pomocou nástroja
git mergetool
). Na ich zobrazenie môžete použiťgit show
.Najjednoduchší spôsob riešenia konfliktu na doslovné použitie vzdialenej verzie je:
Alebo pomocou git >= 1.6.1: