Я пытаюсь отменить все изменения с момента последнего коммита. Я пробовал git reset --hard
и git reset --hard HEAD
после просмотра этого сообщения. Я отвечаю, что голова теперь в 18c3773... но когда я смотрю на свой локальный источник, все файлы все еще там. Что мне не хватает?
Git отменить все незафиксированные или несохраненные изменения
Ответ 1
-
Это приведет к удалению всех файлов, которые вы могли создать с помощью
git add
:git reset
-
Это вернет все локальные незафиксированные изменения (должны быть выполнены в корне репо):
git checkout .
Вы также можете отменить незафиксированные изменения только для определенного файла или каталога:
git checkout [some_dir|file.txt]
Еще один способ отменить все незафиксированные изменения (дольше печатать, но работает из любого подкаталога):
git reset --hard HEAD
-
Это удалит все локальные неотслеживаемые файлы, поэтому остаются только файлы, отслеженные git:
git clean -fdx
ВНИМАНИЕ:
-x
также удалит все пропущенные файлы, в том числе указанные.gitignore
! Вы можете использовать-n
для предварительного просмотра файлов, которые будут удалены.
Подводя итог: выполнение приведенных ниже команд в основном эквивалентно свежему git clone
из оригинального источника (но он ничего не перезагружает, поэтому намного быстрее):
git reset
git checkout .
git clean -fdx
Обычно это используется в сценариях сборки, когда вы должны убедиться, что ваше дерево абсолютно чистое - не имеет каких-либо модификаций, локально созданных объектных файлов или артефактов сборки, и вы хотите, чтобы оно работало очень быстро и не повторялось. клонировать весь репозиторий каждый раз.
Ответ 2
Если вы хотите " отменить", все незафиксированные изменения просто запускаются:
git stash
git stash drop
Если у вас есть необработанные файлы (проверьте, запустив git status
), их можно удалить, выполнив:
git clean -fdx
git stash
создает новый stash, который станет stash @{0}. Если вы хотите сначала проверить, вы можете запустить git stash list
, чтобы просмотреть список ваших штампов. Он будет выглядеть примерно так:
[email protected]{0}: WIP on rails-4: 66c8407 remove forem residuals
[email protected]{1}: WIP on master: 2b8f269 Map qualifications
[email protected]{2}: WIP on master: 27a7e54 Use non-dynamic finders
[email protected]{3}: WIP on blogit: c9bd270 some changes
Каждый штамп назван в честь предыдущей комманды commit.
Ответ 3
существует также git stash
- который "застревает" ваши локальные изменения и может быть повторно применен позднее или сброшен, если больше не требуется
Ответ 4
Я использую исходное дерево.... Вы можете сделать все незафиксированные изменения с помощью двух простых шагов:
1) просто нужно reset статус файла рабочей области
2) выберите все неустановленные файлы (команда + a), щелкните правой кнопкой мыши и выберите удаление
Это просто: D
Ответ 5
Для тех, кто пришел сюда в поисках, могут ли они отменить git clean -f -d
, с помощью которого был удален файл, созданный в eclipse,
Вы можете сделать то же самое из пользовательского интерфейса, используя "восстановление из локальной истории" для ссылки: Восстановление из локальной истории
Ответ 6
Государства, переходящие с одного коммита на новый коммит
0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed
Действие для перехода состояния
0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"
Проверьте разницу
0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD
Возврат к последнему коммиту
2->1: git reset
1->0: git checkout . #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD
Эквивалент git clone, без повторной загрузки
git reset; git checkout .; git clean -fdx
Ответ 7
Что я делаю
git add . (adding everything)
git stash
git stash drop
Один лайнер: git add. && git stash && git stash drop
git add. && git stash && git stash drop