Okay, so I really like the git rerere command, although I haven't really used it that much other than letting it auto-magically record my conflicts and resolve them for me. However, I did mess up one of my conflict resolutions during quite a large rebase (rebasing a really stale feature branch with the latest release).
feature -> a - b - c - d
release -> e - f - g - h
rebase/feature -> e - f - g - h .
` a' - b' - c' - d'
So, say for instance that b' has an incorrect merge (thanks to me!), and I want to re-record that. How would I do it? I've seen the git checkout --conflict option, mentioned in Rerere Your Boat, but I'm not too clear on how that works and if it applies here. Maybe I have to checkout the merge conflict state and run git rerere once I correctly resolve this conflict?
Normally, I would just commit to the tip of the rebase branch, but it is a throw away. I'm just trying to handle conflicts ahead of time, so that when I sync up with that feature team, we minimize the time it takes. Make sense?
To simply remove all previous
rerereresolutions, runrm -rf .git/rr-cacheto remove the cache.For a specific merge, you can tell
rerereto forget the recorded resolution by re-executing the merge and allowingrerereto apply its recorded resolution in the work tree.You can check out
a'and then do agit merge bto get back into that situation (you'll probably be in a checkout of a detached head since you specified the commit hash ofa', so be aware that you're not on a branch).Then use
git rerere forget FILE-WITH-BAD-MERGEwhere to specify the file whose recorded conflict resolution should be forgetten.(From the Git documentation for git-rerere.)