GIT в VS2017r - Как мне восстановить систему из командного обозревателя git Repo Sync, которая не удалась, потому что подсказка находится за удаленной подсказкой - PullRequest
0 голосов
/ 30 августа 2018

Как вернуть синхронизацию мастер-ветвей моего удаленного репо и локального репо в Team Explorer?

Положение: У меня есть код приложения в VSTS в удаленном репозитории Git. Я делаю всю свою работу в Master, обычно на своем локальном (Dallas) компьютере, и использую VS 2017 Team Explorer "SYNC", чтобы периодически синхронизировать его с удаленным репозиторием в VSTS.

25 августа я внес некоторые изменения в код, но еще не зафиксировал их. 26 августа мне пришлось отправиться с трехдневным визитом в Остин. В Остине мне пришлось внести некоторые изменения в код, поэтому я клонировал репозиторий из VSTS на свой ноутбук, внес изменения, зафиксировал их (см. Commit 8af в журнале ниже) и синхронизировал с VSTS.

По возвращении в Даллас 29 августа я вошел в локальную машину, понял, что у меня есть некоторая незафиксированная работа, и выполнил ее (см. Коммит 310 в журнале ниже). Затем я попытался выполнить синхронизацию с мастером на VSTS и получил ошибку « tip is » (см. Журнал ниже).

Попробовал тянуть и получил еще одну ошибку:

Операция извлечения не удалась. Извлечение перезапишет ваши локальные изменения в следующие 3 файла:

.vs/slnx.sqlite
/Account/Logout.cshtml
/App_Data/RESTORE BackupFile to SQL 2016 localdb.sql

С этого момента, пытаясь следовать (полезным?) Подсказкам и сообщениям об ошибках, я попал в еще более серьезную проблему, добавил еще несколько локальных коммитов и теперь совершенно сбит с толку. Прелесть интеграции Git в VS 2017 состоит в том, что она не дает вам возможности узнать много нового о Git. Это тоже зло в этой настройке! Я довольно невежествен, когда мне приходится работать под абстракциями VS 2017

Я хочу закончить с историей в происхождении и в местном репозитории Далласа, чтобы выглядеть так

 Commit     ORIGIN  Local      Notes
 3d6                X(HEAD)    X(HEAD)  
 db9                X          X
 5e6                X          X
 310                X          X
 8af                X          X
 aa8                X          X   

В отличие от текущего состояния:

 Commit           ORIGIN     Local
 3d6                           X(HEAD)  
 db9                           X
 5e6                           X
 310                           X
 8af                X(HEAD)
 aa8                X          X    (common parent of 8af and 3d6)

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

Моя ситуация, кажется, не подходит ни к одному из решений, которые я смог найти с помощью Google и переполнения стека.

Мое лучшее предположение - git push -f. Я единственный, кто работает над этим приложением. Тем не менее, я волнуюсь, учитывая все предупреждения об опасностях git push -f. Если я сделал git push -f в приведенном выше сценарии, что будет перезаписано? Я предполагаю, что это будет коммит 8af (который находится только на мастере источника и имеет общего родителя с последними коммитами, которые будут выдвинуты. Это правильное предположение?

Буду признателен, если кто-нибудь скажет мне, что мне нужно здесь делать.

отредактированный ("объединенный") журнал (Все коммиты, сделанные изменения и т. Д. Были в ветке Мастер) C: \ Users \ rrrob \ Source \ VS2017Rafino> git log

commit 3d6 (HEAD -> master) NOT IN ORIGIN Четверг 30 августа 08:38:18 2018 -0500

commit db9 Ср 29 августа 16:01:53 2018 -0500 NOT IN ORIGIN

совершить 5e6 ср. 29 августа 15:08:24 2018 -0500 НЕ В ПРОИСХОЖДЕНИИ

29 августа вернулся в Даллас, передал ранее незафиксированные изменения в Master и попытался выполнить синхронизацию. Получено «Произошла ошибка при отправке в удаленный репозиторий: отклонено Обновления были отклонены, поскольку кончик вашей текущей ветки находится за своим удаленным аналогом. Интегрируйте удаленные изменения перед повторной отправкой». попытался извлечь) (возможно, получить?) из источника и получил дополнительную ошибку: «Операция извлечения не удалась». совершить 310 ср. 29 августа 15:05:47 2018 -0500 НЕ В ПРОИСХОЖДЕНИИ (родитель aa8)

26 AUG отправился в Остин, клонировал репо, внес изменения в мастер, зафиксировал и синхронизировал с мастером в источнике совершать 8af Вт 28 августа 12:56 17:56 (UTC) НЕ В Далласе Локальный репо (родитель aa8)

ПОСЛЕДНЯЯ успешная синхронизация в Team Explorer совершить aa8 чт 16 августа 15:10:06 2018 -0500 в Далласе и в происхождении

commit a8b Вт. 14 августа 10:32:43 2018 -0500

1 Ответ

0 голосов
/ 02 сентября 2018

После долгих поисков в гугле и с большим трепетом (так как я не смог найти ничего, что бы точно соответствовало моим обстоятельствам), я сделал следующее:

(1) Я сделал git stash, чтобы сохранить изменения в stash

(2) Произвел подтягивание - возникло 2 конфликта (оба для файлов sql lite, которые неожиданно появились в моем решении после перехода на VS 2017 с VS 2013)

(3) Решил 2 «обоих измененных» конфликта, добавив к ним git add

(4) Передали результаты всего этого

(5) Назад к VS Team Explorer для синхронизации - успех!

Там не было никакого навыка, просто чистая удача. Любой набег на собственно мерзавец - это, по крайней мере, для меня, путешествие в белое.

Я подозреваю, что причиной этого было внесение изменений в клонированный репо (пока я был в дороге) в Мастер ветке . Вероятно, мне следовало сделать это в новой ветке , перенести новую ветку на удаленный, а затем выдать запрос на извлечение, чтобы напомнить мне о необходимости слияния новой ветки, как только я вернусь в свое домашнее местоположение.

С другой стороны, я верю, что когда MS представила БД SQLlite для отслеживания состояния IDE, они не учли его влияние на Team Explorer. Несмотря на то, что у меня есть каталог .VS в файле игнорирования, изменения в базе данных всегда отображаются в окне изменений в Team Explorer. Смешение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...