Alex Riesen [off-list ref] writes:
... IOW, copy the commit
resolution from some other merge commit. Maybe can be a way to use
rerere mechanism with that?
If you know which merge I did you want to steal from, you can prime your
rerere database by pretending to be me, doing the merge. Something like:
$ git checkout $merge^1 ;# detach to the parent of merge
$ git merge $merge^2 ;# pretend you were me to redo it
$ git diff -R $merge | git apply --index ;# and get what I did
$ git rerere ;# have rerere record the resolution
Junio C Hamano, Mon, Sep 01, 2008 12:38:25 +0200:
Alex Riesen [off-list ref] writes:
quoted
... IOW, copy the commit
resolution from some other merge commit. Maybe can be a way to use
rerere mechanism with that?
If you know which merge I did you want to steal from, you can prime your
rerere database by pretending to be me, doing the merge. Something like:
$ git checkout $merge^1 ;# detach to the parent of merge
$ git merge $merge^2 ;# pretend you were me to redo it
$ git diff -R $merge | git apply --index ;# and get what I did
I ended up using
$ git checkout Merge^1
$ git merge Merge^2
$ git diff -R Merge | git apply
$ git diff -R Merge --name-only -z | git update-index -z --stdin
$ git rerere
Just git apply --index complained about the files missing from the
index:
$ git tag Merge c5e2ace70271b481632aaf987361027ca4592df6
$ gco Merge^1
Previous HEAD position was c5e2ace... Merge branch 'jc/better-conflict-resolution' into next
HEAD is now at 2392877... Merge branch 'master' into next
$ git merge Merge^2
Auto-merging Documentation/config.txt
Auto-merging Documentation/git-checkout.txt
CONFLICT (content): Merge conflict in Documentation/git-checkout.txt
Auto-merging builtin-checkout.c
CONFLICT (content): Merge conflict in builtin-checkout.c
Auto-merging builtin-merge-recursive.c
Auto-merging t/t6023-merge-file.sh
Auto-merging t/t7201-co.sh
CONFLICT (content): Merge conflict in t/t7201-co.sh
Auto-merging xdiff-interface.c
Auto-merging xdiff-interface.h
Recorded preimage for 'Documentation/git-checkout.txt'
Recorded preimage for 'builtin-checkout.c'
Recorded preimage for 't/t7201-co.sh'
Automatic merge failed; fix conflicts and then commit the result.
$ git diff -R Merge |git apply --index
error: Documentation/git-checkout.txt: does not exist in index
error: builtin-checkout.c: does not exist in index
error: t/t7201-co.sh: does not exist in index
$ git rerere ;# have rerere record the resolution
Well, it works, but it's a bit of work and hard to automate (needs a
working tree). An option to merge:
$ git merge <branch>
conflict ... investigate ... find a resolution in <resolution>
$ git reset --hard
$ git merge --rerere <resolution> branch
check... Ok.
$ git commit
or rerere:
$ git merge <branch>
conflict ... investigate ... find a resolution in <resolution>
$ git rerere <resolution>
$ git reset --hard
$ git merge <branch>
check... Ok.
$ git commit
These could be more convenient.