2

One of our developers copied a file from one branch to another and rewrote the file's history. What is the best way to restore it.

   original__________________________________________________(commits d)____(commits e)___(no commit history for a, b, c in master)
    |                                            |
    |                                         (copied)
    |                                            |
    |                                            |
    |__(commits a)__(commits b)___(commits c)_____
ir2pid
  • 5,604
  • 12
  • 63
  • 107

1 Answers1

2

Make a new branch from the original. This is your backup with every commit after the file was copied.

git checkout -b backup

Now reset original to the last commit before the file was copied over.

git checkout original && git reset SHA --hard  

Merge the branch with commits a-c into original.

git merge branchname

Check out your backup and rebase it

git checkout backup && git rebase original

You will have a merge conflict telling you 'both added x`, resolve this conflict and continue the rebase.

Now go back to original and merge the backup back

git checkout original && git merge backup

This should do it.

lukas-reineke
  • 3,132
  • 2
  • 18
  • 26