On , I learnt ...
How to resolve Git rebase conflicts on renamed files
If there’s been a large-scale renaming of files in master
and you attempt to
rebase your pull-request branch, the resulting conflicts can be tricky to
resolve. You’ll see lots of conflicts of form:
CONFLICT (modify/delete): $FILEPATH deleted in HEAD and modified in $SHA... $COMMIT_MSG
One resolution is to manually apply the changes in $SHA
to the new filepaths
but this is manual and error-prone.
Better is to use git diff
to generate patch files and apply these with
patch
.
Run this for each filepath modified in your PR but deleted in master
:
git show REBASE_HEAD $OLD_FILEPATH | patch $NEW_FILEPATH
Note, REBASE_HEAD
is a useful pseudo-ref for the conflicting commit from the
ongoing rebase.
If you’re interested, I’ve written previously about resolving Git conflicts during a Git rebase.