Git 实用技巧速查手册

Git 实用技巧速查手册

日常开发中最常遇到的 Git 场景,一条命令解决问题。收藏备用。


一、撤销与回退

撤销工作区的修改(还没 add)

1
git checkout -- <文件名>

撤销已 add 的文件

1
git reset HEAD <文件名>

撤销最近一次 commit(保留修改)

1
git reset --soft HEAD~1

撤销最近一次 commit(丢弃修改)

1
git reset --hard HEAD~1

修改最近一次 commit 的信息

1
git commit --amend

二、分支操作

创建并切换到新分支

1
2
3
git checkout -b <分支名>
# 或新版写法
git switch -c <分支名>

删除本地分支

1
2
git branch -d <分支名>      # 已合并的分支
git branch -D <分支名> # 强制删除

删除远程分支

1
git push origin --delete <分支名>

查看已合并/未合并的分支

1
2
git branch --merged          # 已合并到当前分支的
git branch --no-merged # 未合并的

三、暂存工作现场

临时保存当前工作

1
git stash

恢复最近一次 stash

1
git stash pop

查看所有 stash

1
git stash list

恢复指定 stash(不删除记录)

1
git stash apply stash@{2}

四、查看与搜索

查看某文件的修改历史

1
git log --follow -p -- <文件名>

查看谁改了某一行(逐行追溯)

1
git blame <文件名>

搜索代码内容

1
git grep "关键词"

查看某次 commit 改了什么

1
git show <commit-id>

查看两个分支的差异

1
git diff <分支A>..<分支B>

五、合并与变基

合并分支(保留分支历史)

1
git merge <分支名>

变基(让提交历史更干净)

1
git rebase <目标分支>

合并冲突时中止

1
2
git merge --abort
git rebase --abort

交互式变基(整理最近 N 次提交)

1
git rebase -i HEAD~3

常用操作:pick 保留、squash 合并、drop 删除、reword 改信息。


六、远程仓库

查看远程仓库信息

1
git remote -v

更换远程仓库地址

1
git remote set-url origin <新地址>

拉取远程分支但不合并

1
git fetch origin

强制推送(慎用)

1
git push --force-with-lease origin <分支名>

--force-with-lease--force 安全,会检查远程是否有别人的新提交。


七、.gitignore 生效问题

文件已经被跟踪了,加 .gitignore 不生效?

1
2
3
git rm -r --cached .
git add .
git commit -m "更新 .gitignore"

--cached 只从 Git 索引中删除,不会删除本地文件。


八、实用别名配置

1
2
3
4
5
6
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.last 'log -1 HEAD'
git config --global alias.unstage 'reset HEAD --'

配置完直接用:

1
2
git st          # 等同于 git status
git co main # 等同于 git checkout main

九、找回误删的代码

查看所有操作记录(包括已删除的 commit)

1
git reflog

恢复到指定操作

1
git checkout <reflog中的commit-id>

reflog 是救命稻草,只要做过就有记录,reset –hard 也能找回来。


十、常见翻车场景速查

场景 解决方案
commit 写错信息 git commit --amend
add 了不该 add 的文件 git reset HEAD <文件>
切分支时有未提交的修改 git stash → 切分支 → git stash pop
合并冲突不想合了 git merge --abort
push 了想撤回 git revert <commit-id>(生成反向提交)
误删分支 git reflog 找到 commit → git checkout -b <分支名> <commit-id>
改乱了想回到某个版本 git reset --hard <commit-id>git checkout <commit-id> -- <文件>

掌握这些,日常开发 90% 的 Git 问题都能快速解决。遇到复杂场景再查文档也不迟。