Git总结

1.Git历史

同生活中的许多伟大事件-样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002 年间)。到2002 年,整个项目组开始启用分布式版本控制系统BitKeeper 来管理和维护代码。

到2005 年的时候,开发BitKeeper 的商业公司同Linux 内核开源社区的合作关系结束,他们收回了免费使用BitKeeper 的权力。这就迫使Linux 开源社区(特别是Linux的缔造者Linus Torvalds ) 不得不吸取教训,只有开发-套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

● 速度
●简单的设计
●对非线性开发模式的强力支持(允许上千个并行开发的分支)
●完全分布式
●有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)

2.SVN和Git对比

(1)SVN

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用到都是自己的电脑,所以首先要从中央服务器那里得到最新的版本,然后干活,干完之后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢,就很郁闷了。

下图:标准的集中式版本控制工具的管理方式:在这里插入图片描述
集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。
缺点:服务器单点故障; 容错性差

(2)Git

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库。这样,工作的时候就不需要联网了,因为版本都是在自己电脑上,既然每个人的电脑都有一个完整的版本库,那么多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两个之间只需要把各自的修改推送给对方,就可以互相看到对方的修改了。
下图:分布式版本控制工具管理方式:

在这里插入图片描述

3.git工作流程

(1)从远程仓库中克隆Git资源作为本地仓库。
(2)从本地仓库中checkout代码然后进行代码修改。
(3)在提交前先将代码提交到暂存区。
(4)提交修改,提交到本地仓库,本地仓库中保存修改的各个历史版本,
(5)在修改完之后,需要和团队成员共享代码时候,可以将代码push到远程仓库。

Git的工作流程:
在这里插入图片描述

4.git下载

最早的Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑。不过,慢慢地有人把它移植到了Windows上。现在Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。

Git官网
Git下载地址

5.工作区和暂存区

创建本地仓库
右击Git Bush Here在弹出的命令行中输入  git init

创建完成:如下图会有一个.git的文件夹(不要随意修改里面的内容)
在这里插入图片描述

(1)git添加和修改文件步骤(并进行版本之间对比)

①新建一个txt文档,右击提交之后,如下图,txt文档前面会出现一个加号
在这里插入图片描述
同时右键Git Commit中也会多一个master
在这里插入图片描述
②点击之后提交
在这里插入图片描述
③提交完成
在这里插入图片描述
④测试文档添加到本地仓库之后,前面的“+”就会变成“√”
在这里插入图片描述
⑤这时候我们就把文件加到本地仓库了
如下图:右击版本库浏览器
在这里插入图片描述
本地仓库下有个测试文件,说明已经成功添加到本地仓库了
在这里插入图片描述
【修改】在测试文件中写入内容,右击提交即可。
在这里插入图片描述
当一个文件多次提交之后,如果我们想比较版本差异,和上次修改的区别。可以查看日志
在这里插入图片描述

(2)删除文件

①新建并提交到本地仓库一个用来测试删除的文件:
在这里插入图片描述
②在本地删除之后,本地仓库中还会存在
在这里插入图片描述
③此时点击提交,就可以彻底删除了,本地仓库的也会删除

在这里插入图片描述

(3)删除并保留本地副本

有时候我们本地需要一些配置之类的文件,但是提交的本地仓库的时候不需要,这时候就需要保留本地的文件,同时删除本地仓库的文件。
①选择要删除的文件:
在这里插入图片描述
②此时文件前面就会有一个“X”
在这里插入图片描述
③之后再提交一次即可。
在这里插入图片描述

此时本地还会有文件,但是本地仓库的文件已经没有了。

6.远程仓库

(1)添加远程仓库

第一步:注册GitHub账号,并选择创建一个工程
在这里插入图片描述
第二步:创建一个远程仓库
在这里插入图片描述

第三步:此时可以看到有两种方式连接远程仓库和本地仓库
此处以SSH为例
在这里插入图片描述

方式一:使用命令行连接远程仓库和本地仓库

在本地文件夹下右击Git Bush Here在弹出的命令行窗口,输入:
ssh-keygen -t rsa
之后一直回车即可。

① 此时在对应的本地文件夹下会生成一对密钥(公钥和私钥)
在这里插入图片描述
打开公钥,并复制代码

② 点击自己头像下面的Setting进入如下界面
在这里插入图片描述
在这里插入图片描述

点击保存即可,完成密钥设置之后,无需设置用户名和密码,就可以直接和服务器保持通信,这样也能保证我们的和服务器通讯是安全的。

③ 和远程仓库建立连接

在本地文件夹下右击Git Bush Here在弹出的命令行窗口,输入:
git remote add origin 远程仓库的路径

本地仓库推送到远程仓库:
git push -u origin master
之后回车即可。

④ 此时刷新之后,把本地仓库推送到远程就成功了。

方式二:使用TortoiseGit工具连接远程仓库和本地仓库

① 右击选择Git同步
在这里插入图片描述
出现如下界面:选择管理
在这里插入图片描述
② 配置网络路径,为git的安装位置下面找到ssh.exe,之后点击保存
在这里插入图片描述
③ 输入路径,并配置私钥
在这里插入图片描述
④ 点击推送即可。
在这里插入图片描述

(2)克隆远程仓库到本地

方式一:使用命令行

在本地文件夹下右击Git Bush Here在弹出的命令行窗口,输入:
git clone 远程仓库的路径

方式二:使用TortoiseGit工具

现在远程服务器复制ssh地址,之后在本地文件夹,选择右键Git Clone
出现如下界面,点击保存即可。
在这里插入图片描述

(3)解决冲突

当多人同时开发同一个项目的时候,开发人员A提交修改的文件之后,开发人员B没有更新代码,并且再本地还修改了同样的文件,之后点击提交。这个时候就会发生冲突的。

如果两个人修改的内容,相差很多行,A修改第10行,git会自动合并解决冲突。如果A修改的是第十行,B修改的是第十二行,系统就不知道怎样合并了,此时就需要我们手动解决冲突。

第一步:把远端的修改拉去到本地
第二步:手动修改冲突的内容
第三步:将修改后的内容,右击TortoiseGit选择解决冲突。
在这里插入图片描述
第四步:将解决冲突后的内容,提交到本地仓库,再推送到远程。

7.创建合并分支

(1)分支的理论

在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支,截止到目前,只有一条时间线。在Git里,这个分支叫做主分支,即master分支,HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的,所以HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。

在这里插入图片描述
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。
当我们创建的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。

在这里插入图片描述
Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化。
不过,从现在开始,对工作区的修改和提交就是指针dev分支了,比如新提交一次之后,dev指针向前移动一步,而master指针不变。

如图:分支之间平行,互补干扰。
在这里插入图片描述

(2)创建和切换分支

在这里插入图片描述
在这里插入图片描述

此时鼠标右键就会变成,刚才切换的分支。
在这里插入图片描述
查看版本分支图:
在这里插入图片描述
在这里插入图片描述

(3)合并分支

在这里插入图片描述
在这里插入图片描述

8.在IDEA中使用Git

(1)Git的配置

安装好InteLLiJ IDEA后,如果Git安装在默认路径在,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置Git的路径。
选择File→Setting打开设置窗口,找到Version Control下的git选项:
在这里插入图片描述

(2)使用IDEA将工程添加到本地仓库

在这里插入图片描述

(3)使用IDEA克隆仓库并同步代码

在这里插入图片描述
输入地址:
在这里插入图片描述

总结:git的使用可以帮助我们在开发中,更好的实现项目的管理,让我们的开发更有效率。希望此篇博客能够帮助对于git的使用还很迷茫的人。

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值