2014-10-17 3 views
0

Я очищал некоторые проблемы с отслеживанием и хотел удалить некоторые файлы из отслеживания. Я испортил и удалил кучу файлов, которые я хочу восстановить. Неосознанно, я нажал на свой пульт в этом состоянии.Не удается вернуть удаленную ветку git до более раннего фиксации

Ну, время, чтобы вернуться и исправить ситуацию. К счастью, фиксация, которая мне нужна, находится в истории:

black-rainbows: scottnla$ git log -2 

commit 76fa0b491c2424d93b16c1fe002401eaa17d481e 
Author: scottnla 
Date: Thu Oct 16 21:57:57 2014 -0400 

    Fixed tracking issue 

commit 078cf16ee1bebfe7130b79d5958ecb0baf855002 
Author: scottnla 
Date: Thu Oct 16 21:55:50 2014 -0400 

    Finished preliminary analysis script 

Хорошо, все не потеряно. Поэтому я могу просто использовать git reset --hard, чтобы получить то, что хочу, не так ли?

black-rainbows: scottnla$ git reset --hard 

078cf16ee1bebfe7130b79d5958ecb0baf855002 
HEAD is now at 078cf16 Finished preliminary analysis script 

Фуэ. Я проверяю файлы, и это точно, где я хочу, чтобы все было.

Поэтому я стараюсь добиваться этого совершить обратно на удаленный ...

black-rainbows:scottnla$ git push origin master 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to <git> 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

И теперь это только что получил очень грязно. Я пробовал разные способы потянуть и слить пульт с моей текущей ветвью, но он всегда удаляет файлы (как это имеет смысл, так как я только что вернул историю и продолжаю переписывать коммиты).

Теперь, когда моя локальная версия репо - это именно то, что я хочу, как я могу нажать это на пульт?

ответ

2

Если вы абсолютно уверены, что

Теперь, когда моя локальная версия репо именно то, как я хочу, как я могу нажать эту на пульт дистанционного управления?

, то вы можете сделать

git push -f remote-name branch-name

в вашем случае

git push -f origin master

The -f означает, что вы хотите, чтобы принудительно раздвигать изменения. Это не очень хорошая идея, если вы работаете с другими людьми.

Смежные вопросы