Как мне отменить 'git add' перед коммитом?

«Размер» - это количество байтов на проводе, а «контент» - это фактический размер ресурса. Некоторые вещи могут сделать их разными, в том числе:

  • Выполняется из кеша (малый или 0 "размер).
  • Заголовки ответов, включая файлы cookie (больший размер" чем «контент»)
  • Запросы перенаправления или аутентификации
  • сжатие gzip (обычно меньше), чем «контент»

Из документа docs :

Размер - это объединенный размер заголовков ответов (как правило, несколько сотен байт) плюс тело ответа, предоставленное сервером. Контент - это размер декодированного контента ресурса. Если ресурс был загружен из кеша браузера, а не по сети, это поле будет содержать текст (из кеша).

blockquote>

8384
задан Zoe 10 June 2019 в 10:04
поделиться

9 ответов

Можно отменить git add перед фиксацией с

git reset <file>

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

можно использовать

git reset

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

В старых версиях Мерзавца, вышеупомянутые команды эквивалентны git reset HEAD <file> и git reset HEAD соответственно и перестанут работать, если HEAD не определено (потому что Вы еще не сделали фиксаций в своем repo), или неоднозначный (потому что Вы создали ответвление, названное HEAD, который является глупой вещью, которую Вы не должны делать). Это было изменено в Мерзавце 1.8.2 , тем не менее, так в современных версиях Мерзавца, можно использовать команды выше даже до создания первой фиксации:

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

9527
ответ дан Mark Amery 10 June 2019 в 10:04
поделиться
  • 1
    @radarbob: хотя это поднимает вопрос, почему isn' t там ITuple<out T> интерфейс? – TDaver 13 August 2013 в 11:48

Если Вы вводите:

git status

мерзавец скажет Вам, что подготавливается, и т.д., включая инструкции относительно того, как не подготовить:

use "git reset HEAD <file>..." to unstage

я нахожу, что мерзавец делает довольно хорошее задание пошагового перемещения меня, чтобы сделать правильную вещь в таких ситуациях.

Примечание: Недавние версии мерзавца (1.8.4.x) изменили это сообщение:

(use "git rm --cached <file>..." to unstage)
516
ответ дан Jonathan Leffler 10 June 2019 в 10:04
поделиться
  • 1
    Я предполагаю I' ll должны создать своего рода систему heartbeat. – Mitch Dempsey 4 May 2010 в 19:28

git remove или git rm может использоваться для этого, с эти --cached флаг. Попробуйте:

git help rm
43
ответ дан Peter Mortensen 10 June 2019 в 10:04
поделиться

Вы хотите:

git rm --cached <added_file_to_undo>

Обоснование:

Когда я был плохо знаком с этим, я сначала попробовал

git reset .

(для отмены моей всей начальной буквы добавляют), только для получения этого (не так) полезное сообщение:

fatal: Failed to resolve 'HEAD' as a valid ref.

Оказывается, что это вызвано тем, что ГОЛОВА касательно (переходят?) не существует до окончания первой фиксации. Таким образом, Вы столкнетесь с проблемой того же новичка как я, если Ваш рабочий процесс, как мой, был чем-то как:

  1. CD к моему большому новому каталогу проекта для испытания Мерзавца, новой жаркости
  2. git init
  3. git add .
  4. git status

    ... много дерьма прокручивает...

    => Чертовски, я не хотел добавлять все это.

  5. Google "мерзавец отмены добавляет"

    => находят Переполнение стека - yay

  6. git reset .

    => фатальный: Не удалось разрешить 'ГОЛОВУ' как допустимое касательно.

Далее оказывается, что существует ошибка, зарегистрированная против бесполезности этого в списке рассылки.

И что правильное решение было тут же в выводе состояния Git (который, да, я замял как 'дерьмо),

...
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
...

И решение действительно состоит в том, чтобы использовать git rm --cached FILE.

Отметьте предупреждения в другом месте здесь - git rm удаляет Вашу локальную рабочую копию файла, но не, если Вы используете - кэшируемый. Вот результат git help rm:

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

Я продолжаю использовать

git rm --cached .

удалить все и запуститься снова. Не работал хотя, потому что в то время как add . является рекурсивным, складывается rm потребности -r рекурсивно вызывать. Вздох.

git rm -r --cached .

Хорошо, теперь я вернулся туда, где я запустил. В следующий раз я собираюсь использовать -n чтобы сделать пробный прогон и видеть, что будет добавлено:

git add -n .

Я архивировал все к безопасному месту перед доверием git help rm о --cached ничего не уничтожая (и что, если я написал его c орфографическими ошибками).

2105
ответ дан 22 November 2019 в 19:37
поделиться

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

git rm --cached FILE

Используйте rm --cached только для новых файлов, случайно добавленных.

31
ответ дан 22 November 2019 в 19:37
поделиться

Если у вас начальная фиксация и вы не можете использовать git reset , просто объявите «Git банкротство» и удалите .git папку и начать заново

64
ответ дан 22 November 2019 в 19:37
поделиться

Возможно, Git изменился с тех пор, как вы разместили свой вопрос.

$> git --version
git version 1.6.2.1

Теперь вы можете попробовать:

git reset HEAD .

Это должно быть то, что вы ищете.

34
ответ дан 22 November 2019 в 19:37
поделиться
git rm --cached . -r

рекурсивно «удалит» все, что вы добавили из текущего каталога

92
ответ дан 22 November 2019 в 19:37
поделиться

Существует другой прием:

git stash
git stash apply

(я всегда забываю reset команда)

-1
ответ дан 22 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: