Git的基本操作--本地仓库的操作(一)
第一part:版本控制
版本控制系统实际主要由两大类:集中式、分布式
集中式:SVN
集中式就是必须存在一个中央控制器(中央服务器:用于进行存储历史版本和代码信息),无论是个人管理代码或者是团队协作管理,只要使用SVN的话则必然存在中央服务器,弊端:
1.需要联网才能够实现历史版本的操作,或者完成一系列连接操作才能够实现版本回退操作
2.中央服务器一旦崩溃,则有可能整个项目结束(当然一般公司都会考虑此种风险,设置备份服务器)
3.svn的两个核心操作上传、下载:都是基于文件传输方式完成的(速度会很慢)
分布式:Git
Git是目前世界上最先进的分布式版本控制系统。Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到非常大的项目版本管理。Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。优点:
1.适合分布式开发,强调个体
2.中央服务器压力和数据量不会太大
3.速度快、灵活,使用文件流的形式进行传输内容
4.离线工作,任意两个开发者之间可以很容易解决冲突
第二part:Git的个人代码管理过程
1.git的安装:
直接在官网https://git-scm.com/,直接下载进行下一步下一步的安装即可
2.创建仓库
本地仓库:repository,又称之为版本库。
当我们需要让Git去管理某个新项目/已存在项目的时候,就需要创建仓库了。注意,创建仓库时使用的目录不一定要求是空目录,选择一个非空目录也是可以的。
注意:为了避免在学习或使用过程中出现各种奇葩问题,请不要使用包含中文的目录名(父目录亦是如此)。
3.仓库初始化
使用指令:git init
执行git init指令完成仓库的初始化操作。初始化成功之后会生成一个隐藏的目录.git,这个目录是Git进行创建,也表示当前目录是一个git仓库,不能够删除以及随意修改其中的内容。
当然,在实现工作区的初始化操作时,可以直接选择需要初始化的目录右键选择git bash进入执行上述命令即可。如果是在其他目录下进行右键git bash的话,需要对其他目录进行工作区初始化操作,则需要涉及切换目录的操作,并且在这里注意,切换目录是linux状态,所有盘符都是在根目录下的,不能够使用windows的路径表示,例如如下:
第三part:配置Git
1.初次使用git的时候,你必须要配置git的用户信息,用户名和邮箱地址,设置的是全局变量,使用git config --global 配置项 配置项的值
注意:配置了全局信息后,会在本地用户目录下生成一个.gitconfig文件,后期的配置既可以使用命令配置也可以直接修改该配置文件
user.name的值为自己的用户名
user.email的值为自己注册git使用的邮箱
2.使用 git config --global --list 命令,查看全局配置信息
3.使用命令进行配置:git config --global --edit进行修改,与linux的vim操作一致:
4.使用命令删除一个配置项:git config --global --unset 需要删除的配置项名称
第四part:Git的基本指令
1.查看当前状态:git status
2.将工作区文件添加到缓存区:git add 文件名
如果存在多个文件添加的话,则可以使用以下几种语法完成操作
语法1:git add 文件名1 文件名2 文件名3.....
语法2:git add .
语法3:git add -A
语法4:git add *
如果需要指定后缀则*.后缀名即可;如果需要添加整个文件夹,则使用git add 文件夹名称
3.如果需要将暂存区中的文件进行删除的话:git rm --cached 文件名 (从暂存区回到工作区)
4.将缓存区的文件提交到版本库:git commit -m "注释",提交成功之后则生成对应的历史版本
注意:在这里提交版本时,初次使用git的话会提示你需要配置git的用户信息,主要需要配置用户名和邮箱地址。
5.查看历史版本:git log
6.通过版本号进行回退操作: git reset --hard 需要回退到的历史版本号
历史版本号通过git log进行查询,可以写全部也可以写前7位:
7.查看历史操作记录:git reflog
第五part:分支管理
分支可以理解为多个功能的同时推进,最后完成合并操作
。
优点:
1)同时并行多个功能开发,提高开发效率
2)各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支产生任何影响,即各个功能开发者的独立性。
1.创建分支:git branch 分支名
注意:基于当前主分支下进行创建分支的话,则会复制一份主分支内容为需要创建的分支。
2.查看分支:git branch -v 其中-v参数表示查看本地分支
git branch -r 如果需要查看远程分支的话则添加参数-r
git branch -a 如果是添加参数-a的话则表示显示所有分支,包括本地分支和远程分支。
其中分支前面有*,代表当前处于处于哪个分支:
3.切换分支:git check out 分支名
4.合并分支:
【场景1】基于主分支新建的新分支,会复制一份主分支的内容,然后基于新分支修改其中文件内容并提交产生新的历史版本,不修改主分支的操作也不产生主分支的历史版本,则可以直接将新分支内容合并到主分支中。
git merge 有新内容的分支名
【场景2】基于主分支新建新分支后,在新分支上进行修改文件产生历史版本,同时也在主分支上修改相同的文件并产生历史版本,那么进行合并时会产生冲突问题?
冲突解决方案:
a.产生冲突后,查看合并后的内容,会将两个分支都新增或者修改的代码进行显示出来
b.编辑合并后的文件,将特殊符号内容全部删除
c.合并主分支的开发者需要进行分析以及与新分支的开发者进行沟通,是全部保留两个人新增的代码还是只选择其中一个人的
d.将修改后的文件进行git add 文件名
e.最后将暂存区的文件生成版本库:git commit -m “注释内容”
【场景3】新分支中如果新增文件,在主分支中不存在的话,则可以直接合并,将新分支中的文件同步到主分支中。
5.终极解决Git终端中的乱码问题:
1)新增配置项,将core.qutoepath的值修改为false git config --global core.quotepath false