
如何更换 Git 默认的提交信息编辑器
更换 Git 默认编辑器:git config --global core.editor,如 VS Code 用 "code --wait",nano 直接写 nano,Vim 写 vim。--wait 类参数保证 Git 等编辑器关闭后再继续。
聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

更换 Git 默认编辑器:git config --global core.editor,如 VS Code 用 "code --wait",nano 直接写 nano,Vim 写 vim。--wait 类参数保证 Git 等编辑器关闭后再继续。

选择性合并的手段:整个提交用 git cherry-pick;单个文件用 git checkout 分支 -- 路径;文件内部分改动用 git checkout -p 交互挑选;不想提交先合试用 git merge --no-commit --no-ff。

查看全局 Git 配置:git config --global --list;看全部生效配置(含来源)用 git config --list --show-origin;查单个值用 git config --get user.email。配置文件在 ~/.gitconfig。

压缩最近 N 个提交:git rebase -i HEAD~N,把除第一条外的 pick 全改成 squash 或 fixup,保存后编辑最终提交信息。已推送需 --force-with-lease 强推;纯本地操作零风险。

git stash 默认不包含未跟踪文件,加 -u(--include-untracked):git stash -u;连 .gitignore 忽略的文件也要收用 -a(--all)。只收未跟踪文件可用 git stash push -u -- <路径>。

给旧提交打标签:git log 找到提交哈希,git tag -a <标签名> <哈希> -m "说明",然后 git push origin <标签名> 推送。标签指向提交而非分支,补打历史版本标签完全合法。

撤销 amend:git reflog 找到 amend 前的提交哈希,git reset --soft <原提交哈希> 即可恢复。amend 只是生成了新提交,原提交仍在 reflog 中,30 天内随时可回。

撤销暂存:git restore --staged <文件>(Git 2.23+)或旧语法 git reset HEAD <文件>;全部取消暂存用 git restore --staged .。只动暂存区,工作区改动原样保留。

rebase 完成后想撤销:git reflog 找到 rebase 前的分支顶端(通常是 rebase 动作记录上方的条目),git reset --hard <哈希> 恢复。rebase 不改写对象只新建提交,原历史在 reflog 窗口期内都可找回。

撤销 reset:git reflog 找到 reset 前的提交哈希,git reset --hard <哈希> 拨回。soft/mixed reset 后改动还在工作区/暂存区可直接重提;hard reset 丢弃的提交也能靠 reflog 在 30 天内找回。

撤销最近提交按需求选:保留改动到暂存区 git reset --soft HEAD^;保留到工作区 git reset HEAD^;彻底丢弃 git reset --hard HEAD^;只想修正内容用 git commit --amend。已推送用 git revert。

撤销已推送提交的安全做法是 git revert <哈希>:生成反向提交,不改写历史,push 后对协作者零影响。只有在确认无人拉取过、或个人分支上,才可用 reset + force-with-lease 强推。