显示完整的commit id值
git log --pretty=format:"%H"
显示作者时间与提交时间
git show <commit_id> --pretty=fuller
git log可视化命令
git log --graph --oneline --all
git log --graph --oneline --all --date=short --pretty=format:'%C(yellow)%h%Creset %Cgreen%ad%Creset %C(blue)%s%Creset %C(magenta)%d%Creset %C(cyan)(%an)%Creset' --decorate=full
显示指定时间内有改动的文件
git log --since='2024-04-11' --until='2024-06-19' --name-status
代码行数统计
统计当前项目下每个人新增删除与总代码行数
切换到项目目录执行:
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -; done
git gc
大体来说,当运行 "git gc" 命令时,Git会收集所有松散对象并将它们存入 packfile,合并这些 packfile 进一个大的 packfile,然后将不被任何 commit 引用并且已存在一段时间 (数月) 的对象删除。 此外,Git还会将所有引用 (references) 并入一个单独文件。
git-fsck
查找被悬空的ID
git verify-pack
命令用于显示已打包的内容:
git verify-pack -v .git/objects/pack/pack-7a16e4488ae40c7d2bc56ea2bd43e25212a66c45.idx
解压pack包,注意需要把原来在 .git 目录里的 pack 文件移动出来(可以移动到.git/object下面)而非复制出来,否则聪明的 git 会检测到 objects 目录里的 pack 文件已经有相同的 object,就不会展开了。
git unpack-objects < pack-d4da3e51cfa0c0650e2b3b663d71bb1f8ce4d825.pack