Git使用教程-详细版
更新说明
更新时间 | 更新内容 |
---|---|
22.10.08 | 1. 安装方法 2. 常用命令 3. 本地操作 4. 分支含义及操作 |
1. Git安装
-
Git官网:Git官网地址
-
详细安装步骤(转载):Git 详细安装教程
2. Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name “your.name” | 设置用户签名 |
git config --global user.email “your.email” | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “提交信息简写” | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 回退到历史版本 |
git config --list | 查看git个人信息 |
3. Git本地练习教程
3.1 Git初始化操作
- 建立一个Git本地仓库,创建一个文件夹并初始化该文件夹,使用Git Bash在该文件夹下打开
# 首先设置用户名及邮箱
git config --global user.name 你的账号名
# 示例:git config --global user.name Leo
git config --global user.email 你的邮箱
# 示例:git config --global user.email xxx@gmail.com
# 使用命令初始化这个文件夹
git init
# 查看该目录下是否创建.git文件
ls -a
# 查看当前git状态
git status
On branch master # 当前在master分支
No commits yet # 暂未提交过任何东西
nothing to commit # 暂无需要提交的东西
3.2 创建文件 & 上传仓库
3.2.1 创建文件
-
创建一个txt文件,并重新查看本地仓库状态
-
使用
git status
命令重新查看本地库状态,可以看到出现了一个.txt
文件,提示我们将该文件使用git add
命令进行添加
3.2.2 上传暂存区
- 将文件上传到暂存区
git add test.txt # 将该文件添加到暂存区
git add . # 将所有未添加到暂存区的文件添加到暂存区
- 使用
git status
重新查看本地库状态,可以看到test.txt文件已经传到暂存区
3.2.3 撤销上传暂存区
- 如果上传到暂存区的文件不想要提交,可以使用命令进行撤回操作
git rm --cached test.txt
- 重新使用
git status
查看状态
3.2.4 提交操作
- 将暂存区的文件提交到本地库
git commit -m "first commit"
# -m是提交信息简写
git commit
# 会直接进入到vim界面进行编写提交信息
// master主干分支有一个first commit的提交操作
// 7df0a74 这个就是版本号
// 默认生成一个7位字符码——版本号
[master (root-commit) 7df0a74] first commit
// 一个文件被改变,10行文本(因为插入了十行文本)被插入
1 file changed, 10 insertions(+)
create mode 100644 test.txt
3.3 查看 & 操作历史版本
3.3.1 查看操作
- 查看历史信息
git reflog
git log # 详细日志命令
git reflog
简略日志信息git log
详细日志信息,一长串字符串为完整版本号,reflog
下的7位字符串为完整版本号的前七位字符
3.3.2 修改 & 提交操作
- 修改文件操作并重新提交
git add test.txt # 添加到暂存区
git commit -m "second commit" # 第二次提交
git reflog # 查看日志
2. 自行尝试提交第三次修改操作并上传
3.3.3 回退历史版本操作
- 回退历史版本操作
git reflog # 查看全部版本信息
git reset --hard 版本号 # 这里回退到第二个版本
cat test.txt # 查看信息是否回退到第二个版本
2. 自行尝试回退历史版本到第一个版本
4. Git分支
- 一般开发环境是在
dev环境
中进行开发,没有问题后才会部署到master
上 - 好比一个用户在使用的就是正式环境的服务器
[master]
,开发者不能直接在正式环境对代码进行修改,所以需要一个分支,俗称dev环境
。当新版本的程序开发完成后,才会通过测试、运维等等,确认无误才会部署到正式服务器。对服务器版本进行迭代更新。
4.1 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开,开发自己分支的时候,不会影响主线分支的运行。分支可以简单的理解为副本,一个分支就是一个单独的副本。(分支的底层其实也是指针的引用)
- 如图所示:
master
为主分支
(正式环境使用)- 当想在master分支的程序上添加一个查询功能,就可以创建一个
feature-blue分支
,然后进行功能添加,确认没问题后就推送到master分支上,也就是V1.1版本 - 当发现V1.1版本有bug的时候,可以创建一个
hot-fix分支
(俗称热修复),重新测试无误后进行推送,将master主线分支
升级为V1.2版本 - 当
master分支
在V1.0版本的时候,也可以同步创建一个feature-game分支
,进行游戏模块开发,中间迭代多个版本,最终测试没问题后,可以推送上到主分支上,升级为V2.0版本。
4.2 分支的优点
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发的过程中,如果遇到某一个分支开发失败,不会对其他分支有任何影响。
4.3 分支的操作
4.3.1 常用命令
分支名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定分支合并当当前分支上 |
4.3.2 查看分支
- 使用查看命令查看当前所在分支
git branch -v
4.3.3 创建新分支
- 使用创建命令创建一个修复分支(hot-fix)
git branch hot-fix
- 可以看到已经创建了一个hot-fix分支,但当前还是在master分支上
4.3.4 切换分支
- 切换分支
git checkout hot-fix
- 可以看到已经到了hot-fix分支上
4.3.5 修改分支
- 修改hot-fix该分支下test.txt内容,对test.txt文件进行修改操作,并重新提交
git add test.txt
git commit -m "hot-fix first commit"
4.3.6 合并分支
4.3.6.1 正常合并分支操作
- 分支合并,需要先切换回主分支,并在主分支下进行分支合并操作。
- 切换为
master分支
,然后将分支进行合并操作(正常合并分支)
git checkout master # 将分支转回master
git merge hot-fix # 在master的基础上,将hot-fix分支的内容合并到master上
4.3.6.2 冲突合并分支操作
- 冲突产生的原因(冲突合并):
- 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。就必须人为决定新代码的内容。
- 上一步合并后,master分支和hot-fix分支内的文件已经相同,所以我们需要人为进行一下matser分支和hot-fix分支的修改操作。
# 在master分支上对test.txt文件进行修改
vim test.txt
# 在第一行加上master test
# 将master分支进行提交
git add test.txt
git commit -m "master test"
- 在hot-fix分支也进行同位置的修改操作
# 将分支切换到hot-fix下
git checkout hot-fix
# 修改test.txt文件,并在同一个位置添加hot-fix test
vim test.txt
# 将文件提交
git add test.txt
git commit -m "hot-fix test"
- 切换为master分支并尝试合并分支
git checkout master
# 合并分支,会提示错误
git merge hot-fix
# 会提示你在test.txt文件中有合并冲突的情况
# 输入查询命令 会看到提示有一个文件未合并成功
git status
- 需要手动进入文件进行修改操作
- 去除掉多余的信息,剩下的为需要合并的信息,然后进行保存提交操作
git add test.txt
git commit -m "merge test"
git reflog # 查看版本信息,可以发现合并成功