高版本的Eclipse自带有该插件
EGit-基本配置
配置GIT默认仓库
配置GIT用户信息
打开EGit相关视图
EGIT - 本地版本控制
-
将项目转换为仓库
-
EGit图标
已跟踪[ tracked ]
未跟踪[ untracked ]
仓库未跟踪,通常是新建的文件,要接入版本管理可以通过“Add to Index”或直接
“Commit”操作。
忽略[ ignored ]
仓库认为该文件不存在(如bin目录,不需要关注)。通过右键Team => Ignore 添加忽
略文件
已修改[ dirty ]
修改“已跟踪[ tracked ]”的文件,未添加到暂存区Index(未“Add to Index”或
“Commit”)的文件,标志与本地库不一致。
已暂存[ staged ]
修改“已跟踪[ tracked ]”的文件,并添加到暂存区Index(即执行“Add to
Index”);
已部分暂存[ partially-staged ]
修改“已跟踪[ tracked ]”的文件,部分修改已添加暂存区Index,部分未添加。相当
于:已跟踪的文件修改,Add to Index ,Commit前又修改了文件。
已添加[ added ]
untracked 状态的文件,通过“Add to Index”被仓库已知,但是没有“Commit”,
“Commit”后可变为“已跟踪[ tracked ]”状态。
已删除[ removed ]
从工作区中删除文件,文件会消失,也就没有图标出现,下一次提交时被删除。Team
=> Untrack可以触发本图标,在“Commit”对话框中可以看到图标。
冲突[ conflict ]
进行Merge合并操作会引起冲突,需要人工解决并添加到索引区修改状态。
假设有效[ assume-valid ]
一些修改未被Git检查。右键Team => Assume unchanged可产生该状态。
-
增加到缓存区
Team->Add To Index
-
提交到分支区
Team->Commit
-
一步提交版本(增加到暂存区+提交到分支区)
Team->Commit
在进行提交操作时,EGIT允许直接勾选 [未跟踪] 状态的文件,此时,EGit会自动将该类型文
件Add To Index 后再 Commit -
查看版本信息
Team->Show In History
-
增加文件到本地仓库
Team->Add To Index
Team->Commit
Team->Commit
创建文件
增加到暂存区 [Team->Add To Index]
提交到分支区 [Team->Commit]
-
提交修改到本地仓库
Team->Add To Index
Team->Commit
Team->Commit
修改文件
增加到暂存区 [Team->Add To Index]
提交到分支区 [Team->Commit]
-
删除文件从本地仓库
删除文件
Team->Commit
直接删除文件
提交到分支区 [Team->Commit]
-
从暂存区中撤销
Team->Remove From Index
修改工作区
增加到暂存区 [Team->Add To Index]
从暂存区中撤销 [Team->Remove From Index]
-
基于分支树回滚版本
[History窗口中]Reset->Soft、Mixed、Hard
History窗口中选择目标版本并回滚 [Reset->Soft、Mixed、Hard]
-
基于操作历史回滚版本
[GitRef窗口中]Reset->Soft、Mixed、Hard
GitRef窗口中选择某个历史指令并回滚到该指令执行过后的状态 [Reset->
Soft、Mixed、Hard]
-
文件版本比较
两个历史版本之间的比较
[History窗口中,选择两个版本]->Compare With Each Other
History窗口中,选择两个版本,并通过[Compare With Each Other]进行比较
指定历史版本和当前工作区中文件的比较 b.
[History窗口中,选择某一个版本,选择其中一个文件]->Compare With WorkSpace
History窗口中,选择某一个版本,选择其中一个文件,并通过[Compare With WorkSpace]
将该文件的指定版本和当前工作区中的状态做比较
比较窗口中提供了按钮,可以实现快速代码移植
- 忽略文件
Team->Ignore
可以通过[Team->Ignore]命令Git忽略指定文件,此命令本质上会将该文件位置信息写
入.gitignore文件中,git会根据此文件中指定的规则忽略相应文件
因此也可以直接修改.gitignore指定忽略文件规则
.gitignore文件格式:
1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2)以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行
转义。
3)可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表
达式。
4)以斜杠"/“开头表示目录;”/“结束的模式只匹配文件夹以及在该文件夹路径下的内
容,但是不匹配该文件;”/“开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则
它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则
相对于项目根目录。
5)以星号”*“通配多个字符,即匹配多个任意字符;使用两个星号”**" 表示匹配任意中
间目录,比如a/**/z
可以匹配 a/z, a/b/z 或 a/b/c/z等。
6)以问号"?“通配单个字符,即匹配一个任意字符;
7)以方括号”[]“包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如
[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划
线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0
到9的数字,[a-z]表示匹配任意的小写字母)。
8)以叹号”!“表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目
录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被
前面的规则排除掉了,那么对这个文件用”!“规则是不起作用的。也就是说”!“开头的模式
表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用”!"也不会再
次被包含。可以使用反斜杠进行转义。
需要谨记:git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的
规则匹配的范围更大,则后面的规则将不会生效;
EGIT - 远程版本控制
-
代码托管站点
基于Git这一优秀的分布式版本控制工具,市面上出现了大量基于Git的代码托管网站,开发者可以选择使用代码托管网
站作为分布式版本控制中的"中央服务器",从而非常便利的实现代码托管、分布式开发、项目管理等能功能,省去了自
己搭设中心服务器的麻烦。
目前,许多开源项目也基于代码托管网站进行管理,随着越来越多的人参与和使用,Git代码托管网站早已不再只是基本
的版本管理工具,而成为了一个完整的开发者社区,在开源领域有着重要的作用。
目前有很多代码托管网站,其中最知名的是GitHub,托管着大量的私有或开源的项目,其他国外较为知名的代码托管网
站包括GitLab、BitBucket等,但这些代码托管网站通常架设在国外,国内访问并不稳定,而国内也有相关产品,例如
码云、coding等,在国内也有较为广泛的应用。
-
GitEE码云
码云(gitee.com)是开源中国推出的代码托管平台,支持 Git 和 SVN,提供免费的私有仓库托管。目前已成为国内最大的代
码托管系统,有超过 300 万的开发者选择码云。
注册码云
访问码云官网https://gitee.com/,注册并登陆
在码云上创建仓库
配置仓库基本信息
获取项目地址
-
EGit推送代码到远程仓库 - HTTPS方式
提交本地代码
Team->Commit
推送本地仓库代码到远程仓库
Team->Remote->Push
在远程仓库中检查是否推送成功
-
EGit从远程仓库克隆代码到本地仓库 - HTTPS方式
[Eclipse菜单 - File - Import]
从远程仓库中克隆项目,选择[Eclipse菜单 - File - Import]
点击下一步,克隆项目成功
可以进一步导入该仓库中的代码到Eclipse中成为一个java项目
导入成功,在Eclipse下使用该项目
-
EGit从远程仓库拉取代码 - HTTPS方式
Team->Remote->Fetch From…
当远程仓库中有高于本地版本的更新内容时,可以在本地仓库通过拉取操作获取该版本内容。
为了方便测试,在远程仓库中,创建一个新文件
尝试从EGIT中进行拉取,通过[Team->Remote->Fetch From…]开始拉取
拉取之后在History里可以看到最新拉取到的版本,但master和HEAD仍未执行该版本,通过[Rest->
Soft、Mixed、Hard]来进行指向
成功拉取了文件
- 使用SSH方式连接远程仓库
非对称加密简介
非对称加密算法是一种密钥的保密方法。
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,
如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用
对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称
加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该
公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的
信息进行解密。
另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;甲方再用自己的私钥对乙方发送回来的
数据进行验签。
甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户
交换密钥的需要。
非对称密码体制的特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有
对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以
保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称
密码那样传输对方的密钥了。这样安全性就大了很多。
非对称加密主要算法有: RSA、Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等
SSH免密登录原理
SSH方式免密连接远程仓库
以上的案例中均是使用HTTPS方式连接的远程仓库,但通常远程仓库通常都提供SSH方式的连接,且SSH方式以非
对称加密为原理可以实现免密登录,从而可以避免频繁的输入用户名密码,是一种更加安全、便捷的连接方式,目
前应用的非常广泛,推荐使用。
本地生成公钥私钥对
在远程仓库中配置公钥
之后就可以通过SSH地址来免密连接远程仓库了
上一篇 1.Git零基础使用详解
关于更多DevOps 使用教程 敬请期待。。。。。