Git常用命令

Git 是目前最流行的分布式版本控制系统,用于高效管理项目代码的版本、协作开发、历史回溯。本文整理了 Git 最常用的操作,从基础配置、本地/远程仓库操作,到重点的回撤/回退场景(工作区、暂存区、已提交、已推送),附详细命令和示例,帮你快速掌握 Git。


一、前置准备:基础配置

安装 Git 后,首先需要配置用户信息(提交代码时会用到):

1
2
3
4
5
6
7
8
# 1. 配置用户名
git config --global user.name "你的用户名"

# 2. 配置邮箱
git config --global user.email "你的邮箱@example.com"

# 3. 查看配置
git config --list

二、本地仓库基础操作

1. 初始化/克隆仓库

1
2
3
4
5
# 场景1:在当前目录初始化一个新的 Git 仓库
git init

# 场景2:从远程仓库克隆到本地
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

# 查看工作区与暂存区的差异(未 add 的修改)
git diff

# 查看暂存区与本地仓库的差异(已 add 但未 commit 的修改)
git diff --cached
# 或 git diff --staged

# 查看提交历史
git log
# 简洁版历史(一行显示一个 commit)
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 add -A(更彻底,包含删除的文件)

# 第二步:将暂存区的修改提交到本地仓库
# -m 后面是提交说明(必填,建议写清楚修改内容)
git commit -m "提交说明"

# 快捷操作:add + commit 二合一(仅适用于已跟踪的文件)
git commit -am "提交说明"

三、远程仓库操作

1. 关联远程仓库

1
2
3
4
5
6
7
8
# 查看已关联的远程仓库
git remote -v

# 关联远程仓库(origin 是远程仓库的默认别名)
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
# 推送本地仓库到远程仓库(首次推送加 -u,后续可直接 git push)
git push -u origin 分支名
# 后续推送
git push

# 拉取远程仓库的最新代码到本地(自动合并)
git pull origin 分支名

# 仅拉取远程代码,不自动合并(需手动 merge)
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 2.23+ 推荐用 switch(更语义化)
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
# 撤销单个文件的修改(恢复到最近一次 add/commit 的状态)
git checkout -- 文件名
# 或 Git 2.23+ 推荐用 restore
git restore 文件名

# 撤销所有工作区的修改(慎用,会丢失所有未 add 的修改)
git checkout .
# 或
git restore .

场景2:已经 add 了,还没 commit(撤销暂存区的修改)

1
2
3
4
5
6
7
8
9
# 将暂存区的文件撤回到工作区(不修改工作区的内容,只是取消 add)
git reset HEAD 文件名
# 或 Git 2.23+ 推荐用
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
# 回退到上一个 commit(HEAD~1 表示上一个,HEAD~2 表示上两个)
git reset --mixed HEAD~1
# 或指定 commit ID 回退(用 git log --oneline 查看 ID)
git reset --mixed 提交ID

# 示例1:提交说明写错了,重新 commit
git reset --soft HEAD~1
git commit -m "正确的提交说明"

# 示例2:提交的代码有问题,想修改后再提交
git reset --mixed HEAD~1
# 修改代码...
git add .
git commit -m "修复后的提交说明"

# 示例3:彻底回退,丢弃所有修改
git reset --hard HEAD~1

场景4:已经 push 到远程仓库了(撤销远程提交)

注意:已经 push 到远程的提交,不要随便用 git reset(会修改历史,导致其他人的代码冲突),推荐用 git revert(生成一个新的 commit 来撤销之前的修改,不修改历史)。

1
2
3
4
5
# 1. 先在本地生成一个新的 commit 来撤销指定的提交
git revert 要撤销的提交ID

# 2. 推送到远程仓库
git push origin 分支名

如果必须用 git reset(比如提交了敏感信息),操作如下(仅适用于只有你一个人用的分支,否则会坑队友):

1
2
3
4
5
# 1. 本地回退
git reset --hard 提交ID

# 2. 强制推送到远程(-f 表示强制)
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. 查看某个人的提交

1
git log --author="用户名"

3. 撤销合并

1
2
3
4
5
# 合并后还没 commit,撤销合并
git merge --abort

# 合并后已经 commit,撤销合并(用 revert)
git revert -m 1 合并提交的ID

八、注意事项

  1. git reset --hard 慎用:会彻底丢弃工作区和暂存区的修改,无法恢复,执行前最好确认一下。
  2. **已 push 的提交优先用 git revert**:避免修改历史,导致协作冲突。
  3. **多 commit git status**:随时查看状态,避免误操作。
  4. 写好提交说明:用清晰的语言描述修改内容,方便后续回溯。

九、常用命令速查

操作 命令
初始化仓库 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% 的开发场景了,多练多用就能熟练掌握!


Git常用命令
https://cszy.top/2017-05-09 分支/
作者
csorz
发布于
2017年5月9日
许可协议