历史修改
更改提交记录,解决误提交大文件如mp4、密码文件如.env等一系列问题
# 检索项目当中的大文件
git rev-list --objects --all | grep -E `git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}' | sed ':a;N;$!ba;s/\n/|/g'`
# 移除所有分支中tag为cat里面的大文件
# --prune-empty 如果删除了大文件而导致了某些commit的更改记录为空,则不再保留这些commit
git filter-branch --tree-filter 'rm -f path/to/large/files' --prune-empty --tag-name-filter cat --all
替换提交中的指定注释,支持正则表达式
git filter-branch --msg-filter "sed s/Merge.*/分支合并/g" -f master
git filter-branch --msg-filter "sed s/Merge.*/分支合并/g" -f from_version..to_version
修改commit message
git commit --amend 可以对上一次的提交做修改
push -f 如果上一次的提交已经push了,那么需要加f参数覆盖服务端,不过不建议这么搞
tag管理
获取tag列表
git tag
删除所有tag
git tag | xargs git tag -d
本文介绍了如何使用Git来管理和修改提交历史,包括查找并删除大文件,如.mp4和.env文件,以及如何修改commit消息。通过git filter-branch命令,可以过滤并修正提交历史中的大文件,同时提供了替换特定commit消息的技巧。此外,还讲解了git commit --amend用于修改最近的commit,以及git tag相关操作,如查看、删除tag的命令。

4043

被折叠的 条评论
为什么被折叠?



