Unstage изменения в Git для конкретного файла - PullRequest
5 голосов
/ 16 ноября 2010

Я внес некоторые изменения в определенный файл в репозитории и зафиксировал эти изменения.Все под одним коммитом.

В этом коммите я также внес изменения в несколько других файлов.Как мне отменить внесение изменений в один конкретный файл , а не во все файлы, которые были изменены в коммите?

Ответы [ 2 ]

14 голосов
/ 16 ноября 2010

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

Поскольку ваши изменения были зафиксированы, вы спрашиваете, как это сделать, проверить версию файла из предыдущего коммита:

git checkout HEAD^ path/to/file

HEAD - текущий коммит, а HEAD^ - первый родительский элемент HEAD.

7 голосов
/ 16 ноября 2010

Если вы еще нигде не нажимали коммит:

$ git checkout HEAD^ path/to/revert

Это восстановит путь, который вы хотели вернуть к состоянию, в котором он находился на момент предыдущего коммита. (Это отменит все изменения, сделанные в последнем сделанном вами коммите.)

Индекс также будет обновлен, так что теперь вам просто нужно изменить свой коммит:

$ git commit --amend
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...