2015-08-14 5 views
1

Я клонирую свой собственный репозиторий от github к локальной машине, сделаю небольшое изменение, затем git push. В git log нравится это:Как можно удалить удаленный репозиторий git?

3: xxxxx 
2: yyyyy 
1: zzzzz 

я вдруг есть ошибка в commit 3, так и в локальном хранилище, я git reset 2 первый, изменить файл снова, а затем git commit его. Так git log изменения к этому:

4: ttttt 
2: yyyyy 
1: zzzzz 

На этот раз, когда я git push origin, то git жалуется:

To https://github.com/NanXiao/torch.git 
! [rejected]  patch-1 -> patch-1 (non-fast-forward) 
error: failed to push some refs to 'https://github.com/NanXiao/torch.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Integrate the remote changes (e.g. 
hint: 'git pull ...') before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Так как я могу восстановить удаленный репозиторий? Сделать удаленного репозитория git log так:

4: ttttt 
2: yyyyy 
1: zzzzz 
+0

Если вы обнаружили ошибку в commit 3, тогда правильная команда 'git revert 3'. Если вы выполнили 'git revert 2', то это отменяет хорошее изменение' yyyyy' и оставляет неповрежденным неправильное изменение 'xxxxx'. –

+0

Мне очень жаль, это 'git reset 2'. –

+0

Нет, это не так. Выполнение 'git reset' не оставит вас с новой фиксацией. –

ответ

2

Напомним, что вы на самом деле сделал для вашей отрасли, вы начали с этим:

3: xxxxx 
2: yyyyy 
1: zzzzz 

Вы решили, что проблема с совершить 3 так вы сбросили атомную бомбу его с помощью git reset --hard HEAD~1, оставив вас с этим:

2: yyyyy 
1: zzzzz 

Затем вы сделали РЭБ фиксации на верхней части этой отрасли:

4: ttttt 
2: yyyyy 
1: zzzzz 

Ошибка non-fast-forward вы видели, имеет смысл, так как Git не имеет возможности простого добавления совершить 4 на вершине удаленной ветки, которые либо еще заканчивается совершить 3или заканчивается другой коммит, который кто-то еще сделал поверх фиксации 3.

Это, как говорится, если вы хотите, чтобы заставить вашу текущую ветку в хранилище, вы можете сделать это с помощью:

git push origin your_branch --force 

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

+0

Мне очень жаль, это 'git reset 2'. –

+1

'git push origin your_branch --force' - моя потребность, спасибо! –

+0

@NanXiao Да ... это мое чувство от чтения вашего обновленного вопроса. Я также обновлю свой ответ. –

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