В 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>
...