Как ориентироваться во времени относительно git коммитов? - PullRequest
0 голосов
/ 07 августа 2020

Итак, вот подробный рассказ о моей временной шкале в отношении проекта, над которым я работаю. Имейте в виду, что все было сделано в одной и той же главной ветке.

  • Вчера - Сделано несколько коммитов в удаленном репозитории проекта, обновив файл README и добавив файл соглашения LICENSE .
  • Сегодня , в 08:00 - Решил поработать над своим проектом и написать код, ничего не вытащил и не получил из удаленного репозитория.
  • 17: 34PM - В моем локальном репозитории было 7 коммитов. Решил сделать sh мой локальный коммит на удаленное репо, чтобы вызвать его, а затем, сделав это, git предупредил меня, что локальный и удаленный репозитории разошлись . Так как у меня отстойно git, я скопировал файлы, с которыми работал, в другую папку (из соображений предосторожности не хотел терять свою работу), а затем набрал следующие команды, чтобы попытаться решить проблему:
git fetch
git pull
git commit
git reset --hard origin/master
git fetch
git pull

Я думаю, что со всем этим произошло следующее:

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

Затем я удалил все файлы и вставил на их место файлы со всем кодом, который я ранее скопировал. Следующие команды выполняли следующие задачи:

  1. Вернуть ЛИЦЕНЗИОННЫЙ файл, который я удалил
  2. Pu sh все в удаленном репозитории, чтобы окончательно решить эту проблему
git checkout LICENSE
git add --all
git commit -am "don't know what the hell am I doing"
git push

Теперь я только что понял, что забыл о файле README. Помимо файла LICENSE, это было единственное, что мне действительно нужно было извлечь из удаленного репозитория, и я удалил его вместе со всеми другими файлами, извлеченными из удаленного репозитория.

К сожалению, я не могу git checkout README, чтобы восстановить его, потому что я уже все нажал.

Может кто-нибудь дать мне совет, что я делаю? Как мне лучше ориентироваться с помощью git?

1 Ответ

0 голосов
/ 07 августа 2020

Если вы просто хотите получить файл README, который был там раньше:

Вы добавили новую фиксацию поверх предыдущего состояния origin/master; если вы хотите получить файл README из этого коммита, вы можете запустить:

# 'HEAD^' means 'the parent of my current commit' :
git checkout HEAD^ -- README

# or find the sha1 of that previous commit :
# 'git log' on the cli, or any GUI to browse your repo
git log --oneline
# once you know that sha1, you can use it :
git checkout sha1 -- README

Еще одна вещь, которую следует знать: git имеет большой стек отмены, называемый reflog.

Если вы запустите git reflog, вы увидите историю всех выполненных вами коммитов, включая ваши 17:34PM.

Эта история сокращается при запуске git gc (именно поэтому некоторые люди предупреждали вас о том, что вы не запускаете его), настройки по умолчанию оставят ваши локальные коммиты в покое как минимум на 2 недели.

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