目录
文件与目录
ls -lah # 含隐藏文件、人类可读大小
du -sh * | sort -h # 当前目录各项占用,从小到大
find . -name "*.log" -mtime -7 # 最近 7 天修改的日志
定位大文件时优先用 du -sh 加排序,比递归 ls 直观。
文本搜索
rg "pattern" -g '!node_modules' # 忽略目录
rg -l "TODO" src/ # 只列文件名
rg -n -C 3 "error" logs/ # 带上下文行号
ripgrep 默认遵守 .gitignore,在仓库里通常比 grep -r 更快。
Git 日常
git switch -c feat/xxx # 新建并切换分支
git add -p # 分块暂存,提交前自查
git commit --amend --no-edit # 追加到上一次提交
git log --oneline --graph -20
git diff --stat main...HEAD # 分支相对 main 的改动概览
撤销
git restore <file> # 丢弃工作区修改
git restore --staged <file> # 取消暂存,保留修改
git reset --soft HEAD~1 # 撤销提交,改动回到暂存区
git revert <commit> # 生成反向提交,适合已推送的历史
已经推送的分支不要用 reset 改写历史,用 revert。
排错
git remote -v
git branch -vv # 查看上游跟踪关系
git status --short
GIT_TRACE=1 git fetch # 排查认证 / 网络问题
推送失败时先确认三件事:远程地址、当前分支的上游、凭据是否可用。