Можно ли в GIT добавить еще один файл в последний локальный комит?
1,00
р.
р.
У меня иногда возникает ситуация, когда забыл при коммите указать еще какой-либо файл(-ы). Можно ли как-либо в последний коммит добавить файл(-ы) ? В Mercurial я делаю так: hg qinit Преобразовываю коммит в патч Обновляю патч Преобразовываю патч в коммит Возможно есть способ и для GIT ?
Ответ Да, для этого используется опция --amend. Пример использования Просмотрим историю коммитов. $ git log commit 5c4a8e76f951eb7ee157f4136257f6666fddf1d1 Author: John Doe <[email protected]> Date: Sun Aug 28 14:40:30 2016 +0300 Changed 1.txt commit 7f2ad8c26ad032800c049d0d6122c43410a5cbbc Author: John Doe <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 по сути создает новый коммит, который включает изменения из коммита который вы меняете + добавленные изменения. Не правьте последний коммит, если вы его уже отправили в удаленный репозиторий.