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
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.
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