Что такое команда reset для клонированного хранилища git?

Я загрузил репозиторий с помощью

git clone <address>

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

Ответ 1

Вот длинное объяснение, чтобы вы поняли, что происходит:

Предполагая, что пульт называется origin

git reset --hard HEAD
git checkout origin/master
git branch -D master
git checkout -b master

Что это делает:

  1. (Необязательно, если в git status указано, что измененные файлы отсутствуют). Удалите все измененные файлы на диске (поэтому необходимо reset --hard).

  2. Извлечь удаленную главную ветку (примечание: вы будете в состоянии "отсоединена голова")

  3. Удалить локальную master ветку (отбросив все ваши локальные изменения)

  4. Назовите текущую голову как новую master ветвь

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

git checkout -b my-silly-changes
git branch -D master
git checkout -b master origin/master

Это сохраняет ваши текущие изменения в новой локальной ветке, называемой my-silly-changes а затем удаляет старую локальную ветку, называемую master и, наконец, воссоздает ее из удаленного заголовка.

И вот объяснение для людей, которые думают, что знают, что делают:

Единственная команда:

git reset --hard origin/master

Отменяет все локальные изменения и повторно указывает текущую ветвь на самое последнее извлеченное состояние origin/master. Это имеет тот же эффект, что и четыре команды в начале этого ответа, но не заглядывая за занавес

Ответ 2

Если вы уверены, что хотите отбросить все файлы и потерять все свои модификации (!), вы можете сделать:

git reset --hard origin/master

Это будет reset состояние вашей локальной копии ветки "master" и вашей рабочей копии до последней версии, которую вы извлекли из вашего восходящего (исходного пульта).

Примечание. Предполагается, что

  • ваш восходящий репозиторий называется "источником" (по умолчанию для git clone)
  • вы работаете в клоне удаленной ветки master

Если вы работаете в ветки, отличной от "master", отрегулируйте команду:

git reset --hard origin/branch1

Ответ 3

Если вы ничего не совершили, то git reset --hard достаточно.

Здесь - хороший ресурс, объясняющий, как git reset работает в разных режимах (--hard, --mixed и - -мягкий).

Отказ

git reset --hard - небезопасная операция. Он удаляет любые незавершенные изменения из рабочего дерева и не может быть отменен.

Ответ 4

Вам также может понадобиться сделать что-то похожее:

git branch --set-upstream-to=origin/master master

Где:

origin/master

- это удаленная ветка, на которую вы хотите указать, и

master

- локальная ветка, из которой вы хотите работать из