Я просто клонировал git-репозиторий и проверил ветку. Я работал над этим, а затем решил удалить все свои локальные изменения, так как я хотел оригинальную копию.
Короче говоря, мне пришлось выполнить следующие две команды, чтобы удалить мои локальные изменения
git checkout .
git clean -f
Мой вопрос
(1) Это правильный подход к избавлению от локальных изменений, или, пожалуйста, дайте мне знать правильный подход.
(2) когда мы используем, git reset --hard
как я могу сбросить даже без этой команды
Спасибо
* Решение: Major Edit (s): 26/26: * Заменены многие расплывчатые термины на специфическую для git терминологию [отслежены / не отслежены / поставлены / не установлены)
При локальных изменениях может быть только три категории файлов:
Тип 1. Staged Tracked файлы
Тип 2. Unstaged Отслеживаемые файлы
Тип 3. Unstaged UnTracked файлы или UnTracked файлы
- Staged - те, которые перемещены в область подготовки / добавлены в указатель
- Отслеженные - измененные файлы
- UnTracked - новые файлы. Всегда неподготовленный Если постановка, это означает, что они отслеживаются.
Что делают каждая команда:
git checkout .
- УДАЛЯЕТ ТОЛЬКО НЕСТАГИРОВАННЫЕ СЛЕДУЮЩИЕ файлы [Тип 2]git clean -f
- УДАЛЯЕТ НЕУСТАНОВЛЕННЫЕ НЕПРАВИЛЬНЫЕ файлы ТОЛЬКО [Тип 3]git reset --hard
- Удаляет ТОЛЬКО Staged Tracked и UnStaged Tracked файлы [Тип 1, Тип 2]git stash -u
- Удаляет все изменения [Тип 1, Тип 2, Тип 3]
Вывод:
Понятно, что мы можем использовать либо
(1) combination of `git clean -f` and `git reset --hard`
ИЛИ
(2) `git stash -u`
достичь желаемого результата.
Примечание: копить, так как слово означает «Хранить (что-то) безопасно и тайно в указанном месте». Это всегда можно получить с помощью git stash pop
. Поэтому выбор между двумя вышеупомянутыми вариантами - это вызов разработчика.
Спасибо Кристоф и Фредерик Шёнинг.
Изменить: 03/27
Я думал, что стоит поставить « остерегаться » запискуgit clean -f
git clean -f
Там нет пути назад. Используйте -n
или --dry-run
для предварительного просмотра ущерба, который вы нанесете.
Если вы хотите также удалить каталоги, запустите git clean -f -d
Если вы просто хотите удалить игнорируемые файлы, запустите git clean -f -X
Если вы хотите удалить как игнорируемые, так и не проигнорированные файлы, запустите git clean -f -x
ссылка: подробнее git clean
: Как удалить локальные (неотслеживаемые) файлы из текущего рабочего дерева Git?
Редактировать: 20.05.15
Отмена всех локальных коммитов в этой ветке [Удаление локальных коммитов]
Чтобы отменить все локальные коммиты в этой ветке, чтобы сделать локальную ветвь идентичной "восходящему" из этой ветки, просто запустите git reset --hard @{u}
Ссылка: http://sethrobertson.github.io/GitFixUm/fixup.html
или сделайте git reset --hard origin/master
[если местный филиал master
]
Примечание: 12.06.2015 Это не дубликат другого SO вопроса, который помечен как дубликат. Этот вопрос посвящен тому, как удалить локальные изменения GIT [удалить добавленный файл, удалить изменения, добавленные в существующий файл и т. Д., А также различные подходы; Где в другом потоке SO только адрес, как удалить локальный коммит. Если вы добавили файл и хотите удалить его в одиночку, то другой поток SO не обсуждает его. Следовательно, это не дубликат другого]
Изменить: 23.06.15
Как восстановить коммит, уже переданный в удаленный репозиторий?
$ git revert ab12cd15
Изменить: 01.09.2015
Удалить предыдущий коммит из локальной ветки и удаленной ветки
Случай: Вы только что внесли изменения в свой локальный филиал и сразу же отправили в удаленный филиал, внезапно осознав: о, нет! Мне не нужно это изменение. Теперь что делать?
git reset --hard HEAD~1
[для удаления этого коммита из локальной ветки]
git push origin HEAD --force
[обе команды должны быть выполнены. Для удаления из удаленной ветки]
Что за ветка? Это проверенная ветка.
Редактировать 09/08/2015 - Удалить локальное слияние мерзавцев :
Я нахожусь на master
ветке и слил master
ветку с вновь работающей веткойphase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
Q: Как избавиться от этого слияния? Пробовал git reset --hard
и git clean -d -f
оба не работали.
Единственное, что сработало, это одно из следующих:
$ git reset --hard origin/master
или
$ git reset --hard HEAD~8
или
$ git reset --hard 9a88396f51e2a068bb7
[sha commit code - это тот, который присутствовал до того, как произошли все ваши коммиты]
git stash -a
[или --all] также хранит игнорируемые и неотслеживаемые файлы. git clean -x
также будет очищать игнорируемые файлы. git clean -X
будет чистить только проигнорированные файлы.