如何批量修改 Git Commit Message

184 阅读12分钟

昨天把整理了部分的野生动物图片数据上传到了 Github 仓库,但后来查看 git log 的时候,发现提交的 commit message 没有遵循提交规范,一共85个提交,而且已经 push 到远端 Github 仓库了, github.com/wildlifeinc… 。之前也改过单个的 commit message,但这次要改的实在太多了。经过一番查找与实验,总结了一套批量修改 Git Commit Message 的方法。

commit b81c9d0dc11eff2336a87e3f3f33b7d0b0dc98d8 (HEAD -> main, origin/main)
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Sun Jul 2 21:49:57 2023 +0800

    add Equus kiang image

commit 9ed8f1e74cc40a77d84158f7ad04f9cfe744f07b
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Sat Jul 1 21:49:28 2023 +0800

    add Equus hemionus image

commit 047efe1c420b4d9353c36b01238ec2c4ae4e25de
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Fri Jun 30 21:48:49 2023 +0800

    add Equus ferus image

commit afd25d615687b262ca9bad76e98d97eece0e1d51
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Thu Jun 29 21:48:05 2023 +0800

git filter-branch 命令

git filter-branch 命令的主要功能就是帮助重写 Git 项目分支历史,具体用法详见:

git filter-branch --help

注意:由于是第一次用这个命令,为了防止操作失误污染整个项目,于是先建立一个dev分支做隔离,在进行实验。

git filter-branch -f --msg-filter 'sed -e "s/^add/feat: add/g"' HEAD
WARNING: git-filter-branch has a glut of gotchas generating mangled history
	 rewrites.  Hit Ctrl-C before proceeding to abort, then use an
	 alternative filtering tool such as 'git filter-repo'
	 (https://github.com/newren/git-filter-repo/) instead.  See the
	 filter-branch manual page for more details; to squelch this warning,
	 set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...

Rewrite b0b4cc4e1a89acb1a05a4f871d43e67dffaecd1e (1/85) (0 seconds passed, remaiRewrite b27d23199345736a3cb9667eb037af1ebe16c88c (2/85) (0 seconds passed, remaiRewrite 2bb418eb12650190110583c8f367da0b1b679a89 (3/85) (0 seconds passed, remaiRewrite 23745f9a7e4f4736bb1a9fc5a642853309a532d7 (4/85) (0 seconds passed, remaiRewrite 916fb83dfae96fe112621362c2428acea7e1bcc6 (5/85) (0 seconds passed, remaiRewrite 7ebc27f335bf649a6c47eb4f0201d1613f367479 (6/85) (0 seconds passed, remaiRewrite 75b276bdfa7043ed1196ac8e8da38920c421f688 (7/85) (0 seconds passed, remaiRewrite faa59cdb9350509a6adbea613008fd545fd2288b (8/85) (0 seconds passed, remaiRewrite b07cec5080ef70c89d89d18cfad298a14d11b0b7 (9/85) (0 seconds passed, remaiRewrite 6f69e1417ff76e45845ed70cbc191c0e71e91ac1 (10/85) (0 seconds passed, remaRewrite 1d4ab8627a0e6595f8f7bd575a0d2dc14728640e (11/85) (0 seconds passed, remaRewrite f1a6ec822257c9fd8d3ebaa242cb7ba5bd1b57b1 (12/85) (0 seconds passed, remaRewrite 866cce643df5705c6b71e778fc83d7792ed65f3c (13/85) (0 seconds passed, remaRewrite 0e6a17e07c9157831eba01438378cbf76f7f97ed (14/85) (0 seconds passed, remaRewrite 0afa90c92d409e085d0db1da8a81a9c0641aad64 (15/85) (0 seconds passed, remaRewrite 1a74a6bdd7619f8faa1b56420c53e2620ffcce85 (16/85) (0 seconds passed, remaRewrite e61073668982a3f3578537f1d2ce6218dd64c832 (17/85) (0 seconds passed, remaRewrite bb20933be02db2976297ea9b9e6c72bca9d90611 (18/85) (0 seconds passed, remaRewrite 54283d4f9333460b831fe902fc376adfca0e3b8b (19/85) (0 seconds passed, remaRewrite cffac979eeb34152d9901d3ce409a51806234eac (20/85) (0 seconds passed, remaRewrite 3360b0934dd0c4569fdb7908a4e2490c94435edf (21/85) (0 seconds passed, remaRewrite 08e1cb97afc29bf8bdcdb82f7dac0b8f5bce2a6d (22/85) (0 seconds passed, remaRewrite 1f2b4f7bdaa07612d0472de1fc818e1695a08c72 (23/85) (0 seconds passed, remaRewrite 4224bd64ec62fe12fc0b07e90b4b4e1f42a05f5b (24/85) (0 seconds passed, remaRewrite e6ee0c310c8e27524ec4e4b3e5571757dbdb34bd (25/85) (0 seconds passed, remaRewrite 878df89f6fc5837b551d8e04b1b16722671cc48b (26/85) (0 seconds passed, remaRewrite 98f45c0186bd7af01597e8d401d7a058a258ab46 (27/85) (0 seconds passed, remaRewrite e62e3ec62f01e4b7fcd92c72e6e4f57ab36d992c (28/85) (0 seconds passed, remaRewrite 0549fb3b63dc1b79d92cc0c027dea006c605ee00 (29/85) (0 seconds passed, remaRewrite e582bd6fc95a43783d56a072d8fc78973056b39b (30/85) (0 seconds passed, remaRewrite 47d6d30b2e81dcdd1e0efe90aee1d0a9d741bafa (31/85) (0 seconds passed, remaRewrite 5d38b1a637b44fbc90ddd195f49f715c008bd875 (32/85) (0 seconds passed, remaRewrite 263fa6f54fc3d9dc64dbd03151ee3e75caca2b36 (33/85) (0 seconds passed, remaRewrite c0f2cd6cf3fe9cb4422e5dc518c6255e22b0a1a9 (34/85) (0 seconds passed, remaRewrite 23a046d6b586301da05d40dd147c7e89447eba4d (35/85) (0 seconds passed, remaRewrite 818f441552743ae5f260230acea802b2dc22f44c (36/85) (0 seconds passed, remaRewrite 88ba9af58be66035c27573309dfa88c3fb7745a6 (37/85) (0 seconds passed, remaRewrite 358c76fcc1bdffa216c641257d2123e533ab7cc5 (38/85) (0 seconds passed, remaRewrite a3810978e97e228d264c083f84c2c8f2173e87cf (39/85) (0 seconds passed, remaRewrite 4cdfcd684840bdd72933034d56890692c103b5c6 (40/85) (0 seconds passed, remaRewrite 191aafb0f19bcce0c585a01a6e4c5272f2d8f398 (41/85) (0 seconds passed, remaRewrite ebbc0415e72953ec468f8d834ef46305a4c83c30 (42/85) (1 seconds passed, remaRewrite 7c23d6d03fce788f9a70a487359a7743dec64113 (42/85) (1 seconds passed, remaRewrite 9f9092215f639e90c6e070ed3cbf8846f06a9349 (42/85) (1 seconds passed, remaRewrite 363f4cf4dd1d23e304c9d2093ff0ecff3959bd18 (42/85) (1 seconds passed, remaRewrite 39079ebbfc6ce70fb0aa800fb249bc22340c7a5a (42/85) (1 seconds passed, remaRewrite f7d822c50e4f14cbcd687f5344cddf2ed6c9a411 (42/85) (1 seconds passed, remaRewrite 828fc64b13fd0cc06fff962d4ca15193f48aeac1 (42/85) (1 seconds passed, remaRewrite 026db2371265bb615cbc337aef368d63b36c589a (42/85) (1 seconds passed, remaRewrite 2318a8d795b5f008e29da4f275c83135026b2ec8 (42/85) (1 seconds passed, remaRewrite 3f763a35208c3a9e38f79e22835b47601c45cdad (42/85) (1 seconds passed, remaRewrite 163dc807c15de7f5bb548dae32160bc8a1ccf4c5 (42/85) (1 seconds passed, remaRewrite cd56e9f765e7edca423a67bac67f20fbe7a79edd (42/85) (1 seconds passed, remaRewrite ed9aeb68204da998ce85828c2d3282c6c5315cc5 (42/85) (1 seconds passed, remaRewrite f09e17c359cc3b9950ca3e64af07925be11bfb02 (42/85) (1 seconds passed, remaRewrite 8bab940ddf9e19b511862d62c64fd31dbbe9dd06 (42/85) (1 seconds passed, remaRewrite a90129f135f1637860e1fe5ee05ba589d93471a5 (42/85) (1 seconds passed, remaRewrite 6b2215741032d5882a0b4489fb106aed988dfa1a (42/85) (1 seconds passed, remaRewrite 8ee204f39289b070ec7e6b684acb03ee25ef1d0a (42/85) (1 seconds passed, remaRewrite 45bac436ed85799ae9d57b6b5ae26afb8d749a30 (42/85) (1 seconds passed, remaRewrite 040c18d6d4e3fef904e1233655c9c31378f384f4 (42/85) (1 seconds passed, remaRewrite ddbaf7108ff2f9153ddb603c8a5ede54553ea8a4 (42/85) (1 seconds passed, remaRewrite 46dc5f7adb8259c24868c33e779ff15ca63b160b (42/85) (1 seconds passed, remaRewrite f4aa3b6e0a7ec05dec4b9e2962d0e398e3d5247d (42/85) (1 seconds passed, remaRewrite 3022869ddfb78954358f61444c165b5faf8cee9f (42/85) (1 seconds passed, remaRewrite 60b671bc20c94ba3e918a2ea9fa31625e39e1e0c (42/85) (1 seconds passed, remaRewrite 0cedd8bba2e5612bd8bae9a55e9a0f33bdd6a00c (42/85) (1 seconds passed, remaRewrite 2595e94f3c5cfbded694a6d45e8402dd677dc1ba (42/85) (1 seconds passed, remaRewrite e411aea483dbba4e508ded82213e2c94040c7890 (42/85) (1 seconds passed, remaRewrite c14c3db649619a86c225e92387acc3f16938d909 (42/85) (1 seconds passed, remaRewrite 03f727bc8e24f3da7506a9abed39fa79b17a54b7 (42/85) (1 seconds passed, remaRewrite a6aa64bb58eb4eafce432ba98a4c00c630a571df (42/85) (1 seconds passed, remaRewrite 41c02149b2c4c6917f38c4896a5cc0bd18a927ad (42/85) (1 seconds passed, remaRewrite c5803a34b283e14c35a89264e3da52486f9ddeba (42/85) (1 seconds passed, remaRewrite 4d0fd35400cbd28b6191e7b8b4930b069b1bd484 (42/85) (1 seconds passed, remaRewrite 737e0a3d0e120504e11bab9165aa1ea3a732cf87 (42/85) (1 seconds passed, remaRewrite a5316b89f847afa618e3894168229fc3a1466a5f (42/85) (1 seconds passed, remaRewrite 80ebdba62ba936c505a9494c321b338e191151a8 (42/85) (1 seconds passed, remaRewrite 74f86159d4ca02f6d08ce78f2ba54cb8c14940c5 (42/85) (1 seconds passed, remaRewrite 4603bc2f063aed10a4753bfce61b4ec0b784b898 (42/85) (1 seconds passed, remaRewrite 67314e9d1144076a5984af60cf25ce3c4709c234 (42/85) (1 seconds passed, remaRewrite e50ab7272cda20431ba882a545b4861f24876640 (42/85) (1 seconds passed, remaRewrite 492774c14e0dcdb6a24e5241cf3cf90b6148c124 (42/85) (1 seconds passed, remaRewrite 3aed0e61bf4b1cace185591cc3bb9068162227af (42/85) (1 seconds passed, remaRewrite 996a7d7f9ef17311cd66bae1bf73723ad2335f7a (85/85) (1 seconds passed, remaining 0 predicted)    
Ref 'refs/heads/dev' was rewritten

git log 查看结果

commit b81c9d0dc11eff2336a87e3f3f33b7d0b0dc98d8 (HEAD -> main, origin/main, dev)
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Sun Jul 2 21:49:57 2023 +0800

    feat: add Equus kiang image

commit 9ed8f1e74cc40a77d84158f7ad04f9cfe744f07b
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Sat Jul 1 21:49:28 2023 +0800

    feat: add Equus hemionus image

commit 047efe1c420b4d9353c36b01238ec2c4ae4e25de
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Fri Jun 30 21:48:49 2023 +0800

    feat: add Equus ferus image

commit afd25d615687b262ca9bad76e98d97eece0e1d51
Author: shenlu89 <shenlu89dev@gmail.com>
Date:   Thu Jun 29 21:48:05 2023 +0800

    feat: add Elephas maximus image

成功

现在这些数据已经可以在 Wildlife in China 上查看了,欢迎参与贡献和 Star。