Подтвердить что ты не робот

Отмена плохой нагрузки

Прежде всего, Git отстой. Я знаю, я знаю, это должно быть лучше всего после нарезанного хлеба, но это отстой. Это похоже на попытку сбрить бензопилой: одна небольшая ошибка, и везде есть кровь и зубы. Возможно, если бы я мог точно провести различие между головой, рефлексией, фиксацией, ветвью, стеблем, гнаргелем и whizpoo, некоторые из них могли бы быть немного легче, но обычным смертным с 10 годами опыт SVN, Perforce и RCS, все это выглядит как довольно капризная черная магия.

Теперь по какой-то причине git pull никогда не работал у меня. Я получаю сообщение о 10-строчной ошибке, которое до сих пор было так же полезно, как и слово "ошибка". В результате сообщения об ошибке появилось множество предложений, которые имели только общий факт, что они не оказали никакого влияния. Но это не проблема сегодня: я привык печатать git pull origin branch.

Сегодня я переворачивался между двумя ветвями: "мастер" и "гостиная", и в тот момент я был в мастер-ветке. Я хотел получить последние изменения из удаленного репозитория на локальный, но я ошибся. Вместо написания git pull origin master я написал git pull origin lounge, а затем, не задумываясь, набрал правильную команду.

Нет никаких признаков первого (плохого) вытягивания в журнале, всего два слияния с мастером:

commit 0c6be9569bab0581244ea8603bf2edfee82cdd7b
Merge: 43fdec5... db09f0d...
Author: Malvolio <[email protected]>
Date:   Wed Nov 24 20:38:58 2010 -0500

Merge branch 'master' of github.com:xcompanyx/xRepositoryX

commit db09f0d79d744d6a354142041b47ff5d748999f3
Merge: 81b6c3d... fc73e25...
Author: Malvolio <[email protected]>
Date:   Wed Nov 24 17:38:16 2010 -0800

Merge branch 'master' of github.com:xcompanyx/xRepositoryX

commit 81b6c3d04b7c464f8750a56282635526a5ef83a1
Author: Michael <[email protected]>
Date:   Wed Nov 24 17:38:07 2010 -0800
    the last commit I did

Но файлы, созданные в ветке lounge, находятся в моем репозитории.

Итак, теперь я fscked, не так ли? Должен ли я просто сжечь свой репозиторий, снова клонировать удаленный компьютер, повторно применить все измененные изменения вручную и записать его до Git сосать или есть какое-то заклинание, которое я могу прочесть, и все это улучшится? Помогло бы мне, если бы я пожертвовал козой?

4b9b3361

Ответ 1

Используйте git reflog, чтобы увидеть, что указала ваша ГОЛОВА, прежде чем вы ее привинтили.

Вы должны увидеть что-то вроде:

48ab8d [email protected]{0}: pull: Fast-forward
a34bda [email protected]{5}: commit: my last commit message

Теперь, наведите свою главную ветку назад на фиксацию перед неудачным нажатием:

git reset --hard a34bda

Готово. Как будто этого не случилось.

Ответ 2

Я не могу полностью понять вашу историю из вашего вопроса, но в целом, если вы делаете два слияния (вытягивание - это слияние), совершенно просто удалить один из них.

- o - o - o - A - M1 - M2 (master)
                 /    /
      - o - o - o    /   (origin/lounge)
                    /
             - o - o (origin/master)

Самый очевидный способ:

 git checkout master
 git reset --hard A
 git merge origin/master

Здесь используется локальная кешированная версия оригинала, если вы хотите объединить все, что там есть, используйте git pull origin master.