Можно ли отменить этап последнего (не зафиксированного) изменения в git ? Предположим, что в текущей ветке было много файлов, некоторые из которых были подготовлены, а некоторые нет. В какой-то момент какой-то глупый программист случайно выполнил:
git add -- .
...вместо того:
git checkout -- .
Может ли этот программист теперь отменить последние изменения с помощью магической команды git ? Или он должен был совершить эксперимент прежде всего?
git add
команды, особенно для файлов, в которых уже были поэтапные изменения и были некоторые изменения, которые должны были быть отменены, а не подготовлены. Не могу сказать, что другой вопрос не связан, хотя.Ответы:
Вы можете использовать
git reset
. Это приведет к «удалению» всех файлов, которые вы добавили после последнего коммита.Если вы хотите удалить только некоторые файлы, используйте
git reset -- <file 1> <file 2> <file n>
.Также можно отменить некоторые изменения в файлах с помощью
git reset -p
.источник
-p
переключатель. Спасибо! :)Вы не можете отменить последнее добавление git, но вы можете отменить все
add
s с момента последнего коммита.git reset
без аргумента фиксации сбрасывает индекс (поэтапное внесение изменений):источник
reset
использовать один файл или использоватьreset -p
для удаления определенного фрагмента.Так что настоящий ответ на
на самом деле: нет, вы не можете удалить только последний
git add
.Это если мы интерпретируем вопрос как в следующей ситуации:
Исходный файл:
Первое изменение с последующим
git add
:Второе изменение сопровождается
git add
:В этом случае
git reset -p
не поможет, так как его наименьшая зернистость это строки.git
не знает, что о промежуточном состоянии:больше
источник
Вы могли бы использовать
git reset
(см. Документы )источник
На дату git предлагает:
use "git rm --cached <file>..." to unstage
если файлов не было в репо. Это unstages файлы, хранящие их там.use "git reset HEAD <file>..." to unstage
если файлы были в репо, и вы добавляете их как измененные. Он хранит файлы такими, какие они есть, и их удаление.git add --
Насколько мне известно, вы не можете отменить, но вы можете удалить список файлов, как указано выше.источник
Удалите файл из индекса, но оставьте его версионным и оставьте с незафиксированными изменениями в рабочей копии:
Сбросьте файл до последнего состояния из HEAD, отмените изменения и удалите их из индекса:
Это необходимо, поскольку
git reset --hard HEAD
не будет работать с отдельными файлами.Удалить
<file>
из индекса и управления версиями, сохранив файл без версии с изменениями в рабочей копии:Удалить
<file>
из рабочей копии и полностью управлять версиями:источник
Если вы хотите удалить все добавленные файлы из git для коммита
Если вы хотите удалить отдельный файл
источник
Ты можешь использовать
отменить недавно добавленные локальные файлы
отменить изменения для определенного файла
источник
В зависимости от размера и масштаба трудно, вы можете создать временную ветку и зафиксировать текущую работу там.
Затем переключитесь на исходную ветку и оформите ее, а затем выберите соответствующие файлы с нуля.
По крайней мере, у вас будет постоянная запись о текущих и предыдущих состояниях для работы (до тех пор, пока вы не удалите эту пустую ветку).
источник