Відповіді:
Ти хочеш:
git rm --cached [file]
Якщо ви випустите --cached
опцію, вона також видалить її з робочого дерева. git rm
трохи безпечніше git reset
, тому що вас попередить, якщо поетапний вміст не відповідає ні кінчику гілки, ні файлу на диску. (Якщо це не так, вам доведеться додати --force
.)
git rm --cached
щоб видалити їх з репо, додайте відповідні файли чи каталоги в .gitignore, стадію та виконувати як звичайне. Вони не пітимуть із репо, але залишаться недоторканими у вашому місцевому дереві, і ви випадково не завітаєте до них знову.
Це повинно змінити <file> для вас (не видаляючи або іншим чином змінюючи файл):
git reset <file>
HEAD
.
HEAD
!
git reset HEAD <file>
для видалення певного файлу з індексу.
і
git reset HEAD
для видалення всіх індексованих файлів.
Залежно від вашого робочого процесу, це може бути така річ, яка вам потрібна досить рідко, що мало сенсу намагатися розробити рішення командного рядка (якщо ви з якоїсь причини не працюєте без графічного інтерфейсу).
Просто використовуйте один із інструментів на основі GUI, що підтримують управління індексами, наприклад:
git gui
<- використовує рамку вікон Tk - подібний до стилю gitk
git cola
<- більш сучасний інтерфейс GUIВони дозволяють переміщувати файли в індекс та поза ним, клацаючи вказівкою миші. Вони навіть мають підтримку вибору та переміщення частин файлу (окремі зміни) до та з індексу.
Як щодо іншої точки зору: Якщо ви заплутаєтесь під час використання однієї із запропонованих, досить загадкових команд:
git rm --cached [file]
git reset HEAD <file>
... ви маєте реальний шанс втратити дані - або, принаймні, ускладнити їх пошук. Якщо вам справді не потрібно робити це з дуже високою частотою, використання інструменту GUI, ймовірно, буде більш безпечним .
На основі коментарів і голосів я зрозумів, що дуже багато людей весь цей індекс використовують. Я не. Ось як:
git commit -a
git commit (list of files)
git commit -a
а потім внесіть зміни черезgit gui
git difftool --dir-diff --tool=meld
git commit -a
. Коли я відповідав на це запитання, це було через те, що я зробив (екзотичний) " зворотний вишневий вибір ", який ставить файли в індекс для вас, але я хотів відредагувати файл, перш ніж зробити це. Я вийняв файл із індексу, поки редагував його, щоб розмінники працювали так, як я звик.
rm
відразу, але я спершу подумав, що перемикання гілок не вб'є ігноровану папку. але ... я використовую інструмент github "gui", який досить добре для мене, і я підтримую деяке управління індексами, за винятком того, що це не підтримує. так що, я повинен використовувати 2 gui для вузького використання? досі не можу погодитися з відповіддю.