GIT简单了解及学习
其实工作中用的是SVN并没有用到GIT 那我咋会想起来学一下git勒
在学习Netty的过程中发现下载GRpc编译器的时候需要用到git 就干脆来学一下了 反正也就花个两天时间啦
SVN
SVN:集中式版本管理工具
SVN的缺点:
- 服务器单点故障
- 容错性差
一旦服务器挂了 我们客户端就没办法更新代码了
Git
Git是分布式版本管理系统,它是没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要互联网了,因为版本都是在自己的电脑上。
那如何实现多人协作呢? 张三修改了文件A,李四也修改了文件A,这时他们只需将各自的修改推送给对方,就可以互相看到对方的修改了。
Git有一个本地仓库,
SVN必须连接服务器,才能实现对代码的提交、修改
Git工作流程
- 从远程仓库中克隆Git资源 作为 本地仓库。
- 从本地仓库中checkout代码然后进行代码修改
- 在提交前先将代码提交到暂存区
- 提交修改,提交到本地仓库中。本地仓库中保存修改的各个历史版本。
- 在修改完成后,需要和团队共享代码时,可以将代码push到远程仓库。
安装git就略过…
创建本地仓库
使用图形界面创建
点击Create New Repository 然后选择当前路径即可 ,之后就会创建出.git文件 这就是我们的本地仓库
使用命令行
向本地仓库添加文件
创建.txt文件 此文件必须在你的工作看见目录下 就是.git所在的那个文件
成功添加之后图标上会带有一个 ‘+’ 号 其实这时候是将文件保存到了暂存区
工作区和暂存区
什么是工作区(Working Directory)
工作区就是你在电脑里能看见的目录,比如我的repo1目录就是工作区,在这个目录里的隐藏文件.git 是版本库。
什么是暂存区:(stage或者叫index)
Git的版本库里存了很多东西,其中最重要的就是被称为stage的暂存区,还有Git为我们自动创建的一个分支master,以及master的一个指针HEAD。
继续我们进行commit (将存储在暂存区的文件正真的添加到本地仓库)
成功之后文件上会有一个 绿色的’√’ 完成!!
查看本地仓库是否以及存在各个commit的文件
看我们的文件已经在版本库中存在了
修改
右键修改过后的文件 直接commit即可,当然也是要写日志信息的。
显示日志 --[历史记录]
选择你本地仓库文件包中的任意位置,右键Show log 可以找到历史记录的相关信息,如果想要对比两个文件,同时选中两个文件并选择 revisions
文件删除
直接删除即可
文件还原
如果我们不小心删除了文件 点击右键 revert 可以看到我们刚刚删除的文件 还原即可
其实如果我们只是将文件delete了 这时候本地仓库里面还是存在的,我们要实现正真意义上的删除需要在删除文件之后,commit 就和之前提交文件一样。
将Java工程添加到版本库
首先将的工程拖到工作目录下,右键工程 add
先将其添加到暂存区
然后再commit将暂存区的文件提交上去
其实本来我看视频的时候它里面还将了一个忽略文件的,就是将不需要的文件不提交上去,结果这小乌龟不知道是不是因为版本的问题自己帮我全做完了,害的我都没去学他,可惜啊可惜
将本地仓库推送到远程仓库
在GitHub注册账号 并创建远程仓库
注册github账号并创建远程仓库 这里我就不贴出来了 大家应该都早就有了
有两种推送到远程仓库的方式一种是 HTTPS 一种是 SSH
为什么SSH?什么是SSH?
SSH 为 Secure Shell(安全外壳协议)的缩写。SSH是目前较可靠,专为远程登录会话和其他网络服务器提供高安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。
为什么HTTPS? 什么是HTTPS?
我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。 现在主流的大型网站用的都是HTTPS传输,比如京东啊 淘宝啊
创建ssh密匙及在gitbuh上配置公钥
打开git命令行窗口 输入ssh-keygen -t rsa 然后一路回车就可以了
之后会在你window当前用户的目录下的.ssh文件夹中生成一对密钥
然后我们使用记事本打开公钥,并复制里面生成的key
现在github就知道我们的公钥是什么了,我们就无需输入用户名和密码就可以和服务器进行通信,可以保证我们的通信是安全的。
和远程仓库建立连接 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3d229e63141f3e12ff71ef037686a0e6.png)
打开命令行窗口
如果你输命令输错了 然后造成的一些问题可以去百度下决绝方案 git都提供给你了 push成功之后查看我们的github远程仓库
使用HTTPS方式进行PUSH到远端
这里我们使用命令行之外的方法(图形界面的方式)进行推送
使用小乌龟创建
推送
克隆远程仓库到本地
先创建一个文件夹
使用命令行进行克隆
图形方式 在文件夹空白处右键克隆即可 进去之后ok就可以了
分支管理
创建合并分支
在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截至到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
每次提交,master分支都会向前移动一步,随着你不断提交,master分支的线也越来越长。
当我们创建新的分支,例如dev,Git新建了一个指针叫做dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。
新建分支并切换
也可以直接创建分支 :右键看不出 tortaiseGit --> Create Branch 然后再进行切换分支
从现在开始,对工作区的修改和提交技术正对dev分支了,比如新提交一次都,dev指针往前移动异步,而master指针不变。
分支的合并与删除
使用dev和master分支分别创建一个文件,并且添加到本地仓库。我们会发现如果你切换为master分支就无法看见dev分支创建的文件,你为dev分支的话就无法看见master分支创建的文件。
合并分支
合并之后你可以再进行提交