一、Git概述
Git是一个免费的、开源的分布式版本控制系统。
1、版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
版本控制是个人开发过渡到团队协作开发的必备工具。
- 例如:
2、集中式版本控制工具(代表:SVN)
集中化的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
- 优点:
①每个人都可以在一定程度上看到项目中的其他人正在做些什么
②管理员方便管理。管理员可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易
- 缺点:
①单点故障
- 示意图
3、分布式版本控制工具(代表:Git)
客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
- 优点(解决了集中式的问题):
①服务器断网的情况下也可以进行开发
②每个客户端保存的也都是整个完整的项目
- 示意图
4、Git的工作机制
5、Git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
①局域网(GitLab)
②互联网(GitHub、Gitee):GitHub是国外的,Gitee是国内的,Gitee也称为码云,两个网站除了语言之外没什么区别
二、安装
如果没有安装过的小伙伴可以看我之前的一篇教程:
Git最新本版安装步骤(保姆级教程+解释)
三、Git常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git log | 查看详细历史记录 |
git reset --hard 版本号 | 版本穿梭 |
1、设置用户签名
- 基本语法
git config --global user.name 用户名
git config --global user.email 邮箱
- 说明:
① 签名的作用是区分不同操作者身份。Git首次安装必须设置用户签名,否则无法提交代码。
② 这里设置的用户签名和以后登录GitHub的账号没有任何关系,邮箱也可以是无效的。
2、初始化本地库
-
创建目录并进去
-
基本语法
git init
- 效果(如果成功会出现.git文件)
3、查看本地库状态
- 基本语法
git status
4、添加暂存区
- 创建一个文件hello.txt
- 编写内容
- 查看状态(git status)
1)将工作区的文件添加到暂存区
- 基本语法
git add 文件名
2)查看状态(检测到暂存区有新文件)
5、提交本地库
1)将暂存区的文件提交到本地库
- 基本语法
git commit -m "说明信息" 文件名
2)查看状态(没有文件需要提交)
6、修改文件(hello.txt)
1)查看状态(检查到工作区有文件被修改)
2)将修改的文件再次添加暂存区
3)查看状态(工作区的修改添加到了暂存区)
4)提交到本地库
5)查看状态(工作区的修改提交到本地库)
7、历史版本
1)查看历史版本
语法:
git reflog
功能:查看版本信息
语法:git log
功能:查看版本详细信息
- 效果
2)版本穿梭
语法:
git reset --hard 版本号
- 效果(版本穿梭的原理就是移动指针)
四、分支操作
1、什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
2、分支的优点
同时并行推荐多个功能开发,提高了开发的效率
各个分支在开发过程中,如果有一个分支开发失败,不会对其他分支产生影响
3、分支操作命令
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
1)、创建分支
语法:
git branch -v
- 效果
2)创建分支
语法:
git branch 分支名
- 效果
3)修改分支
4)切换分支
语法:
gitcheckout 分支名
- 效果
5)合并分支
语法:
git merge 分支名
- 效果
6)合并冲突
- 产生冲突的表现
如果出现合并冲突,后面会出现MERGING
- 产生冲突的原因
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。
- 效果
- 进行vim 操作之后看后面两张图片
- 合并冲突
- 手动合并
五、团队协作机制
1、团队内协作
2 、跨团队协作
六、GitHub
GitHub 网址:https://github.com/
1、创建远程库
2、常见指令
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与 |
1)创建远程库别名
语法:
git remote -v
功能:查看当前所有远程地址别名
语法:git remote add 别名 远程地址
功能:给远程库取别名
-
创建好远程库时,复制地址
-
效果
2)推送本地分支到远程库
语法:
git push 别名 分支
- 效果
- 选择在浏览器中的账号登录
- 代表登录成功
- GitHub主页上显示文件代表推送成功
3)克隆远程库到本地
语法:
git clone 远程地址
- 先复制要克隆的地址
- 我们创建一个Git-lhc文件夹,表示另一个GitHub账号,然后我们cd到Git-lhc目录下准备克隆(注意:克隆时不需要登录账号的,只需要直到下载的地址)
- 克隆成功
4)拉取远程库内容
语法:
git pull 远程库地址别名 远程分支名