Отменить все незафиксированные изменения, измененные файлы, добавленные файлы и не добавленные - PullRequest
0 голосов
/ 17 марта 2019

Каков наилучший способ отменить незафиксированные изменения с помощью Git.

Я прочитал это, но хочу полностью понять, что делает каждый шаг.

git отменить все незафиксированные или несохраненные изменения

git reset

«Это приведет к удалению всех файлов, которые вы могли создать с помощью git add», что означает «unstage»?

Это значит удалить все добавленные файлы?

git checkout .

"отменить все локальные незафиксированные изменения (должны быть выполнены в корне репо)"

Что считается корнем? Если я нахожусь на ветке A и хочу игнорировать все незафиксированные изменения на ветке A, считается ли ветка A корнем?

git clean -fdx

"ПРЕДУПРЕЖДЕНИЕ: -x также удалит все пропущенные файлы, в том числе указанные .gitignore! Вы можете использовать -n для предварительного просмотра файлов, которые будут удалены."

Это удаляет мои файлы? в том числе игнорируемые файлы? Что если игнорируемые файлы не были изменены?

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

Ответы [ 3 ]

3 голосов
/ 17 марта 2019

Люди обычно делают, когда думают: f% ck, я не хочу видеть, что у меня перед собой, я хочу взять все на своем рабочем дереве, как это было в последней ревизии.и забудьте обо всем остальном is:

git reset --hard

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

2 голосов
/ 17 марта 2019

что означает нестабильность?

«нестабильность» означает, что изменения удалены из индекса.Индекс - это место, где вы вносите изменения перед их фиксациейUnstaging не удаляет какие-либо файлы или отменяет любые изменения из вашего рабочего каталога.

Что считается корнем?

Здесь "root"ссылается на базовый каталог вашего проекта.Это не имеет ничего общего с ветками или коммитами.

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

Самый простой способ отбросить все ваши локальные изменения с помощью

git reset --hard HEAD
2 голосов
/ 17 марта 2019

Вы можете сделать (из своего корня репо)

git checkout HEAD -- .

или альтернативно (как уже предложено eftshift0 и Code-Apprentice в их ответах)

git reset --hard HEAD

Обе команды восстановят ваши файлы в том состоянии, в котором они были при последнем коммите.

Предупреждение: эта операция не отменяется . Если у вас есть малейшее сомнение относительно будущего использования этих неудачных изменений, лучше всего stash их:

git stash

(и иметь возможность проверить их или использовать повторно на более позднем этапе)


А что касается других рассмотренных вами команд, git reset (здесь подразумевается HEAD) "только" получит все изменения из индекса, а не из рабочего дерева. Таким образом, ваши нежелательные изменения все равно будут присутствовать в ваших файлах, просто без изменений для следующей фиксации.

И остерегайтесь git clean -fdx, если использовать его опасно, это опасная команда, поскольку она удалит все неотслеживаемые файлы. Он имеет свое применение, но в случае, который вы описываете (перевод вашего проекта в состояние, в котором он был, наконец, зафиксирован), это не то, что вам нужно.

...