Git 中的 notes 给提交添加注释
git notes add -m "reviewed by Alice" 给提交添加附加注释不影响提交本身。notes 存储在 refs/notes/ 中。适合补充代码审查记录。
Git 中的 clean 清除未跟踪文件
git clean -n 预览会删除的文件git clean -f 删除未跟踪文件git clean -fd 包括目录。删除前一定要先预览不然后悔莫及。
Git 中 stash apply 和 stash pop 的差异
stash pop 应用并删除存储stash apply 只应用不删除。多次 stash 后用 stash apply 可以选择性地应用而不影响其他存储。
Git 中 diff 查看不同版本的文件差异
git diff 查看工作区和暂存区的差异git diff --cached 查看暂存区和上次提交的差异git diff branch1 branch2 比较两个分支的差异。
Git 中 bisect 二分查找引入 bug 的提交
git bisect start 标记当前 badgit bisect good known-good-commit。Git 自动二分查找帮你定位哪个提交引入了 Bug。本文展示 bisect 的完整流程。
Git 换行符 LF 和 CRLF 的自动转换
Windows 用 CRLFLinux/macOS 用 LF。git config core.autocrlf true 帮你在检出时转 CRLF 提交时转 LF。本文解释不同操作系统的换行符配置。
Git 中的 origin 和 upstream 区别
origin 是 fork 过来的自己的仓库upstream 是原作者的仓库。fork 后需要加 upstream 才能拉取原仓库的更新。本文解释两个远程仓库各自的用途。
Git pull 强制覆盖本地修改
git reset --hard origin/main 强制让本地分支和远程一致丢弃所有本地差异。如果有未提交的修改需要先 stash 或 reset HEAD。本文解释强制覆盖的几种方式及其后果。
Git 查看某个文件的修改历史
git log --follow file 查看文件的所有修改记录包括重命名后。git blame file 逐行显示每行最后一个修改人和版本。本文给出文件历史追踪的常用命令。
Git SSH 和 HTTPS 两种协议切换远程仓库地址
Git 远程仓库的 SSH 和 HTTPS 协议各有优劣。SSH 不需要每次输密码但需要配置密钥。HTTPS 适合防火墙背后的环境。git remote set-url 可以切换。
Git cherry-pick 把其他分支的提交捡到当前分支
git cherry-pick commitHash 把另一个分支的某个提交应用到当前分支而不是合并整个分支。适合紧急修复要在多个分支上生效的场景。本文演示 cherry-pick 多个提交。
Git 提交 GPG 签名配置
Git 提交用 GPG 签名可以验证提交人身份防止伪造。git commit -S 签名提交git tag -s 签名标签。本文介绍 GPG 密钥生成配置和在 GitHub 上显示 Verified 的过程。
Git 恢复被删除的分支 reflog 找回
git branch -D 删除了分支但 Git 不会立即删除提交对象。git reflog 可以找到被删分支最后一次指向的 commit hash。本文展示 reflog 中恢复的完整命令。
Git 忽略已经跟踪的文件变更但不删除
git update-index --assume-unchanged file 让 Git 暂时忽略已跟踪文件的变更适合本地配置不想提交的场景。想恢复用 --no-assume-unchanged。
Git 将多个提交合并成一个用 squash
git rebase -i HEAD~3 然后在交互界面把 pick 改成 squash 可以把最后三个提交合并成一个。合并后提交历史更加清晰适合在推送 PR 前整理提交记录。
Git rebase 过程中冲突了怎么退出
git rebase 遇到冲突时可以用 git rebase --abort 恢复到 rebase 之前的状态。git rebase --skip 跳过当前提交git rebase --continue 解决完冲突后继续。
Git stash 暂存后别忘了清理
git stash 暂存当前修改但不清理 stash 列表会越积越多。pop 同时恢复并删除记录drop 只删除不恢复。本文建议不要让 stash 超过五条。
Git 合并冲突 HEAD 和 incoming 分别是谁的
Git 合并冲突 HEAD 和 incoming 分别是谁的是开发中经常遇到的问题。本文从实际场景出发分析原因并给出可操作的解决方案适合正在排查这个问题的开发者参考。
Git 版本控制高级工作流
超越基础命令,学习 Git Flow/GitHub Flow 协作模式、交互式 rebase 整理提交历史以及 Git Hooks 自动化检查。