В Git, как исправить удаление, а затем повторно добавить коммит, который находится в истории?

В проекте субподрядчик перемещал некоторые файлы в дереве, делал коммит (Git помечал их как удаленные), использовал git add повторно добавить их в дерево. Это произошло несколько коммитов назад. Прежде чем я объединю изменения в свое дерево, я бы хотел это исправить. Как я могу "переподключить" эти файлы в нужном месте в истории git?

Обновить

Ладно, так, потому что люди предлагают отменить. Это не то, что я хочу (я думаю).

Представьте себе следующую ситуацию

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

Я хотел бы "склеить" историю file_x до коммита 1 с file_y с коммита 4 без потери каких-либо других изменений, произошедших между ними и коммитов 1 и 4.

1 ответ

Решение

Одна из возможностей - создать вторую ветку, сбросить первую ветку до предшествующей фиксации, а затем выбрать нужные коммиты из второй ветви.

git checkout branch1
git checkout -b branch2
git reset --hard <commit sha>
git cherry-pick <commit sha from branch 2>
...
Другие вопросы по тегам