🚀 Git 实用命令速查
一页速查,覆盖日常开发 90% 的 Git 操作。 从拉取、提交、回滚到分支合并,每个命令都附带使用场景说明。
⚡ 一分钟上手
1 2 3 4 5 6 7 8
| git clone <url>
git pull origin main git add . git commit -m "feat: 做了什么" git push origin main
|
💡 约定:下文 <远程名称> 通常为 origin,<分支名> 通常为 main / master。本项目的远程名为 blogger_source。
📋 目录
⬇️ 拉取代码
1 2 3
| git pull <远程名称> <分支名> git fetch <远程名称> <分支名> git remote -v
|
💡 每天开始工作前先 git pull,避免后续合并冲突。
⬆️ 提交更新
标准流程
1 2 3 4
| git status git add . git commit -m "提交说明" git push <远程名称> <分支名>
|
快捷操作
1 2 3
| git commit -am "提交说明" git commit --amend -m "新的提交说明" git log --oneline -10
|
⚠️ commit --amend 会改写历史,不要对已推送的提交使用,除非你确定只有自己在用这个分支。
🗑️ 删除文件
1 2 3 4 5 6 7 8
| git rm <文件名> git rm -r <文件夹> git commit -m "删除 xxx"
git rm --cached <文件名> echo "<文件名>" >> .gitignore
|
💡 典型场景:误提交了 node_modules/、.DS_Store、配置文件等。先用 rm --cached 取消追踪,再写入 .gitignore。
↩️ 恢复修改
三阶段回退指南
| 所处阶段 |
命令 |
效果 |
| 工作区(未 add) |
git restore <file> |
丢弃工作区修改 |
| 暂存区(已 add) |
git restore --staged <file> |
从暂存区移除,保留修改 |
| 本地仓库(已 commit) |
git reset --soft HEAD~1 |
撤销提交,保留修改 |
| 本地仓库(已 commit) |
git reset --hard HEAD~1 |
⚠️ 撤销提交 + 丢弃修改 |
1 2 3 4 5 6 7 8 9 10 11
| git restore <文件名> git restore .
git restore --staged <文件名> git restore --staged .
git reset --soft HEAD~1 git reset --hard <commit-id>
|
找回”丢失”的提交
1 2
| git reflog git reset --hard <commit-id>
|
⚠️ git reset --hard 不可逆,执行前确认工作区没有需要保留的修改。--soft 更安全。
📜 修改日志
查看历史
1 2 3 4 5 6
| git log git log --oneline git log --graph --oneline --all git log --author="用户名" git log -- <文件名> git log --since="2024-01-01" --until="2024-12-31"
|
查看差异
1 2 3 4
| git show <commit-id> git diff git diff --cached git diff <id1> <id2>
|
追溯责任
🌿 分支管理
查看 & 创建 & 切换
1 2 3 4 5 6 7 8 9 10 11 12
| git branch git branch -a git branch --show-current
git switch -c <分支名> git switch <分支名>
git checkout -b <分支名> git checkout <分支名>
|
删除 & 重命名
1 2 3 4
| git branch -d <分支名> git branch -D <分支名> git push <远程名称> --delete <分支名> git branch -m <新名称>
|
💡 合并完的功能分支及时删除,保持仓库整洁。用 git branch -d 安全删除不会丢代码。
🔀 合并代码
标准合并(merge)
1 2 3
| git switch main git merge <分支名> git push <远程名称> main
|
变基合并(rebase)
1 2 3 4 5 6
| git switch feature git rebase main
git add . git rebase --continue git push <远程名称> feature --force
|
⚠️ rebase vs merge 怎么选?
- merge:保留完整历史,适合公共分支
- rebase:线性历史更干净,适合个人分支。不要 rebase 已推送的公共分支。
解决冲突
1 2 3 4
| git merge <分支名>
git add <冲突文件> git commit -m "解决合并冲突"
|
冲突标记解读:
<<<<<<< HEAD —— 当前分支的代码
======= —— 分隔线
>>>>>>> 分支名 —— 要合入的分支代码
撤销合并
1 2
| git reset --hard HEAD~1 git push <远程名称> main --force
|
⚠️ 撤销已推送的合并请通知团队成员,他们需要 git pull --force 同步。
💡 实用技巧
临时保存进度(stash)
1 2 3 4
| git stash save "描述" git stash list git stash pop git stash apply stash@{0}
|
💡 场景:代码写到一半需要切分支处理紧急 bug,用 stash 暂存,回来再 pop。
标签管理
1 2 3 4 5
| git tag v1.0.0 git tag -a v1.0.0 -m "版本说明" git push <远程名称> v1.0.0 git push <远程名称> --tags git tag -d v1.0.0
|
.gitignore 模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| node_modules/ vendor/
.DS_Store Thumbs.db
*.log
dist/ build/
.vscode/ .idea/
|
⚠️ 原则 & 注意事项
- 推送前先拉取 —
pull → push 是一条铁律,不要跳过拉取直接推送
- 小步提交 — 每个 commit 只做一件事,出问题回滚不牵连其他
- 写清楚提交信息 — 说明”做了什么”和”为什么”,不要写”修了个 bug”
--force 是双刃剑 — 用前确认影响范围,用后通知队友
- 遇事不慌看 reflog — 只要 commit 过,
git reflog 几乎都能救回来
本项目配置:远程名 blogger_source,SSH 方式连接。
日常命令:git pull blogger_source main · git push blogger_source main