一.Git
1、概念
Git 是一个免费的、开源的分布式版本控制系统
,可以快速高效地处理从小型到大型的各种
项目。
Git 易于学习,占地面积小,性能极快。
它具有廉价的本地库,方便的暂存区域和多个工作
流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
2、工作机制
3、代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
➢ 局域网
✓ GitLab
➢ 互联网
✓ GitHub(外网)
✓ Gitee 码云(国内网站)
4、Git 安装
官网地址: https://git-scm.com/
安装过程直接点击下一步
检查是否安装完成:右键任意位置,在右键菜单里选择 Git Bash Here 即可打开 Git Bash 命令行终端
在 Git Bash 终端里输入 git --version 查看 git 版本,如图所示,说明 Git 安装成功
5、Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
①.设置用户签名
命令:
git config --global user.name 用户名
git config --global user.email 邮箱
说明:
* 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
**注意:**这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任
何关系,仅代表windows本地git客户端上登录使用git的用户
②.初始化项目的本地库
命令:
git init
说明:
- 在项目目录下,点击右键,选择Git Bash进入git命令行窗口
或者先打开Git Bash再使用cd命令一步步进入项目目录
- 输入初始化命令git init后,会在项目目录下生成隐藏文件==.git==
③.查看项目本地库状态
命令:
git status
说明:
- On branch
master
: git文件指针在master分支上 - No commit yet: 当前还没有文件被提交到本地库上
- Untracked files: 提示检测到有未被添加到暂存区的文件(红色部分)
④.将项目某个文件的代码添加到暂存区
命令:
git add 需要添加到暂存区的文件名
说明:
- 将红色的文件添加到暂存区,再查看git status
⑤.提交到项目的本地库
命令:
git commit -m "日志信息" 需要提交到本地库的文件名
说明:
- 将暂存区目录下的所有文件提交,并标记为first version
- commit后再次查看git状态,暂存区中没有文件需要提交
⑥.修改文件
a.尝试修改代码文件QQFrame.java
- 查看git状态,提示文件QQFrame.java被修改,还未提交到暂存区
b.再次将代码文件QQFrame.java提交到暂存区
- 查看git状态,显示有修改过的文件QQFrame.java需要提交
c.将代码文件QQFrame.java提交到项目的本地库
- 查看git状态,提交玩状态显示暂未有文件需要提交
⑦.查看历史版本
命令:
git relog (查看版本的简略信息:版本号头7位、日志信息)
git log (查看版本的详细信息:完整的版本号、提交的作者、提交的日期、日志信息)
说明:
⑧.版本穿梭
命令:
git reset --hard 版本号
说明:
- 先输入命令
git log
查询要穿梭到的版本号 - 再利用
复制
快捷键Ctrl+Insert和粘贴
快捷键Shift+Insert输入版本穿梭命令,会将工作区中的代码更新到穿梭到的版本 - HEAD指针 箭头表示当前分支在
master
,版本从second version
穿梭到first version
-
再次查看工作区中代码文件的内容,代码会被更新:
6、Git分支
①.概念
-
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是
一个单独的副本。(分支底层其实也是指针的引用)
②.分支的好处
-
同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败
的分支删除重新开始即可。
③.分支的操作命令
命令名称 | 作用 |
---|---|
git branch 要创建的分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 要切换到的分支名 | 切换分支 |
git merge 被指定的分支名 | 把指定的分支合并到当前分支上 |
④.查看分支
命令:
git branch -v
说明:
- 当前分支为绿色显示的分支master
⑤.创建分支
命令:
git branch 要创建的分支名
说明:
- 创建分支dev-kevin,但是当前分支仍处于master
⑥.切换分支
命令:
git checkout 要切换到的分支名
说明:
- 从matser分支切换到dev-kevin分支
⑦.合并分支
命令:
git merge 指定要与当前分支合并的分支
说明:
一.初始情况
:
* 主分支`master`与其他两个分支`dev-kevin`和`dev-john`代码为同一版本
二.无冲突合并
:
- 两个分支并未修改相同的文件或者仅修改了不同的文件,可以直接合并
a.修改分支dev-kevin的代码
b.将分支dev-kevin修改后的代码commit到本地库
c.切换到master分支
-
d.将dev-kevin分支合并到master分支,并查看日志信息
e.查看master分支上的代码,无冲突合并完成
三.冲突合并
:
- 两个分支修改了同一个文件的任意地方,则冲突合并
f.切换到dev-john分支
g.修改dev-john分支上相同文件的代码
h.将dev-john分支的代码commit
到本地库
i.切换到master分支
j.将dev-john分支合并到master分支
- 提示自动合并失败,查看git状态提示你需要手动合并
k.手动合并有冲突的文件
- 用Vim编辑有冲突的文件,删除特殊符号,决定要使用的内容
- 特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
l.查看冲突合并完成后的情况
- master分支
- dev-kevin分支
- dev-john分支
7、团队协作机制
①.团队内协作:
②.跨团队协作:
B站尚硅谷Git课程:https://www.bilibili.com/video/BV1vy4y1s7k6?p=27