Loading...

文章背景图

Git 终端操作完全指南:从入门到实战

2026-04-15
2
-
- 分钟
|

Git 终端操作完全指南:从入门到实战

本文涵盖 Git 最常用的命令、实际效果说明,以及如何在 VSCode 中高效使用 Git。适合初学者和日常开发者参考。


一、初始配置

第一次使用 Git 前,需要设置你的身份信息,这些信息会出现在每次提交记录中。

git config --global user.name "你的名字"
git config --global user.email "your@email.com"
git config --global init.defaultBranch main

效果:所有仓库的提交都会使用这个名字和邮箱。init.defaultBranch main 让新建仓库默认主分支叫 main 而不是旧版的 master

查看配置:

git config --list

二、仓库初始化与克隆

创建新仓库

mkdir my-project
cd my-project
git init

效果:在当前目录生成 .git 隐藏文件夹,Git 开始追踪这个目录的所有变化。

克隆远程仓库

git clone https://github.com/user/repo.git
git clone https://github.com/user/repo.git my-folder  # 指定本地文件夹名

效果:下载整个仓库到本地,包括所有历史记录、所有分支。自动设置好远程地址 origin


三、日常操作流程

这是每天都会用到的核心流程:修改 → 暂存 → 提交 → 推送

1. 查看状态

git status

效果:显示哪些文件被修改了、哪些是新文件、哪些已暂存。颜色提示: - 红色:未追踪或已修改未暂存 - 绿色:已暂存待提交

2. 添加文件到暂存区

git add file.py          # 添加单个文件
git add src/             # 添加整个文件夹
git add .                # 添加所有变化(常用)
git add -p               # 交互式选择要暂存的代码块

效果:将文件的当前状态"快照"放入暂存区(staging area)。git add -p 特别实用——它会逐块询问你是否暂存,适合一个文件里有多处修改但想分开提交的场景。

3. 提交

git commit -m "修复登录页面的样式问题"
git commit -am "修复bug"   # 跳过add,直接提交已追踪文件的修改

效果:将暂存区的内容创建为一个永久记录(commit)。每个 commit 有唯一哈希值,可以随时回到这个状态。

好的提交信息习惯: - 第一行简短描述(50字以内) - 空一行 - 详细说明(如果需要) - 用动词开头:"添加"、"修复"、"重构"、"更新"

4. 推送到远程

git push origin main
git push                 # 如果设置了上游分支,可以省略参数

效果:将本地的提交上传到 GitHub/GitLab 等远程仓库。


四、分支操作

分支是 Git 最强大的功能之一,让你可以在不影响主线的情况下开发新功能。

基本操作

git branch                   # 查看所有本地分支
git branch -a                # 查看所有分支(包括远程)
git branch feature-login     # 创建新分支
git checkout feature-login   # 切换到该分支
git checkout -b feature-login  # 创建并切换(常用)
git switch feature-login     # 新版切换命令(Git 2.23+)
git switch -c feature-login  # 新版创建并切换

效果:分支就像平行宇宙,每个分支独立发展,互不影响。

合并分支

git checkout main
git merge feature-login

效果:将 feature-login 分支的所有提交合并到 main。如果两个分支修改了同一文件的同一位置,会产生冲突,需要手动解决。

删除分支

git branch -d feature-login      # 已合并时删除
git branch -D feature-login      # 强制删除
git push origin --delete feature-login  # 删除远程分支

分支实战流程

# 开发新功能
git checkout -b feature-search
# ... 写代码 ...
git add .
git commit -m "添加搜索功能"
git push origin feature-search

# 合并到主分支
git checkout main
git pull origin main            # 先拉取最新代码
git merge feature-search
git push origin main

# 清理
git branch -d feature-search

五、查看历史

git log                        # 完整日志
git log --oneline              # 简洁版(一行一个提交)
git log --oneline -10          # 最近10条
git log --graph --oneline      # 图形化显示分支合并
git log --author="名字"        # 按作者筛选
git log --since="2024-01-01"   # 按时间筛选
git log -p file.py             # 查看某个文件的修改历史

效果--oneline 最常用,每个提交显示为一行短哈希+信息。--graph 能直观看到分支合并的过程。

查看某次提交改了什么:

git show abc1234               # 查看某次提交的详细差异
git diff                       # 查看未暂存的修改
git diff --staged              # 查看已暂存的修改
git diff main..feature-login   # 比较两个分支的差异

六、撤销与回退

这是最容易搞混的部分,分清场景很重要。

丢弃工作区的修改(还没 add)

git restore file.py            # 新版命令
git checkout -- file.py        # 旧版命令

效果:文件回到上次提交时的状态,所有修改丢失。

取消暂存(已经 add 但还没 commit)

git restore --staged file.py   # 新版
git reset HEAD file.py         # 旧版

效果:文件从暂存区移回工作区,修改内容保留。

修改最近一次提交

git commit --amend             # 修改提交信息或追加遗漏的文件
git commit --amend --no-edit   # 只追加文件,不改提交信息

效果:用新的提交替换上一个。适合刚提交完发现忘了一个文件或打错字。

回退到某个历史提交

git reset --soft abc1234       # 回退提交,保留修改在暂存区
git reset --mixed abc1234      # 回退提交,保留修改在工作区(默认)
git reset --hard abc1234       # 回退提交,丢弃所有修改(危险!)

效果: - --soft:撤销提交但代码改动还在,可以重新提交 - --mixed:撤销提交和暂存,代码改动还在 - --hard:彻底回到那个时间点,所有后续改动丢失

安全回退(推荐)

git revert abc1234             # 创建一个新提交来撤销指定提交
git revert HEAD                # 撤销最近一次提交

效果:不动历史,而是生成一个"反向提交"。安全,适合已推送到远程的情况。


七、暂存工作现场

正在开发一半,突然要修个紧急 bug?

git stash                      # 暂存当前修改
git stash save "搜索功能开发中"  # 带备注的暂存
git stash list                 # 查看所有暂存
git stash pop                  # 恢复最近一次暂存并删除
git stash apply                # 恢复但保留暂存记录
git stash drop stash@{0}       # 删除指定暂存

效果git stash 把工作区的修改临时"藏起来",工作区变干净。切到其他分支修完 bug 后,再 pop 回来继续。


八、远程操作

git remote -v                  # 查看远程仓库地址
git remote add upstream https://github.com/original/repo.git  # 添加上游仓库
git fetch origin               # 下载远程更新但不合并
git pull origin main           # 下载并合并(= fetch + merge)
git pull --rebase origin main  # 下载并变基(保持线性历史)

fetch vs pull: - fetch:只下载,看看有什么变化,手动决定是否合并 - pull:自动下载并合并,方便但可能产生不必要的合并提交


九、变基(Rebase)

git checkout feature-login
git rebase main                # 把 feature 分支"搬到" main 最新提交之后

效果:把当前分支的提交从旧的 base 移到新的 base 上,历史变成一条直线。比 merge 更整洁。

注意:不要对已推送到远程并被其他人使用的分支进行 rebase!

交互式变基(整理提交历史):

git rebase -i HEAD~3           # 整理最近3个提交

弹出编辑器,可以: - pick:保留 - squash:合并到上一个提交 - reword:修改提交信息 - drop:丢弃


十、标签

git tag                        # 查看所有标签
git tag v1.0.0                 # 创建轻量标签
git tag -a v1.0.0 -m "第一个正式版本"  # 创建带注释的标签
git push origin v1.0.0         # 推送标签到远程
git push origin --tags         # 推送所有标签
git tag -d v1.0.0              # 删除本地标签

效果:标签是某个提交的"别名",常用于标记版本号(v1.0, v2.0 等)。


十一、VSCode 中使用 Git

VSCode 内置了强大的 Git 支持,大部分操作可以通过图形界面完成。

面板概览

Ctrl+Shift+G(Mac: Cmd+Shift+G)打开源代码管理面板。你会看到:

  • 源代码管理图标(左侧栏):显示所有修改的文件
  • 分支名称(左下角):显示当前分支,点击可切换/创建分支
  • 同步更改按钮(左下角):一键拉取/推送

常用操作

查看差异:点击修改的文件,VSCode 会左右分栏显示修改前后的对比。红色是删除,绿色是新增。

暂存:每个文件旁边有个 + 号,点击就是 git add。也可以在文件内某一行右键选择"暂存所选范围"(相当于 git add -p)。

提交:在消息框输入提交信息,按 Ctrl+Enter(Mac: Cmd+Enter)提交。

推送/拉取:点击左下角的同步按钮,或者点击状态栏的 ↑↓ 箭头。

分支操作:点击左下角分支名,弹出菜单可以创建、切换、合并分支。

解决冲突:VSCode 会用特殊标记显示冲突区域,提供四个按钮: - Accept Current Change:保留当前分支的修改 - Accept Incoming Change:保留对方分支的修改 - Accept Both Changes:两者都保留 - Compare Changes:查看完整对比

VSCode 终端中的 Git

VSCode 集成的终端(Ctrl+`)直接使用项目目录,Git 命令无缝运行:

# 在 VSCode 终端中
git status          # 变化会实时反映在左侧文件图标上
git log --oneline   # 结果可以直接点击跳转

实用扩展推荐

  • GitLens:最强 Git 扩展。每一行代码旁边显示谁写的、什么时候写的(blame)。可以可视化分支图、比较任意两个提交。
  • Git Graph:图形化查看分支和合并历史。
  • Git History:查看文件的修改历史,比较任意版本。

GitLens 核心功能

安装后,鼠标悬停在任意代码行上,会显示: - 作者、提交时间、提交信息 - 点击可以查看完整的提交详情 - 状态栏显示当前行最后一次修改的提交

快捷操作: - Ctrl+Shift+P → "GitLens: Show File History" → 文件修改时间线 - Ctrl+Shift+P → "GitLens: Show Commit Search" → 搜索提交 - 右键文件 → "Open with GitLens" → 可视化分支图


十二、实用技巧

.gitignore 文件

在项目根目录创建 .gitignore,告诉 Git 忽略哪些文件:

# 忽略编译产物
*.pyc
__pycache__/
node_modules/
dist/

# 忽略 IDE 配置
.vscode/
.idea/

# 忽略敏感信息
.env
*.key

# 忽略系统文件
.DS_Store
Thumbs.db

别名配置

给常用命令设置简写:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"

之后 git lg 就能看到完整的分支图。

查找谁改了某行代码

git blame file.py              # 显示每一行的最后修改者和提交
git blame -L 10,20 file.py     # 只看第10-20行

在 VSCode 中安装 GitLens 后,这个功能自动显示在每行旁边。

搜索提交历史中的内容

git log -S "function_name"      # 搜索添加/删除了这个字符串的提交
git log -G "regex_pattern"      # 用正则搜索
git log --all --grep="修复"     # 搜索提交信息中包含关键词的提交

清理未追踪文件

git clean -n                    # 预览会删除什么(不实际删除)
git clean -f                    # 删除未追踪的文件
git clean -fd                   # 删除未追踪的文件和文件夹

总结

Git 的核心就是三个区域的协作:工作区 → 暂存区 → 仓库。日常 80% 的时间只需要:

  1. git add . — 暂存修改
  2. git commit -m "说明" — 提交
  3. git push — 推送

遇到问题时,git status 永远是你最好的朋友——它会告诉你当前状态和下一步建议。配合 VSCode 的图形化界面和 GitLens 扩展,Git 操作会变得非常直观。

希望这篇指南能帮你更自信地使用 Git!

评论交流

文章目录