Git 简介
Git简介
(118条消息) ❤️Git图文使用教程详解(一)_生命是有光的的博客-CSDN博客
- Git是一个免费的、开源的分布式版本控制系统 ,可以快速高效地处理从小型到大型的各种项目
- Git易于学习,占地面积小,性能 极快 。 它具有廉价的本地 库 ,方便的暂存区域和多个工作
流分支等特性。 其性能优于 Subversion、 CVS、 Perforce和 ClearCase等 版本控制工具。
版本控制
- 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
1. 集中式版本控制工具
- CVS、SVN、VSS
- 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
- 这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
- 事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
2.分布式版本控制工具
Git、Mercurial、…
像Git这种分布式版本控制工具 ,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来 (本地库) 。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份 。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷 :
服务器断网的情况下也可以进行开发,因为版本控制是在本地进行的
每个客户端保存的也都是整个完整的项目 ,包含历史记录,更加安全
Git历史
Git工作机制
工作区:指代码存放的位置(在本地电脑上的位置)
工作区写的代码会先添加(git add)到暂存区(暂存区中的代码也是可以删掉的,并且不会产生历史记录),如果想产生历史版本,则需要提交 ( git commit ) 到 本地库 ,到本地库就删不掉了(因为保存了历史版本)
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库
Git常用命令
版本穿梭命令:git reset –hard 版本号
**git rm –cached
- 在本地如果有修改,追踪文件状态则显示红色
- 如果添加到暂存区则显示绿色
git log: 查看完整的git历史记录
git reflog
查看版本信息,简略的版本信息,版本号为完整版本号的前7位git log
查看版本详细信息,有完整的版本号等信息
版本穿梭原理
- Git 切换版本,底层其实是移动的HEAD 指针,具体原理如下图所示
- HEAD 指针指向 master 分支,master分支指向具体哪个版本
Git分支
1. 分支概念
- 在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支
- 使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行
- 分支可以简单理解为副本,一个分支就是一个单独的副本
2. 分支好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可
3. 分支相关命令
1. 合并分支
- 正常合并不冲突
- 合并产生冲突
原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改, Git无法替我们决定使用哪一个。必须 人为决定新代码内容
注意:
- 如果产生了合并冲突,则需要手动的打开文件,人为的决定需要保留哪些内容,编辑有冲突的文件,删除特殊符号,决定要使用的内容
- 此时的状态仍然为红色(修改),此时还需要调加到暂存区,然后提交本地库(此时提交本地库时不能带文件名)
Git团队协作
- 团队内协作
- 跨团队协作
Git远程库
- 常用命令
- 推送的时候需要指定分支(推送和拉取时,本地库和远程库的库名可以不一致,只保证库中内容上的一致性)
- 克隆时,只需要在本都创建一个文件夹用于保存远程库的内容即可,不用本地初始化仓库(克隆时不用登录账号)
- 克隆时所做的事:1.拉取远程库 2.初始化本地仓库 3.创建好远程别名