Страницы

Поиск по вопросам

понедельник, 1 октября 2018 г.

Можно ли в GIT добавить еще один файл в последний локальный комит?

У меня иногда возникает ситуация, когда забыл при коммите указать еще какой-либо файл(-ы). Можно ли как-либо в последний коммит добавить файл(-ы) ?
В Mercurial я делаю так:
hg qinit Преобразовываю коммит в патч Обновляю патч Преобразовываю патч в коммит
Возможно есть способ и для GIT ?


Ответ

Да, для этого используется опция --amend
Пример использования
Просмотрим историю коммитов.
$ git log
commit 5c4a8e76f951eb7ee157f4136257f6666fddf1d1 Author: John Doe Date: Sun Aug 28 14:40:30 2016 +0300
Changed 1.txt
commit 7f2ad8c26ad032800c049d0d6122c43410a5cbbc Author: John Doe Date: Sun Aug 28 14:39:30 2016 +0300
Initial commit Допустим существует файл который нужно добавить в предыдущий коммит.
$ git status
On branch master Untracked files: (use "git add ..." to include in what will be committed) test.txt Добавьте этот файл в индекс при помощи команды git add
$ git add --all
$ git status
On branch master Changes to be committed: (use "git reset HEAD ..." to unstage) new file: test.txt После этого вы можете добавить файл в последний коммит посредством использования --amend в команде git commit. Вы можете также изменить сообщение коммита добавив -m 'Commit message'. Чтобы оставить сообщение коммита тем же просто передайте пустую строку вместо сообщения -m ''
$ git commit -m 'Added test' --amend
[master aad3e76] Added test Date: Sun Aug 28 14:40:30 2016 +0300 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 test.txt Проверим историю коммитов.
$ git log --stat commit aad3e7653cd76c4afa1a9272bd421493b4e3055c Author: John Doe Date: Sun Aug 28 14:40:30 2016 +0300
Added test
1.txt | 3 ++- test.txt | 0 2 files changed, 2 insertions(+), 1 deletion(-)
commit 7f2ad8c26ad032800c049d0d6122c43410a5cbbc Author: John Doe Date: Sun Aug 28 14:39:30 2016 +0300
Initial commit
1.txt | 1 + 1 file changed, 1 insertion(+)
Другие способы изменения истории
Для изменения истории коммитов можно использовать такие команды как git rebase и git filter-branch, но они используются в гораздо более сложных случаях. Например, если вы хотите изменить коммит который был сделан несколько коммитов назад, то можете использовать интерактивный rebase - git rebase -i
Подробнее об изменении истории в git можно прочесть здесь.
P.S. Будьте осторожны, используя этот приём, потому что git commit --amend по сути создает новый коммит, который включает изменения из коммита который вы меняете + добавленные изменения. Не правьте последний коммит, если вы его уже отправили в удаленный репозиторий.

Комментариев нет:

Отправить комментарий