git学习过程
1 | |
对应命令:
1 | |
1. 工作区
工作区就是我们平时写代码、修改文件的地方。
例如:
1 | |
这些文件所在的项目目录就是工作区。
2. 暂存区
暂存区用于临时保存准备提交的修改。
把文件加入暂存区:
1 | |
添加所有修改:
1 | |
3. 本地仓库
本地仓库保存已经提交的版本记录。
提交代码:
1 | |
4. 远程仓库
远程仓库一般指 GitHub、GitLab、Gitee 上的仓库。
推送到远程仓库:
1 | |
三、安装 Git
Windows
下载地址:
1 | |
安装完成后,打开 Git Bash 或终端,输入:
1 | |
如果能看到版本号,说明安装成功。
macOS
查看是否已安装:
1 | |
使用 Homebrew 安装:
1 | |
Linux
Ubuntu / Debian:
1 | |
CentOS:
1 | |
四、Git 初始配置
第一次使用 Git,需要配置用户名和邮箱。
1 | |
查看配置:
1 | |
示例:
1 | |
笔记
--global 表示全局配置,对当前电脑上的所有 Git 项目生效。
五、创建 Git 仓库
方式一:本地初始化仓库
进入项目目录:
1 | |
初始化 Git:
1 | |
初始化后,项目中会生成一个隐藏目录:
1 | |
笔记
.git 文件夹保存了 Git 的版本信息,不要随便删除。
方式二:克隆远程仓库
从远程仓库下载代码:
1 | |
示例:
1 | |
进入项目:
1 | |
六、查看仓库状态
1 | |
这个命令非常常用,用来查看当前项目的状态。
常见状态:
| 状态 | 含义 |
|---|---|
| untracked | 新文件,还没有被 Git 管理 |
| modified | 文件被修改了 |
| staged | 文件已加入暂存区 |
| clean | 没有需要提交的内容 |
学习重点
提交代码前,建议先执行:
1 | |
这样可以确认哪些文件被修改了。
七、添加文件到暂存区
添加单个文件:
1 | |
添加多个文件:
1 | |
添加所有修改:
1 | |
笔记
git add . 会把当前目录下所有修改都加入暂存区。
八、提交代码
提交暂存区的内容:
1 | |
示例:
1 | |
推荐写清楚提交内容:
1 | |
笔记
提交说明不要随便写 aaa、test,最好说明这次提交做了什么。
九、查看提交历史
查看详细提交记录:
1 | |
简洁查看:
1 | |
示例:
1 | |
笔记
每一次提交都会生成一个 commit id,可以用来回退版本。
十、查看文件修改内容
查看工作区修改:
1 | |
查看暂存区修改:
1 | |
使用场景
提交之前,可以先用 git diff 查看自己改了哪些内容。
十一、撤销修改
1. 撤销工作区修改
1 | |
示例:
1 | |
旧写法:
1 | |
注意
这个操作会丢弃当前文件的修改,需要谨慎使用。
2. 取消暂存
如果已经执行了 git add,但不想提交某个文件,可以取消暂存:
1 | |
示例:
1 | |
旧写法:
1 | |
十二、删除文件
删除文件:
1 | |
提交删除操作:
1 | |
也可以使用 Git 命令删除:
1 | |
十三、分支管理
分支可以理解为一条独立的开发线。
常见分支:
| 分支 | 说明 |
|---|---|
| main / master | 主分支 |
| dev | 开发分支 |
| feature-login | 登录功能分支 |
| bugfix | 修复 bug 分支 |
1. 查看分支
1 | |
查看本地和远程分支:
1 | |
2. 创建分支
1 | |
示例:
1 | |
3. 切换分支
1 | |
示例:
1 | |
旧写法:
1 | |
4. 创建并切换分支
1 | |
示例:
1 | |
旧写法:
1 | |
5. 合并分支
先切换到要合并到的目标分支:
1 | |
合并其他分支:
1 | |
笔记
意思是:把 feature-login 分支的代码合并到 main 分支。
6. 删除分支
删除本地分支:
1 | |
强制删除:
1 | |
删除远程分支:
1 | |
十四、远程仓库
远程仓库一般托管在:
- GitHub
- GitLab
- Gitee
- Bitbucket
1. 查看远程仓库
1 | |
2. 添加远程仓库
1 | |
示例:
1 | |
3. 修改远程仓库地址
1 | |
4. 删除远程仓库地址
1 | |
十五、推送代码到远程仓库
第一次推送:
1 | |
以后推送:
1 | |
如果主分支是 master:
1 | |
笔记
-u 的作用是建立本地分支和远程分支的关联,以后可以直接使用 git push。
十六、拉取远程代码
拉取远程代码并合并:
1 | |
这个命令相当于:
1 | |
只获取远程代码,不自动合并:
1 | |
十七、解决冲突
多人同时修改同一个文件时,可能会出现冲突。
冲突文件中可能会出现:
1 | |
需要手动修改成正确内容。
修改完成后:
1 | |
笔记
冲突不是错误,只是 Git 不知道应该保留哪一份代码,需要开发者手动判断。
十八、版本回退
1. 回退到上一个版本
1 | |
2. 回退到指定版本
先查看提交记录:
1 | |
然后复制 commit id:
1 | |
示例:
1 | |
注意
--hard 会丢弃当前工作区修改,使用前一定要确认。
十九、查看操作记录
如果误操作,可以查看 Git 操作历史:
1 | |
然后恢复到指定版本:
1 | |
笔记
git reflog 是 Git 的“后悔药”,可以找回很多误操作前的版本。
二十、.gitignore 文件
.gitignore 用来告诉 Git 哪些文件不需要提交。
常见内容:
1 | |
常见使用场景
不应该提交到 Git 的文件:
- 依赖包
- 日志文件
- 临时文件
- 密码、密钥、环境变量文件
- 编译打包后的文件
已经提交过的文件如何忽略?
如果文件已经被 Git 跟踪,再写入 .gitignore 不会立即生效。
需要先取消跟踪:
1 | |
示例:
1 | |
二十一、stash 临时保存修改
当你正在修改代码,但需要临时切换分支时,可以使用 stash。
保存当前修改:
1 | |
查看 stash 列表:
1 | |
恢复最近一次保存:
1 | |
恢复但不删除 stash:
1 | |
删除 stash:
1 | |
清空所有 stash:
1 | |
笔记
stash 适合临时保存没有提交的修改。
二十二、标签 tag
标签一般用于标记项目版本。
例如:
1 | |
创建标签:
1 | |
查看标签:
1 | |
推送标签:
1 | |
推送所有标签:
1 | |
删除本地标签:
1 | |
删除远程标签:
1 | |
二十三、常用 Git 命令总结
| 命令 | 作用 |
|---|---|
git init |
初始化 Git 仓库 |
git clone |
克隆远程仓库 |
git status |
查看仓库状态 |
git add . |
添加所有修改到暂存区 |
git commit -m "说明" |
提交代码 |
git log --oneline |
查看提交历史 |
git branch |
查看分支 |
git switch 分支名 |
切换分支 |
git switch -c 分支名 |
创建并切换分支 |
git merge 分支名 |
合并分支 |
git pull |
拉取远程代码 |
git push |
推送代码 |
git remote -v |
查看远程仓库 |
git stash |
临时保存修改 |
git reset --hard |
回退版本 |
git reflog |
查看操作记录 |
二十四、常见问题笔记
1. git push 失败怎么办?
可能是远程仓库有新代码,本地没有同步。
解决:
1 | |
如果出现冲突,需要先解决冲突。
2. 怎么查看当前在哪个分支?
1 | |
带 * 的就是当前分支。
3. 提交说明写错了怎么办?
修改最近一次提交说明:
1 | |
4. 文件 add 错了怎么办?
1 | |
5. 怎么把本地分支推送到远程?
1 | |
二十五、推荐提交规范
提交信息建议使用统一格式:
1 | |
常见类型:
| 类型 | 说明 |
|---|---|
| feat | 新功能 |
| fix | 修复 bug |
| docs | 文档修改 |
| style | 样式修改 |
| refactor | 代码重构 |
| test | 测试相关 |
| chore | 工具、依赖、构建等杂项 |
示例:
1 | |
二十六、完整操作示例
新建项目:
1 | |
创建 README 文件:
1 | |
查看状态:
1 | |
添加文件:
1 | |
提交代码:
1 | |
添加远程仓库:
1 | |
设置主分支名称:
1 | |
推送代码:
1 | |
二十七、学习路线
建议按照下面的顺序学习 Git:
第一阶段:基础操作
重点掌握:
1 | |
第二阶段:远程仓库
重点掌握:
1 | |
第三阶段:分支管理
重点掌握:
1 | |
第四阶段:问题处理
重点掌握:
1 | |
二十八、Git 日常开发流程
个人项目常用流程
1 | |
团队项目常用流程
1 | |
然后在 GitHub / GitLab / Gitee 上创建 Pull Request 或 Merge Request。
二十九、重点记忆
Git 最核心的几个命令:
1 | |
Git 最核心的流程:
1 | |
Git 最重要的思想:
每一次 commit 都是一个可以回到的版本节点。
三十、总结
Git 是开发中非常重要的工具。刚开始学习时,不需要一次性掌握所有命令,先熟悉最常用的流程即可。
日常开发最常用的命令是:
1 | |
掌握这些命令后,再逐步学习分支、合并、冲突、回退和 stash,就可以应对大多数开发场景。
1 | |