2013-06-01 3 views
-2

Я испортил свой код, и, к сожалению, я сделал несколько коммитов уже и нашел ошибку, которая выглядит как миф для исправления, поэтому единственное решение должно состоять в том, чтобы получить копию, которую я загрузил в github раньше (что не прикрученная версия). (О спасибо ВЕЛИКОГО GitHub!)Как откат к github совершить?

Я попытался запустить git clone https://github.com/username/Spoon-Knife.git

remote: Counting objects: 253, done. 
    remote: Compressing objects: 100% (150/150), done. 
    Receiving objects: 64% (162/253), 20.00 Kremote: Total 253 (delta 119), reused 
    Receiving objects: 66% (167/253), 20.00 KiB | 15 KiB/s 
    Receiving objects: 100% (253/253), 60.99 KiB | 15 KiB/s, done. 
    Resolving deltas: 100% (119/119), done. 

но это, похоже, не работает. Некоторые файлы остались без изменений. Как с этим бороться? вытащить из удаленной версии github?

+0

Этот вопрос был дан ответ в тысячу раз здесь – Jason

+0

проверяют вас из свежей копии или каким-то образом пытается вернуть копию с нежелательными фиксаций? Свежая копия должна, очевидно, содержать только то, что находится в репо, которое вы клонируете. – tripleee

+0

@ Джейсон, но я не нашел ответа через Google. Я не знаю, какое правильное слово для pull/rollback – cqcn1991

ответ

1

Вы можете сделать это:

git reset --hard <old-commit-id> 
git push -f 
0

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

git rebase -i HEAD~3 

-i означает, что перебазирования является интерактивным

ГОЛОВЫ ~ 3 означает, что вы будете работать с тремя последними фиксаций.

Запуск этой команды текстового редактора будет открыт с текстом, как этот

pick f7f3f6d changed my name a bit 
pick 310154e updated README formatting and added blame 
pick a5f4a0d added cat-file 

# Rebase 710f0f8..a5f4a0d onto 710f0f8 
# 
# Commands: 
# p, pick = use commit 
# e, edit = use commit, but stop for amending 
# s, squash = use commit, but meld into previous commit 
# 
# If you remove a line here THAT COMMIT WILL BE LOST. 
# However, if you remove everything, the rebase will be aborted. 
# 

Вы должны удалить первую строку с дрянной фиксацией, и выходом из текстового редактора. После завершения переустановки все изменения, которые были совершены по ошибке, будут удалены.

Проверьте, завершает ли история историю. Если это так, выполните следующую команду:

git push -f 

Эта команда будет перемещать указатель на вашу последнюю фиксацию.

Более подробную информацию о интерактивном Rebase вы можете получить здесь http://git-scm.com/book/en/Git-Tools-Rewriting-History

+0

Это действительно полезно. но ive дать кредит hbrock – cqcn1991

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