У меня иногда возникает ситуация, когда забыл при коммите указать еще какой-либо файл(-ы). Можно ли как-либо в последний коммит добавить файл(-ы) ?
В Mercurial я делаю так:
hg qinit
Преобразовываю коммит в патч
Обновляю патч
Преобразовываю патч в коммит
Возможно есть способ и для GIT ?
Ответ
Да, для этого используется опция --amend
Пример использования
Просмотрим историю коммитов.
$ git log
commit 5c4a8e76f951eb7ee157f4136257f6666fddf1d1
Author: John Doe
Changed 1.txt
commit 7f2ad8c26ad032800c049d0d6122c43410a5cbbc
Author: John Doe
Initial commit
Допустим существует файл который нужно добавить в предыдущий коммит.
$ git status
On branch master
Untracked files:
(use "git add
$ git add --all
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD
$ 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
Added test
1.txt | 3 ++-
test.txt | 0
2 files changed, 2 insertions(+), 1 deletion(-)
commit 7f2ad8c26ad032800c049d0d6122c43410a5cbbc
Author: John Doe
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 по сути создает новый коммит, который включает изменения из коммита который вы меняете + добавленные изменения. Не правьте последний коммит, если вы его уже отправили в удаленный репозиторий.
Комментариев нет:
Отправить комментарий