Naletel sem na konflikt pri združevanju. Kako lahko prekinem združevanje?

Uporabil sem git pull in imel konflikt pri združevanju:

unmerged:   _widget.html.erb

You are in the middle of a conflicted merge.

Vem, da je druga različica datoteke dobra in da je moja slaba, zato je treba vse moje spremembe opustiti. Kako lahko to storim?

Ker je bil vaš pull neuspešen, je HEAD (in ne HEAD^) zadnja "veljavna" oddaja v vaši veji:

git reset --hard HEAD

Drugi del, ki ga želite, je dovoliti, da njihove spremembe preglasijo vaše spremembe.

Starejše različice sistema git so omogočale uporabo strategije združevanja "theirs":

git pull --strategy=theirs remote_branch

Vendar je bila ta možnost odstranjena, kot je pojasnjeno v tem sporočilu Junija Hamana (vzdrževalca sistema Git). Kot je navedeno v povezavi, bi namesto tega naredili tole:

git fetch origin
git reset --hard origin
Komentarji (11)

Mislim, da potrebujete git reset.

Pazite, da git revert pomeni nekaj povsem drugega kot na primer svn revert - v Subversion bo revert zavrgel vaše (nepotrjene) spremembe in vrnil datoteko v trenutno različico iz skladišča, medtem ko git revert "prekliče" potrditev.

git reset bi moral narediti enako kot svn revert, torej zavreči vaše nezaželene spremembe.

Komentarji (0)

V tem posebnem primeru uporabe v resnici ne želite prekiniti združevanja, temveč le rešiti konflikt na določen način.

Prav tako ni posebne potrebe po ponastavitvi in izvedbi združitve z drugo strategijo. Konflikte je git pravilno izpostavil in zahteva po sprejetju sprememb druge strani se nanaša samo na to eno datoteko.

Za neusklajeno datoteko v konfliktu git v kazalu da na voljo skupno osnovno, lokalno in oddaljeno različico datoteke. (Od tod se berejo za uporabo v orodju za tristransko razlikovanje git mergetool). Za njihov ogled lahko uporabite git show.

# common base:
git show :1:_widget.html.erb

# 'ours'
git show :2:_widget.html.erb

# 'theirs'
git show :3:_widget.html.erb

Najpreprostejši način za rešitev konflikta, da se dobesedno uporabi oddaljena različica, je:

git show :3:_widget.html.erb >_widget.html.erb
git add _widget.html.erb

Ali pa z git >= 1.6.1:

git checkout --theirs _widget.html.erb
Komentarji (3)