Скасувати "git add <dir>"?


186

Я помилково додав файли за допомогою команди "git add dir". Я ще не виконував "git commit". Чи є спосіб видалити цей dir та все, що міститься в ньому, з комітету?

Я спробував git reset dir, але не вийшло. Мабуть, git reset fileце спосіб його скасувати. Але у мене так багато файлів і так мало часу.


6
git reset <path>оновлює індекс для цього шляху так, щоб він збігався HEAD(поточне виконання). Це не торкається робочого дерева.
Каскабель

Відповіді:


279

Щоб видалити каталог та все, що знаходиться всередині нього, з індексу,

git rm --cached -r dir

У --cachedвимикачі марка git rmпрацює на індексі тільки і не торкайтеся до робочої копії. -rПеремикач робить його рекурсивним.


12
"Видалити весь інсценований каталог з індексу" було б дещо кращим поясненням команди git, оскільки для початківців git, як я, команда дуже схожа на те, якби вона могла навіть видалити каталог у файловій системі. Просто справа смаку.
Саша Готфрід

1
Ось чому я змістив жирний --cachedвимикач. Тим не менш, я відредагував відповідь, щоб визнати, що вона стосується лише індексу.
Арістотель Пагалціс

@SaschaGottfried дякую за роз’яснення, я спочатку злякався навіть редагування, але ваш коментар дав зрозуміти :)
Макс фон Гіппел

я майже видалив всю свою папку: S після цього ... робив git reset HEAD folderвсе виправлене ... але перед цим зробіть git status folderі переконайтесь, що він "видалив" усі файли з цієї папки
Bengalaa

21

Ви хочете використовувати git rm --cached -r <dir>. ця команда видалить індекс поетапного вмісту каталогу.

якщо каталог вже відстежувався, ви повинні знайти нові та старі файли вручну та знеструмити їх…

Можливо, запустіть git reset <dir>після цього, щоб скинути існуючі (і вже відслідковані) файли всередині каталогу.


Оновлення 2019 року:

Просто запустіть git reset directory, вона видалить усе, щойно додані файли.


не git reset <dir>достатньо одного?
Бананах

@Bananach Я просто спробував, і здається, що так, так git reset <dir>би працювало. Відповідь - з 2011 року, тому я не впевнений, чи працював це вже 8 років тому. Я оновлю відповідь. Дякую за підказку!
вязання


11

Нестабільний каталог

$ git reset <dir>

Видаляє всі файли та папки, з якими я інсценізував:

$ git add <dir>

Підтвердити каталог без позначення

Для того, щоб підтвердити видалення каталогу та його вмісту з інсценізації (тобто "Зміни, які слід здійснити"), виконайте наведене нижче:

$ git status

або

$ git diff --staged --name-only 

щоб підтвердити, що жодна з попередньо налаштованих папок або файлів досі не ставиться.


2

Одна проста команда для видалення поетапного файлу / папки, які ще не виконані, - git restore --staged <dir>.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.