
如何 fetch 所有 Git 分支
拉取所有远程分支信息:git fetch --all(多个远程时全部更新),只更新 origin 用 git fetch origin。fetch 只更新 origin/ 跟踪引用不动本地分支;git branch -a 查看全部分支。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

拉取所有远程分支信息:git fetch --all(多个远程时全部更新),只更新 origin 用 git fetch origin。fetch 只更新 origin/ 跟踪引用不动本地分支;git branch -a 查看全部分支。

找回被删文件:git log --diff-filter=D -- <路径> 定位删除提交,然后 git restore --source=<删除前的提交>^ <路径> 恢复。不记得路径用 git log --name-status 或 git log -S"文件内容关键词" 搜。

列出历史上的删除记录:git log --diff-filter=D --summary 显示所有删除文件及所在提交;按内容搜用 git log -S"关键词";确认路径后 git log --all -- <路径> 追踪该文件的完整历史。

定位文件的删除提交:git log --diff-filter=D --format 带作者日期 -- <路径>,最后一条就是删除提交;git show <哈希> 看删除现场(改了哪些文件、提交信息)。配合 git blame 其父提交可追溯此前每行的来历。

强制以远程为准覆盖本地:git fetch origin 后 git reset --hard origin/<分支名>,本地提交和改动全部丢弃;未跟踪文件再加 git clean -fd。执行前确认本地工作确实可以丢弃或先 stash 备份。

删除本地 Git 仓库:删除 .git 隐藏目录即解除版本控制(文件保留);连代码一起删则删整个项目目录。命令:rm -rf .git。记得检查是否有对应远程仓库需要一并删除。

获取当前提交哈希:git rev-parse HEAD(完整 40 位);短哈希用 git rev-parse --short HEAD。脚本中常用它做版本标记、构建号、镜像标签。

全历史搜索代码:git grep "模式" $(git rev-list --all) 搜索所有提交的文件内容;git log -S"字符串" 找该字符串出现/消失的提交;git log -G 支持正则。这是代码考古的标配组合。

判断分支是否已合并:git branch --merged 列出已合并分支(目标分支在列即已合并);精确判断用 git merge-base --is-ancestor <分支> main && echo merged;看远程分支用 git branch -r --merged。

列出提交涉及的文件:git show --name-only --oneline <哈希>,或脚本友好的 git diff-tree --no-commit-id --name-only -r <哈希>。带增删改状态用 --name-status,看统计用 --stat。

查看包含某提交的分支:git branch --contains <提交哈希>,加 -a 包含远程分支,-r 只看远程。查标签用 git tag --contains。判断"这个修复进了哪些发布分支"时最常用。

列出未推送提交:git log origin/main..HEAD(当前分支相对上游);全仓库范围用 git log --branches --not --remotes --oneline。git status 的 ahead 提示和 git cherry -v 也能快速确认。