Як скасувати додавання git'а перед фіксацією?

Помилково додав файли в Git за допомогою команди:

git add myfile.txt

Я ще не запустив git commit. Чи є спосіб скасувати це, щоб ці файли не потрапили в комміт?

Рішення

Ви можете скасувати git add перед фіксацією за допомогою

git reset 

яка вилучить його з поточного індексу (списку "about to be committed"), не змінюючи при цьому нічого іншого.

Ви можете використовувати

git reset

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

У старих версіях Git'а наведені вище команди еквівалентні git reset HEAD і git reset HEAD відповідно, і не спрацюють, якщо HEAD невизначений (тому що ви ще не зробили жодної фіксації у вашому сховищі) або неоднозначний (тому що ви створили гілку з назвою HEAD, що є дурницею, яку не варто робити). Це було змінено в Git'і 1.8.2, тому в сучасних версіях Git'а ви можете використовувати наведені вище команди навіть до того, як зробите свій перший комміт:

"git reset" (без опцій або параметрів) використовується для виходу з помилки, коли у вас немає ніяких коммітов в історії, але тепер вона видає вам порожній індекс (щоб відповідати неіснуючому комміту, в якому ви навіть не перебуваєте).

Коментарі (11)

Якщо ти набереш:

git status

Git підкаже вам, що саме є в стадії і т.д., включно з інструкціями щодо того, як вилучити стадію:

use "git reset HEAD ..." to unstage

Я вважаю, що Git робить досить хорошу роботу, підштовхуючи мене до правильних дій у подібних ситуаціях.

Примітка: В останніх версіях Git'а (1.8.4.x) це повідомлення змінено:.

(use "git rm --cached ..." to unstage)
Коментарі (3)

Для цього можна використовувати git remove або git rm з прапором --cached. Спробуйте:

git help rm
Коментарі (2)