Мне нужно изменить сообщение коммита, учитывая идентификатор коммита, без изменения какой-либо другой информации коммита. Однако сообщение о коммите должно принимать разрывы строк и т. Д., Аналогично тому, как это делается с помощью команды git commit
.
Например, рассмотрим следующий коммит
commit <id>
Author: <user-name> <user-email.com>
Date: ...
Hello World
Я хочу перефразироватьсообщение коммита к этому
Hello World
Text after line break1
More text
Обычным методом будет интерактивная перебазировка с последующим редактированием коммита с помощью git commit --amend
или выполнением операции переформулировки над этим коммитом. Тем не менее, это изменит информацию о коммите, такую как электронная почта коммиттера, время и т. Д.
(проверьте раздел обновления на перебазирование)
Фильтр-ветвь в git позволит переписатьфиксация путем изменения только сообщения фиксации и идентификаторов, как показано в этом ответе .
Но как мне перефразировать фиксацию с указанным выше форматом сообщения фиксации с использованием filter-branch?
Обновление:
Вот пример интерактивного ребазинга.
- Создание тестового репозитория с 2 коммитами
test@ubuntu:~/temp_git$ git init
Initialized empty Git repository in /home/test/temp_git/.git/
test@ubuntu:~/temp_git$ touch file1
test@ubuntu:~/temp_git$ git add .
test@ubuntu:~/temp_git$ git -c "user.name=A" -c "user.email=a@xyz.com" commit -am "Add File1" --author="B <b@xyz.com>"
[master (root-commit) f122a34] Add File1
Author: B <b@xyz.com>
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
test@ubuntu:~/temp_git$ touch file2
test@ubuntu:~/temp_git$ git add .
test@ubuntu:~/temp_git$ git -c "user.name=B" -c "user.email=b@xyz.com" commit -am "Add File2" --author="B <b@xyz.com>"
[master 3b023cf] Add File2
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file2
Коммиты, созданные выше, имеют разных авторов и коммиттеров. Полный журнал выглядит следующим образом:
test@ubuntu:~/temp_git$ git log --format="fuller"
commit 3b023cf256ae3498fbaf740329d94842143a5e4a (HEAD -> master)
Author: B <b@xyz.com>
AuthorDate: Tue Oct 15 08:28:07 2019 +0530
Commit: B <b@xyz.com>
CommitDate: Tue Oct 15 08:28:07 2019 +0530
Add File2
commit f122a341e31691f3170207c9a452ff18846fe120
Author: B <b@xyz.com>
AuthorDate: Tue Oct 15 08:27:22 2019 +0530
Commit: A <a@xyz.com>
CommitDate: Tue Oct 15 08:27:22 2019 +0530
Add File1
Выполнение интерактивной перебазировки в качестве пользователя A и перезапись корневого коммита
test@ubuntu:~/temp_git$ git -c "user.name=A" -c "user.email=a@xyz.com" rebase -i --root
[detached HEAD 228b423] Add File1 (test)
Author: B <b@xyz.com>
Date: Tue Oct 15 08:27:22 2019 +0530
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file1
Successfully rebased and updated refs/heads/master.
Обновленный журналс изменениями в информации о коммитере
test@ubuntu:~/temp_git$ git log --format="fuller"
commit 0d5e6a5fed5b22fc5f8e310c6e98b1e6b8a821b8 (HEAD -> master)
Author: B <b@xyz.com>
AuthorDate: Tue Oct 15 08:28:07 2019 +0530
Commit: A <a@xyz.com>
CommitDate: Tue Oct 15 08:31:41 2019 +0530
Add File2
commit 228b423e3e511c5954823e42df51a6f6acae91cf
Author: B <b@xyz.com>
AuthorDate: Tue Oct 15 08:27:22 2019 +0530
Commit: A <a@xyz.com>
CommitDate: Tue Oct 15 08:31:28 2019 +0530
Add File1 (test)