更新说明
更新时间 | 更新内容 |
---|
22.10.08 | 1. 安装方法 2. 常用命令 3. 本地操作 4. 分支含义及操作 |
1. 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

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下
git checkout hot-fix
# 修改test.txt文件,并在同一个位置添加hot-fix test
vim test.txt
# 将文件提交
git add test.txt
git commit -m "hot-fix test"

git checkout master
# 合并分支,会提示错误
git merge hot-fix
# 会提示你在test.txt文件中有合并冲突的情况
# 输入查询命令 会看到提示有一个文件未合并成功
git status

- 需要手动进入文件进行修改操作
 - 去除掉多余的信息,剩下的为需要合并的信息,然后进行保存提交操作

git add test.txt
git commit -m "merge test"
git reflog # 查看版本信息,可以发现合并成功

|