Как отменить git pull из несвязанного проекта? - PullRequest
3 голосов
/ 12 марта 2012

Я просто сделал что-то глупое. В моем проекте fooclient я просто сделал:

git remote add official https://github.com/fooserver
git pull official master

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

В этой конкретной ситуации я могу восстановиться, выполнив следующее:

cp file-i-worked-on.js ~
git reset --hard HEAD # to discard broken merge conflicts
git checkout a12345 # where a12345 is the latest head of fooclient that I had checked out
cp ~/file-i-worked-on.js .

Но какова будет более общая стратегия?

Ответы [ 4 ]

4 голосов
/ 12 марта 2012

Это вернет вас к последнему состоянию мастера, в котором было:

git reset --hard HEAD@{1}

Это возможно из-за reflog . Запуск git reflog покажет вам журнал и подтвердит, что вы возвращаетесь в правильное состояние.

0 голосов
/ 12 марта 2012

С этого момента

git fetch

Проверьте, что вы получили в gitk, git log или чем-то еще.Теперь объедините или измените то, что вы получили, туда, куда вы хотите.

0 голосов
/ 12 марта 2012
git stash
git reset --hard HEAD^
git stash apply
0 голосов
/ 12 марта 2012

После удаления ненужного пульта (git remote rm ...), просто git reset --hard до места, где вы хотите, чтобы ваша текущая ветвь была.

git reset --hard origin/master

Если вы были на master ранее, это сбрасываетсяваш master должен быть тем же местом, что и мастер вашего пульта дистанционного управления.Вот и все!

...