Примечание: аналогичный вопрос, как this one, но с некоторыми важными изменениями.Изменить сообщение фиксации для конкретного фиксации
У меня есть следующие функции, чтобы переписать дату фиксации, учитывая обязательство ID:
rewrite-commit-date() {
local commit="$1"
local newdate="$2"
newdate="$(date -R --date "$newdate")"
echo ">>>> Rewriting commit $commit date: $newdate"
git filter-branch --env-filter \
"if test \$GIT_COMMIT = '$commit'
then
export GIT_AUTHOR_DATE
export GIT_COMMITTER_DATE
GIT_AUTHOR_DATE='$newdate'
GIT_COMMITTER_DATE='$newdate'
fi" &&
rm -fr "$(git rev-parse --git-dir)/refs/original/"
}
Я пытаюсь реализовать подобную функцию rewrite-commit-message
изменить сообщение фиксации. То, что я хочу это:
- Функция
rewrite-commit-message
принимает два параметра:commit_id
, иnew_commit_message
- Там нет необходимости знать старое сообщение коммита: имея
commit_id
достаточно, чтобы знать, какие совершающие изменить - нет
git commit --amend
, так как это связано со старыми фиксаций (не обязательно самые последние фиксации) - не беспокойтесь о переписывании истории и мастер-репозиторий: Я работаю в художественном отделении, и я имею право делать
git push -f
- Я хотел бы использовать
filter-branch
для этого, но я не уверен, как:- применить изменения к конкретной фиксации: в
test
, используемый в функцииrewrite-commit-date
используется вenv-filter
, но я не собираюсь doenv-filter
здесь, так как я не хочу изменять что-либо, связанное с средой фиксации, но сообщение commit. - как заставить сообщение фиксации?
--msg-filter
нуждается в исходном сообщении фиксации. Меня не волнует исходное сообщение фиксации. Есть ли--force-msg-filter
или аналогичный?
- применить изменения к конкретной фиксации: в
Я ищу похож на this, но с некоторыми оговорками:
- Не применять изменения в диапазоне фиксаций, но конкретное обязательство
- I не волнует исходное сообщение фиксации, так как я хочу полностью перезаписать его