Git 命令学习
title: Git 命令学习指南:从入门到日常开发 date: 2026-08-10 tags:
- Git
- 开发工具
- 学习笔记 categories:
- 技术教程 description: 系统学习 Git 常用命令,掌握仓库创建、版本管理、分支操作、远程协作和问题排查。
Git 命令学习指南:从入门到日常开发
Git 是目前使用最广泛的分布式版本控制工具。它可以记录文件的修改历史,帮助开发者管理代码版本,并支持多人协作开发。
本文整理了 Git 的核心概念、常用命令和典型工作流程,适合作为入门教程或日常速查手册。
一、Git 的基本概念
在学习命令之前,先了解 Git 中几个重要的区域:
- 工作区(Working Directory):实际编辑文件的目录。
- 暂存区(Staging Area):保存准备提交的文件变更。
- 本地仓库(Local Repository):保存已经提交的版本记录。
- 远程仓库(Remote Repository):托管在 GitHub、GitLab 或 Gitee 等平台上的仓库。
文件通常会经历下面的过程:
工作区 → 暂存区 → 本地仓库 → 远程仓库
git add git commit git push
二、安装后的基础配置
1. 配置用户名
git config --global user.name "你的用户名"
2. 配置邮箱
git config --global user.email "你的邮箱@example.com"
用户名和邮箱会记录在每一次提交信息中。
3. 查看当前配置
git config --list
查看单个配置:
git config user.name
git config user.email
4. 设置默认分支名称
git config --global init.defaultBranch main
5. 设置默认编辑器
以 VS Code 为例:
git config --global core.editor "code --wait"
三、创建和获取 Git 仓库
1. 初始化本地仓库
进入项目目录后执行:
git init
执行成功后,Git 会创建一个隐藏的 .git 目录,用于保存版本记录和仓库配置。
2. 克隆远程仓库
git clone <仓库地址>
例如:
git clone https://github.com/username/project.git
指定克隆后的目录名称:
git clone https://github.com/username/project.git my-project
四、查看仓库状态
1. 查看文件状态
git status
简洁显示状态:
git status -s
常见状态标记:
| 标记 | 含义 |
|---|---|
?? |
未跟踪文件 |
A |
新增到暂存区的文件 |
M |
已修改的文件 |
D |
已删除的文件 |
R |
已重命名的文件 |
2. 查看修改内容
查看工作区中尚未暂存的修改:
git diff
查看已经放入暂存区的修改:
git diff --staged
查看两个提交之间的差异:
git diff <提交1> <提交2>
五、添加和提交文件
1. 添加指定文件到暂存区
git add <文件名>
例如:
git add README.md
2. 添加当前目录的所有变更
git add .
添加仓库中的所有新增、修改和删除:
git add -A
3. 提交暂存区内容
git commit -m "提交说明"
例如:
git commit -m "feat: 添加用户登录功能"
4. 修改最近一次提交
如果刚提交完就发现提交信息写错了,可以执行:
git commit --amend -m "新的提交说明"
如果只是漏掉了文件:
git add <遗漏的文件>
git commit --amend --no-edit
注意:如果该提交已经推送到共享远程仓库,应谨慎使用
--amend,因为它会生成新的提交记录。
六、查看提交历史
1. 查看完整提交日志
git log
2. 每个提交显示一行
git log --oneline
3. 以图形方式查看分支历史
git log --oneline --graph --decorate --all
4. 查看指定文件的提交历史
git log -- <文件名>
5. 查看某次提交的详细内容
git show <提交ID>
提交 ID 通常可以使用前几位,例如:
git show a1b2c3d
七、撤销和恢复修改
撤销操作需要特别谨慎。执行之前,建议先通过 git status 确认当前状态。
1. 放弃工作区中的文件修改
git restore <文件名>
放弃工作区中的全部修改:
git restore .
该操作会覆盖尚未提交的修改,执行后通常难以恢复。
2. 将文件移出暂存区
git restore --staged <文件名>
该命令不会删除工作区中的修改,只会取消暂存。
3. 撤销某次提交并创建一个新提交
git revert <提交ID>
git revert 不会删除已有历史,而是创建一个内容相反的新提交,因此适合已经推送到远程仓库的提交。
4. 重置到指定提交
仅移动提交位置,保留暂存区和工作区内容:
git reset --soft <提交ID>
移动提交位置并重置暂存区,但保留工作区修改:
git reset --mixed <提交ID>
彻底重置提交、暂存区和工作区:
git reset --hard <提交ID>
git reset --hard会丢弃未提交的修改,不确定时不要使用。
5. 查找误删或重置前的操作记录
git reflog
找到目标提交 ID 后,可以尝试恢复:
git reset --hard <提交ID>
八、分支管理
分支可以让开发者在不影响主线代码的情况下开发新功能或修复问题。
1. 查看本地分支
git branch
查看本地和远程的全部分支:
git branch -a
2. 创建新分支
git branch <分支名>
例如:
git branch feature/login
3. 切换分支
推荐使用:
git switch <分支名>
也可以使用传统命令:
git checkout <分支名>
4. 创建并切换到新分支
git switch -c <分支名>
传统写法:
git checkout -b <分支名>
5. 合并分支
先切换到需要接收代码的分支:
git switch main
再合并目标分支:
git merge feature/login
6. 删除本地分支
删除已经合并的分支:
git branch -d <分支名>
强制删除未合并的分支:
git branch -D <分支名>
7. 重命名当前分支
git branch -m <新分支名>
九、解决合并冲突
当两个分支修改了同一文件的相同位置时,Git 可能无法自动合并,从而产生冲突。
冲突内容通常如下:
<<<<<<< HEAD
当前分支的内容
=======
待合并分支的内容
>>>>>>> feature/login
解决步骤:
- 打开冲突文件。
- 根据实际需求保留正确内容。
- 删除
<<<<<<<、=======和>>>>>>>标记。 - 将解决后的文件加入暂存区。
- 完成提交。
git add <冲突文件>
git commit
如果希望取消本次合并:
git merge --abort
十、远程仓库操作
1. 查看远程仓库
git remote -v
2. 添加远程仓库
git remote add origin <仓库地址>
例如:
git remote add origin https://github.com/username/project.git
3. 修改远程仓库地址
git remote set-url origin <新仓库地址>
4. 第一次推送并建立跟踪关系
git push -u origin main
建立跟踪关系后,后续通常只需执行:
git push
5. 拉取远程代码并合并
git pull
git pull 通常相当于:
git fetch
git merge
6. 获取远程更新但不自动合并
git fetch origin
该命令适合先查看远程变化,再决定是否合并。
7. 删除远程分支
git push origin --delete <分支名>
十一、临时保存修改
开发过程中,如果当前功能还没有完成,但需要临时切换到其他分支,可以使用 stash。
1. 暂存当前修改
git stash
添加说明:
git stash push -m "暂存登录页面修改"
同时暂存未跟踪文件:
git stash -u
2. 查看暂存列表
git stash list
3. 恢复最近一次暂存并删除记录
git stash pop
4. 恢复暂存但保留记录
git stash apply
恢复指定记录:
git stash apply stash@{0}
5. 删除指定暂存记录
git stash drop stash@{0}
十二、标签管理
标签通常用于标记软件版本,例如 v1.0.0。
1. 查看标签
git tag
2. 创建标签
git tag v1.0.0
创建带说明的标签:
git tag -a v1.0.0 -m "发布 1.0.0 版本"
3. 查看标签信息
git show v1.0.0
4. 推送单个标签
git push origin v1.0.0
推送全部标签:
git push origin --tags
5. 删除标签
删除本地标签:
git tag -d v1.0.0
删除远程标签:
git push origin --delete v1.0.0
十三、忽略不需要提交的文件
在项目根目录创建 .gitignore 文件,可以指定不需要 Git 跟踪的内容。
示例:
# 依赖目录
node_modules/
# 构建产物
dist/
build/
# 环境变量文件
.env
.env.local
# 日志文件
*.log
# 编辑器配置
.vscode/
.idea/
# 操作系统文件
.DS_Store
Thumbs.db
如果文件已经被 Git 跟踪,仅将它写入 .gitignore 不会立即生效。需要先取消跟踪:
git rm --cached <文件名>
取消跟踪整个目录:
git rm -r --cached <目录名>
然后重新提交:
git add .
git commit -m "chore: 更新忽略文件配置"
十四、常用辅助命令
1. 删除文件并加入暂存区
git rm <文件名>
2. 重命名或移动文件
git mv <旧文件名> <新文件名>
3. 查看每一行代码的修改者和提交记录
git blame <文件名>
4. 搜索提交历史中的文本
git log --grep="关键词"
5. 搜索仓库文件中的内容
git grep "关键词"
6. 挑选某个提交应用到当前分支
git cherry-pick <提交ID>
该命令适合只需要另一个分支中的某一个提交,而不希望合并整个分支的情况。
十五、Rebase 基础用法
rebase 可以把当前分支的提交移动到另一个分支的最新提交之后,使提交历史更加线性。
git switch feature/login
git rebase main
发生冲突时:
# 修改并解决冲突后
git add <冲突文件>
git rebase --continue
取消本次变基:
git rebase --abort
不要随意对已经推送并由多人共享的提交执行 rebase,因为它会改写提交历史。
十六、推荐的提交信息规范
清晰的提交信息有助于了解每次变更的目的。常见格式如下:
<类型>: <简短说明>
常见类型:
| 类型 | 用途 |
|---|---|
feat |
新增功能 |
fix |
修复问题 |
docs |
修改文档 |
style |
调整格式,不影响功能 |
refactor |
重构代码 |
test |
添加或修改测试 |
chore |
构建、依赖或工具相关修改 |
perf |
性能优化 |
示例:
git commit -m "feat: 添加用户注册功能"
git commit -m "fix: 修复登录按钮无法点击的问题"
git commit -m "docs: 更新项目安装说明"
十七、日常开发工作流程
下面是一个常见的功能开发流程。
第一步:获取主分支的最新代码
git switch main
git pull origin main
第二步:创建功能分支
git switch -c feature/login
第三步:开发并查看修改
git status
git diff
第四步:添加并提交代码
git add .
git commit -m "feat: 完成用户登录功能"
第五步:推送功能分支
git push -u origin feature/login
第六步:创建 Pull Request 或 Merge Request
在 GitHub、GitLab 或 Gitee 中创建合并请求,经过代码审查后合并到主分支。
第七步:更新本地主分支并删除旧分支
git switch main
git pull origin main
git branch -d feature/login
十八、常见问题
1. 提交到了错误的分支怎么办?
如果提交尚未推送,可以先创建正确分支,再重置原分支:
# 当前位于错误分支,并且刚刚完成提交
git branch feature/correct-branch
git reset --hard HEAD~1
git switch feature/correct-branch
执行前应确认没有其他未保存修改。
2. git pull 时提示存在冲突怎么办?
先根据冲突标记手动解决文件内容,然后执行:
git add <冲突文件>
git commit
如果使用的是 rebase 拉取方式,则执行:
git add <冲突文件>
git rebase --continue
3. 推送时提示远程包含本地没有的提交怎么办?
先拉取远程更新:
git pull --rebase origin main
解决可能出现的冲突后,再推送:
git push origin main
4. 如何撤销已经推送的错误提交?
共享分支上优先使用:
git revert <提交ID>
git push
这样不会改写其他协作者已经获取的历史。
5. 如何查看某个命令的帮助?
git help <命令>
例如:
git help commit
也可以使用简短帮助:
git commit -h
十九、Git 常用命令速查表
| 命令 | 作用 |
|---|---|
git init |
初始化仓库 |
git clone <地址> |
克隆远程仓库 |
git status |
查看文件状态 |
git diff |
查看未暂存的修改 |
git add . |
添加全部修改到暂存区 |
git commit -m "说明" |
提交暂存区内容 |
git log --oneline |
简洁查看提交历史 |
git switch -c <分支> |
创建并切换分支 |
git merge <分支> |
合并指定分支 |
git branch -d <分支> |
删除已合并的本地分支 |
git remote -v |
查看远程仓库 |
git fetch |
获取远程更新但不合并 |
git pull |
拉取并合并远程更新 |
git push |
推送本地提交 |
git stash |
临时保存工作区修改 |
git stash pop |
恢复最近的临时修改 |
git restore <文件> |
放弃文件的未暂存修改 |
git restore --staged <文件> |
取消暂存文件 |
git revert <提交> |
用新提交撤销指定提交 |
git reflog |
查看本地操作记录 |
二十、学习建议
- 先掌握核心流程:重点练习
status、add、commit、pull和push。 - 养成先查看状态的习惯:执行重要操作前先运行
git status。 - 小步提交:每完成一个独立功能或修复,就进行一次提交。
- 认真编写提交信息:说明“为什么修改”,而不仅是“修改了什么”。
- 谨慎使用危险命令:尤其是
reset --hard、clean -fd和强制推送。 - 通过实际项目练习:仅阅读命令很容易遗忘,实际操作才能真正掌握。
总结
Git 的命令很多,但日常开发只需要熟练掌握一部分核心操作:
git status
git add .
git commit -m "提交说明"
git pull
git push
git switch
git merge
理解“工作区、暂存区、本地仓库、远程仓库”之间的关系后,大多数 Git 命令都会变得容易理解。遇到问题时不要急于执行强制操作,先通过 git status、git log 和 git reflog 确认仓库状态,再选择合适的处理方式。