Git 是目前最流行的分布式版本控制系统,用于高效管理项目代码的版本、协作开发、历史回溯。本文整理了 Git 最常用的操作,从基础配置、本地/远程仓库操作,到重点的回撤/回退场景(工作区、暂存区、已提交、已推送),附详细命令和示例,帮你快速掌握 Git。
一、前置准备:基础配置
安装 Git 后,首先需要配置用户信息(提交代码时会用到):
1 2 3 4 5 6 7 8
| git config --global user.name "你的用户名"
git config --global user.email "你的邮箱@example.com"
git config --list
|
二、本地仓库基础操作
1. 初始化/克隆仓库
1 2 3 4 5
| git init
git clone https://github.com/用户名/仓库名.git
|
2. 查看状态与差异
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| git status
git diff
git diff --cached
git log
git log --oneline
git log --graph --oneline --all
|
3. 提交代码(核心三步)
Git 提交代码分为三个区域:工作区(你写代码的地方)→ 暂存区(临时存储)→ 本地仓库(永久保存)。
1 2 3 4 5 6 7 8 9 10 11 12 13
|
git add 文件名
git add .
git commit -m "提交说明"
git commit -am "提交说明"
|
三、远程仓库操作
1. 关联远程仓库
1 2 3 4 5 6 7 8
| git remote -v
git remote add origin https://github.com/用户名/仓库名.git
git remote set-url origin https://github.com/用户名/新仓库名.git
|
2. 推送与拉取
1 2 3 4 5 6 7 8 9 10
| git push -u origin 分支名
git push
git pull origin 分支名
git fetch origin 分支名
|
四、分支操作(Git 核心优势)
1. 分支基础操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| git branch -a
git branch
git branch -r
git branch 新分支名
git checkout 分支名
git switch 分支名
git checkout -b 新分支名
git switch -c 新分支名
git merge 要合并的分支名
git branch -d 分支名
git branch -D 分支名
git push origin --delete 远程分支名
|
五、标签操作(版本发布)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| git tag
git tag 标签名
git tag -a 标签名 -m "标签说明"
git push origin 标签名
git push origin --tags
git tag -d 标签名
git push origin --delete 标签名
|
六、重点:回撤/回退操作(分场景处理)
这是 Git 最容易搞混的部分,不同的场景用不同的命令,一定要先看清楚自己处于哪个阶段!
场景1:只改了工作区,还没 add(撤销工作区的修改)
1 2 3 4 5 6 7 8 9
| git checkout -- 文件名
git restore 文件名
git checkout .
git restore .
|
场景2:已经 add 了,还没 commit(撤销暂存区的修改)
1 2 3 4 5 6 7 8 9
| git reset HEAD 文件名
git restore --staged 文件名
git reset HEAD .
git restore --staged .
|
场景3:已经 commit 了,还没 push(撤销本地仓库的提交)
这里有三个常用参数,区别很大,一定要看清楚:
| 参数 |
作用 |
对工作区/暂存区的影响 |
适用场景 |
--soft |
仅撤销 commit,保留修改在暂存区 |
工作区和暂存区的修改都保留 |
提交说明写错了,想重新 commit |
--mixed(默认) |
撤销 commit,保留修改在工作区 |
暂存区的修改撤回到工作区,工作区修改保留 |
提交错了,想重新修改后再 commit |
--hard |
彻底撤销 commit,丢弃所有修改 |
工作区和暂存区的修改都丢失 |
提交完全错了,想彻底回退到上一个版本(慎用!) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| git reset --mixed HEAD~1
git reset --mixed 提交ID
git reset --soft HEAD~1 git commit -m "正确的提交说明"
git reset --mixed HEAD~1
git add . git commit -m "修复后的提交说明"
git reset --hard HEAD~1
|
场景4:已经 push 到远程仓库了(撤销远程提交)
注意:已经 push 到远程的提交,不要随便用 git reset(会修改历史,导致其他人的代码冲突),推荐用 git revert(生成一个新的 commit 来撤销之前的修改,不修改历史)。
1 2 3 4 5
| git revert 要撤销的提交ID
git push origin 分支名
|
如果必须用 git reset(比如提交了敏感信息),操作如下(仅适用于只有你一个人用的分支,否则会坑队友):
1 2 3 4 5
| git reset --hard 提交ID
git push -f origin 分支名
|
七、其他常用技巧
1. 暂存当前修改(stash)
当你正在写代码,突然需要切换分支处理其他事,但当前代码还没写完不想 commit,可以用 stash 暂存:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| git stash
git stash list
git stash apply
git stash pop
git stash drop
git stash clear
|
2. 查看某个人的提交
3. 撤销合并
1 2 3 4 5
| git merge --abort
git revert -m 1 合并提交的ID
|
八、注意事项
git reset --hard 慎用:会彻底丢弃工作区和暂存区的修改,无法恢复,执行前最好确认一下。
- **已 push 的提交优先用
git revert**:避免修改历史,导致协作冲突。
- **多 commit
git status**:随时查看状态,避免误操作。
- 写好提交说明:用清晰的语言描述修改内容,方便后续回溯。
九、常用命令速查
| 操作 |
命令 |
| 初始化仓库 |
git init |
| 克隆仓库 |
git clone 地址 |
| 查看状态 |
git status |
| 添加到暂存区 |
git add . |
| 提交 |
git commit -m "说明" |
| 推送 |
git push |
| 拉取 |
git pull |
| 查看历史 |
git log --oneline |
| 创建分支 |
git branch 分支名 |
| 切换分支 |
git switch 分支名 |
| 合并分支 |
git merge 分支名 |
| 撤销工作区修改 |
git restore 文件名 |
| 撤销暂存区修改 |
git restore --staged 文件名 |
| 撤销本地提交(保留修改) |
git reset --mixed HEAD~1 |
| 撤销远程提交(不修改历史) |
git revert 提交ID |
Git 的功能非常强大,但掌握这些常用操作已经能覆盖 90% 的开发场景了,多练多用就能熟练掌握!