git - 将票号附加到本地和远程 git 历史记录中的所有提交消息

标签 git shell

如何在 bash 脚本中将票号“TIX-321”附加到分支 test_branch 中已存在的所有提交消息?

这相当于遍历所有提交并针对每个 git 修改提交。

我想在 shell 脚本中自动完成,我不想使用交互式 rebase 手动完成。

最佳答案

您可以对您的分支进行交互式 rebase (假设它来自 main)

git switch test_branch
git rebase -i $(git merge-base --fork-point main)

在自动打开的编辑器中,您可以更改所有提交信息,保存并退出。
这将重写您分支的每个提交,您必须强制推送(确保在该分支上工作的任何人都知道)。

您可以使用相同的提交范围以编程方式执行此操作,使用 git filter-repo , 使用其新的 --replace-message option .
replace-text 一样, regex: 受支持,因此您可以使用 expression.txt 文件:

regex:(.*)$==>TIX-321 \1

还有命令:

git filter-repo --replace-message expressions.txt $(git merge-base --fork-point main)..test_branch

关于git - 将票号附加到本地和远程 git 历史记录中的所有提交消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69431825/

相关文章:

linux - 如果不同文件中相同位置的字段值为 "zero",则修改一个文件的字段值

linux - 将 .gz 文件解压到/tmp 位置并在任务完成后删除未压缩的 .gz 文件

mysql - 如何使用 exec.Command 在 golang 中执行 Mysql 脚本

Git submodule.$name.url 覆盖不起作用

git - 有没有办法从具有完整历史记录的 repo 中提取文件夹?

git - 如何连接到远程 Git 存储库?

shell - 按行上的字数对海量文件的行进行排序(最好是并行的)

git - 提交到 git 时出错,提示未找到 stCommitMsg 文件

git - 如何在git中关注一个文件

shell - 当不在 $HOME 时让提示只显示目录?