续上一个总结。
一、分支管理
1、什么是分支:
在版本控制过程中,使用多线条同时推进多个任务
(注意:hot_fix是热修复)
2、分支的好处
同时并行推进多个功能开发,提高开发效率;各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支任何影响。失败的分支删除重新开始即可。
3、查看当前所有分支
git branch -v
4、创建分支(hot_fix 是分支名)
git branch hot_fix
5、切换分支
git checkout hot_fix
6、合并分支
- 第一步:切换到接受修改的分支(被合并、增加新内容)上
- git checkout[被合并分支名]
- 第二步:执行merge命令
- git merge [有新内容分支名]
二、Git基本原理
1、哈希
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
- 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
- 哈希算法确定,输入数据确定,输出数据能够保持不变
- 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大
- 哈希算法不可逆
2、Git底层采用的是SHA-1算法。
哈希算法可以被用来验证文件,原理如下图所示:
3、Git的文件管理机制
Git把数据看作是小型文件系统的一组快照。每次提交更新时Git都会对当前的全部文件制作一个快照并保存这个快照的索。为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以Git的工作方式可以称之为 快照流。
4、文件管理就是一个”链条“,创建文件就是创建一个指针,切换一个分支就是切换一个”指针“。效率比SVN高很多。
三、总结一下
1、初始化新的本地库
git init
2、创建远程库
3、在本地创建远程库地址别名
- 命令:git remote -v 查看当前远程有无地址其他别名
- 命令:git remote add origin https://github.com/henuliyanying/huashan.git
- 以后就可以用origin代替上面这个链接
- 给这个远程地址起的别名
4、克隆
- 命令:
git origin [远程地址]
- 完整的把远程库下载到本地
- 创建origin远程地址别名
- 初始化本地库(克隆直接把库初始化好了)
5、拉取
- pull = fetch +merge
- git fetch [远程库地址别名][远程分支名]
- git merge [远程库地址别名][远程分支名]
6、解决冲突
要点:
拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取。
四、SSH登录
1、背景:
背景:使用http形式的,每次pull push都需要登录,改用SSH,即可省去登录
2、SSH登录
- 进入当前用户家目录 cd ~ (~代表家目录)
- 将创建的SSH目录删掉 rm -r .ssh/
- 运行命令生成.ssh密钥目录 ssh-keygen -t rsa -C [邮箱],直接回车(使用默认设置)
- 进入这个SSH目录查看文件列表,cd .ssh/
- 查看这两个目录下的文件 cat id_rsa.pub
- 复制id_rsa.pub文件内容,登录GitHub,点击用户头像-》Settings->SSH and GPG keys
- New SSH Key
- 输入复制的密钥信息
- 回到Git bash创建远程地址别名
- git remote add origin_ssh git@github.com:henuliyanying/huashan.git
- 推送文件进行远程测试
五、Eclipse操作
1、工程初始化本地库
工程-》右键-》Team->Share Project ->Git
点击Use or create ……
Create Respository
点击finish
2、在eclipse里面设置本地库签名
3、?问号代表为追踪的文件,在命令行里直接执行 git add 追踪到暂存区就好
点击 项目右键——》Team——》Commit
4、Eclipse中忽略文件
- 概念:Eclipse特定文件
(这些都是Eclipse为了管理我们创建的工程而维护的文件,和开发的代码没有直接关系,最好不要在git中进行追踪,也就是把它们忽略)
- .classpath文件
- .project文件
- settings目录下所有文件
2、为什么要忽略Eclipse特定文件呢?
同一个团队中很难保证大家使用相同的IDE工具,而IDE工具不同时,相关工程的特定文件就有可能不同。如果这些文件加入版本控制,那么开发时很有可能需要为了这些文件解决冲突。
3、GitHub官网样例文件
- 也要忽略targer文件,target文件是编译后的字节码文件。
- 源文件没有错,则编译后的字节码文件肯定不会有错。
- 原则上:让git 帮我们管理的代码越少,出错的几率越小。
- 在家目录下建 Java.gitignore 文件,内容从第一个链接找
- 增加:.classpath .project .settings target
- 在家目录里找.gitconfig文件,在里面增添 :
- 【注意:这里路径中一定要使用“/”,不能使用“\”】
- restart 即重启eclipse
结果:如此以上文件对 我们使用Git进行版本控制,没有任何干扰。
4、eclipse中将代码添加到缓冲区
项目右键-》Team->Add to Index,效果如下图:
添加完之后 :星号代表已经被提交到暂存区:
再点击commit,被提交到本地库了
观察图标变化:
5、推送远程库
出现这个页面,则代表执行远程库成功:
6、从Git导入项目到eclipse时
最后一步,目录结构不是我们熟悉的,需要执行操作
项目右键-》Configure->Convert to Maven Project
结果:生成标准的maven目录结构的文件
当遇到冲突时,通过以下步骤调出 本地与远程 之间的区别。
俗称:合并工具