0

In a project a subcontractor moved some files around in the tree, did a commit (Git marked them as deleted), used git add to re-add them to the tree. That happened several commits ago. Before I merge the changes back into my tree, I'd like to fix this. How can I "reconnect" these files at the right place in the git history?

Update

Okay, so, because people are suggesting a commit undo. That's not what I want (I think).

Imagine the following situation

A
|
|\
| \
|  B
|   mv file_x file_y
|   git commit 1
|   |
|   |
|   git commit 2
|   |
|   |
|   git commit 3
|   |
|   |
|   git add file_y
|   git commit 4
| /
|/
|

I'd like to "splice" the history of file_x up to commit 1 with file_y since commit 4 without loosing any of the other changes that happened in between and commits 1 and 4.

Community
  • 1
  • 1
datenwolf
  • 159,371
  • 13
  • 185
  • 298

1 Answers1

1

One possibility would be to create a second branch, reset the first branch to prior to the offending commit, then cherry-pick the desirable commits from the second branch.

git checkout branch1
git checkout -b branch2
git reset --hard <commit sha>
git cherry-pick <commit sha from branch 2>
...
isherwood
  • 58,414
  • 16
  • 114
  • 157