Вам нужно будет перебазировать и снова попытаться разрешить конфликты. Это может быть просто или немного сложнее. Если это просто, вам нужно только отменить слияние и исправить файлы, которые были удалены. Попробуйте это:
git rebase -i HEAD~1
Вам будет представлен экран с вопросом, что вы хотите сделать с каждым коммитом.
Это будет что-то вроде:
pick bb009b7 merge commit
# Rebase 9775146..bb009b7 onto 9775146
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Изменить выбор, чтобы редактировать, сохранить и выйти из редактора. Теперь вы вернулись в коммит слияния. Run:
git checkout <id of the previous commit> <filename>
git commit --amend
git rebase --continue
Это должно исправить это. Если этого не произойдет, вам придется вернуться дальше, и это может быть более сложным.
Я бы предположил, что это будет примерно так:
# rebase the last three commits, assuming:
# the oldest is your most recent changes
# the next is your co-worker's
# the last is the merge
# You can probably go back only two but I generally
# go back one extra just to see that things are as I
# expect.
git rebase -i HEAD~3
Вам будет представлен экран с вопросом, что вы хотите сделать с каждым коммитом.
Это будет что-то вроде:
pick 8d25cf0 Your changes
pick e9ddd29 His changes
pick bb009b7 merge
# Rebase 9775146..bb009b7 onto 9775146
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
Оставьте первую строку как есть. Изменить выбор во втором редактировать. Последнее, что я думаю, вы тоже хотите отредактировать.
Запишите и сохраните это, и начнется перебазировка. Он пройдет через первый коммит и остановится на втором. Ваши файлы должны отсутствовать. Теперь вы хотите запустить:
git checkout <id of the previous commit> <filename>
И это восстановит файлы, удаленные вашим коллегой.
Затем запустите:
git commit --amend
git rebase --continue
Когда вы доберетесь до коммита слияния, просто проверьте, чтобы все было так, как вы ожидаете. Если файлы отсутствуют, попробуйте проверить их снова. Затем внесите изменения и продолжите. Теперь у вас должно быть все, что вам нужно.
Если вы чувствуете, что что-то идет не так в любой момент
git rebase --abort
Это вернет вас туда, откуда вы начали, и вы можете попробовать снова.