2009-08-30 4 views
2

Используя браузер истории MSYSGIT, я проверил конкретную фиксацию. Это была ошибка - я пытался просмотреть файлы и подумал, что должен проверить их, чтобы увидеть их.Отмена проверки в GIT

С тех пор я не смог больше нажать на мой удаленный репо (на GITHub). Который я несколько понимаю, хотя и не полностью. [Я признаю, что не совсем понимаю, как работает проверка, пожалуйста, будьте осторожны на noob.]

Как мне отменить этот чек и вернуть вещи в состояние, в котором они находились раньше?

Если я нажимаю правой кнопкой мыши на фиксацию 'checked out', я получаю возможность «удалить эту ветку». Удастся ли удалить файлы этого коммита [bad] или просто отменить проверку? Я лаяю неправильное дерево?

ответ

7

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

git checkout -b newbranch 

Затем фотографии, где вы были раньше:

git checkout master 

Надеемся, что это поставит вас обратно на ветку ветку и вы можете нажать на GitHub как обычно. Если после этого вы хотите, чтобы тянуть в изменениях, которые вы сделали, вы можете объединить и (как только вы счастливы) удалить временную ветвь:

git merge newbranch 
git branch -d newbranch 
+0

Если вы не хотите объединять всю новую ветку, вы также можете использовать одиночные коммиты из черри-забора. – Benno

+0

Кроме того, вы не сможете нажать мастер на пульт дистанционного управления, если кто-то еще добавил фиксацию на удаленный мастер. В этом случае сделайте «git pull», и после этого «git push» должен работать. –

+0

Отличная работа! Вот так! [Хотя вопрос был не так ясен.] Мне все еще интересно: что бы случилось, если бы я нажал «удалить эту ветку» в браузере истории msysgit? Удалили бы файлы? Или даже все сделанные после этого файла? – SamGoody

0

Ветвь - это в основном указатель, в терминологии на С ++.

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

git checkout mybranch 
git reset mypreviouscommit 

Это не удаляет фиксации, но он делает mybranch «пункт» mypreviouscommit. Итак, что бы там ни было на mypreviouscommit, там будет master.

+0

Чтобы убедиться, что я правильно понял это, - когда проверочная фиксация - 2e968f, и с тех пор я добавил еще одну фиксацию 2a45b0. Теперь я делаю «git reset 2e968f», и я должен был, как и раньше, испортить, никаких проверочных коммитов, а 2a45b0 является последней регулярной фиксацией. – SamGoody

+0

Попытка сброса сбросила ошибку. fatal: Не удалось проанализировать объект «2e968fd7bf2018680856316e3133c610284d9619». Пожалуйста помоги. – SamGoody

-1

Если вы не возражаете потерять все изменения, которые вы сделали после последнего нажатия на GitHUB вы можете просто удалить свой каталог и

git clone ... 

новый, новый.

+1

Я не против потерять свои другие коммиты, но его идея иметь в виду. Кстати, я нахожу это отношение очень распространенным в GIT (например, сегодня я встретил этот комментарий: «Интересно, никогда не сталкивался с этой проблемой, потому что я периодически воссоздавал свою вилку у мастера. вкладов, но эй ... »[Разве это не очень грустное отражение неосуществимости использования GIT ?!] – SamGoody