注意:与此类似的问题,但有一些重要的变化。
给定提交 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的是 in ,但我不打算在这里做,因为我不想更改与提交环境相关的任何内容,而是更改提交消息。rewrite-commit-dateenv-filterenv-filter - 如何强制提交消息?需要原始
--msg-filter提交消息。我不关心原始提交消息。有没有--force-msg-filter类似的?
- 将更改应用到特定的提交:函数中使用
我正在寻找的内容与此类似,但有一些警告:
- 不要将更改应用于一系列提交,而是应用于特定提交
- 我不关心原始提交消息,因为我想完全覆盖它