Git入门篇五(原理,SSH使用方式)
Git原理Git原理Git工作流和Svn的区别Git文件管理原理Git分支管理原理概念创建分支切换分支修改分支切到主线SSH使用方式Git原理Git工作流和Svn的区别Git文件管理原理Git分支管理原理概念Git中版本控制以及分支管理都离不开最为重要的HEAD指针,由这个指针指向具体的哪一个支线上,而这个支线又会指向某一个版本快照。当我们进行 git reset 前进后退的时候实际上就是操作当前
Git原理
Git文件管理原理
哈希
可以把哈希理解为一个系列的加密算法,哈希算法有许多种,各个不同的哈希算法虽然加密强度不同,但是都具备以下几个共同点:
- 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
- 哈希算法确定,输入数据确定,输出数据能够保证不变
- 哈希算法确定,输入数据有变化,就算只有非常非常小的变换,输出数据一定有变化,而且通常变化很大。
- Git 底层采用的是SHA-1 算法。
- 哈希算法可以被用来验证文件。原理如下图所示:Git就是采用Hash算法保证文件的完整性,只要发生一点点的变化都可以察觉到。
Git分支管理原理
概念
Git中版本控制以及分支管理都离不开最为重要的HEAD指针,由这个指针指向具体的哪一个支线上,而这个支线又会指向某一个版本快照。当我们进行 git reset
前进后退的时候实际上就是操作当前Master指针指向不同的文件快照索引。从而实现文件内容随着版本而变化。当我们第一次初始化仓库 git init
的时候就会生成第一个支线:master。
创建分支
我们在通过 git branch [创建分支的名字]
命令创建分支的时候,其实就是生成了 一个分支名字指针。我们切换分支的时候 其实就是将HEAD这个指针指向了分支。从而实现分支切换 此处可以将HEAD,和支线的名字都理解为指针(便于理解)
切换分支
修改分支
在修改分支内容的时候,比如会生成 87ab2
索引值,那么当前的testing指针会指向 87ab2
,HEAD 指向 testing。所以当前工作区可以看到87ab2
的内容。此时master还是指向f30ab
文件内容,对于分支的修改主线是不可见的。Git就是采用这种方式完成对分支的管理。这也是为什么Git 比 svn速度快的原因。他仅仅是移动指针而已
切到主线
SSH使用方式
介绍
因为现在大部分计算机都是Win10系统的,Win10可以帮助我们在Windows下管理凭据,将GitHub上的用户名和密码保存起来。如果是Win7的系统是没有这个功能的,需要每次和远程仓库交互的时候都录入用户名和密码,有点繁琐。所以需要SSH方式进行交互
在GitHub上已经提供了SSH的地址方式,我们只需要在本地生成SSH密钥,然后再GitHub上将生成的密钥管理起来。就可以使用SSH地址与远程仓库交互。
生成密钥
ssh-keygen -t rsa -C zhzhouq9@163.com
注意 -C 是大写的,后面是登录GitHub的邮箱
使用 cd ~ 进入当前计算机用户目录下,使用生成密钥的命令。之后会有部分:
冒号出现,不需要管直接回车使用默认值就可以了。
最终的命令行窗口:
会在用户目录下生成.ssh目录,保存公钥和私钥。使用记事本进入id_rsa.pub文件将其公钥复制一份。
GitHub操作
进入GitHub->settings->点击SSH and GPG keys
选择 New SSH key
将复制的内容粘贴进去,Title可以随意写
本地操作
然后将GitHub上仓库的SSH地址复制下来,我们在自己本地GitlocalStudy目录中打开Git命令行窗口,我们将SSH地址起个别名添加到本地库。
此时就添加好了ssh方式的远程仓库别名
接下来我们修改某一个文件–>>add–>>commit–>>push。
push的时候选择ssh别名的远程仓库即可完成操作。
Eclipse生成密钥
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)