Я запутался с git, может кто-нибудь объяснить мне, что я сделал не так? - PullRequest
0 голосов
/ 28 сентября 2019

Я все еще изучаю git и использую его для практики и в качестве инструмента, чтобы сохранить мой прогресс в моих проектах.Я работаю со своего офисного компьютера и со своего домашнего компьютера в одном приложении.Я единственный, кто работает над этим.Вчера после того, как я закончил работать из дома, я, как всегда, выдвинул свои изменения, но по какой-то причине мерзавец жаловался (я, должно быть, сделал что-то не так раньше).Так что я сделал (если я правильно помню) git push origin master --force.

Сегодня на работе я попытался обновить свои локальные файлы, и я получил это сообщение:

C:\Users\nova\Desktop\ez-class>git pull origin master
From https://github.com/sickdyd/ez-class
 * branch            master     -> FETCH_HEAD
 + ace98f3...145956d master     -> origin/master  (forced update)
Already up to date.

Но ... это не такдо настоящего времени.Так что я гуглил, как разобраться в этом, и немного спеша, я предположил, что это был правильный путь: Git pull после принудительного обновления

Так вот, что я сделал (вздох):

C:\Users\nova\Desktop\ez-class>git fetch

C:\Users\nova\Desktop\ez-class>git reset origin/master --hard
HEAD is now at 145956d hello

C:\Users\nova\Desktop\ez-class>git pull
Already up to date.

C:\Users\nova\Desktop\ez-class>git pull origin master
From https://github.com/sickdyd/ez-class
 * branch            master     -> FETCH_HEAD
Already up to date.

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

РЕДАКТИРОВАТЬ: наконец, я должен признать, что git был довольноболь в заднице, просто чтобы синхронизировать файлы;ты знаешь лучшее решение?Диск Google не позволяет игнорировать подпапки (например, node_modules).

Ответы [ 2 ]

1 голос
/ 28 сентября 2019

все мои обновления в удаленном репозитории пропали

При принудительном переносе из дома в офис вы отменяете историю основного филиала офиса.

Когда у вас будет доступ к вашему офису, вы можете использовать git reflog, чтобы перечислить коммит, который был до вашего последнего принудительного пуша.Вы можете восстановить его в старое состояние .

Затем из дома:

  • снова клонировать офисное репо (в новой папке)
  • сообщить о последних изменениях
  • добавить, зафиксировать и нажать

В общем, для синхронизации файлов Стив Гибсон упоминает несколько вариантов в " Стивном путешествии по файлу Стива "

0 голосов
/ 28 сентября 2019

Что могло случиться, если вы отредактировали историю с помощью чего-то вроде перебазирования, или вы оказались в другой ветке, в которой не было ваших обновлений.Git выдает это предупреждение, когда история ваших веток не совместима, и --force перезаписывает эту историю вместо простого добавления новых коммитов.Мне нравится использовать git push и по умолчанию использовать ветку с тем же именем вместо git push origin master.Это помогает предотвратить что-то вроде подталкивания к мастеру из-за неправильной устаревшей ветви.

Хорошая вещь в git состоит в том, что он не удаляет коммиты, он только создает новые.Ваш компьютер с правильными обновлениями все еще имеет их.Вы можете найти их с помощью git reflog.Это показывает историю вашего коммита HEAD, который меняется по мере выполнения вашей работы.Вы можете найти коммит, который выглядит правильно, и запустить git checkout <commit-id>, чтобы увидеть, является ли это состояние, которое вы хотите.Затем вы можете либо создать новую ветвь для этого коммита (git checkout -b recovery-test), либо просто переключиться обратно на мастер и сбросить мастер на этот коммит (git checkout master; git reset <commit-id>).

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