git在eclipse中的配置 转载
git在eclipse中的配置 转载
一_安装EGIT插件
http://download.eclipse.org/egit/updates/
或者使用Eclipse Marketplace,搜索EGit
最新的eclipse 里面都已经带了GIT的插件。 http://www.eclipse.org/downloads/eclipse-packages/
二_使用EGIT前的配置
配置个人信息,最重要的是user.name和user.email
l Preferences > Team > Git > Configuration
三_新建GIT仓库
l File > Team > Share Project 选择GIT
创建仓库后,在$workspace\demo目录下的.git文件夹,就是git的仓库地址。和CVS、SVN不同,GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库
同时,eclipse中的project也建立git版本控制,此时未创建分支,处于NO-HEAD状态
文件夹中的符号”?”表示此文件夹处于untracked状态,这样就成功创建GIT仓库。
四_配置.gitignore
显然NC_HOME和out是不需要进行版本控制的,我们可以通过配置.gitignore来排除这两个文件夹
打开Navigator窗口,在project根目录中添加.gitignore文件,将需要排除控制的目录写入.gitignore文件中
然后在public中新建一个文件,可以看到图标依然是问号,处于untracked状态,即git没有对此文件进行监控
通过Team -> Add to index可以将文件加入git索引,进行版本监控
可以看到图标显示也有了变化(EGIT中只要Commit就可以默认将untracked的文件添加到索引再提交更新,不需要分开操作)
也可以通过Team -> Untrack将文件从索引控制中排除。
将此次新增的文件commit到仓库中,文件将处于unmodified状态,或者说,这就是一种staged状态
五_查看历史记录
Team -> Show in history可以查看版本历史提交记录
六_远程GIT仓库
首先通过shell工具连接到服务器,建立空仓库gitdemo,此时的ssh访问地址如下,分别由协议名称、用户名、IP、端口、git仓库目录组成。
ssh://root@192.168.1.101:22/app/gitspace/gitdemo
现在已经把远程的GIT仓库克隆到本地,接下来需要将仓库检出为NC模块项目。
七_推送远程仓库
然后push到服务器端的mirror分支,Team -> remote -> Push
完成推送后,可以在服务器端mirror镜像的log中查看到此次记录
八_解决推送冲突
假设现在Mairo兄弟在用GIT协作开发NewSuperMairoBro游戏,目前服务器端的mushroom.java文件的内容如下:
然后Mairo弟弟先push代码,Mairo哥哥使用pull来合并本地仓库和远程仓库,将发行文件出现冲突,此时GIT会自动合并冲突的文件,如下图所示:
很明显自动合并的冲突文件不能直接使用,我们可以手动调整,右键发生冲突的文件,选择Team -> Merge Tool
第二项是用本地最新版本的文件和服务器端文件进行对比,建议用此项
然后右键点击此冲突文件,选择Team -> Add to index再次将文件加入索引控制,此时文件已经不是冲突状态,并且可以进行提交并push到服务器端
九_Rebase和Merge的区别
Rebase和Merge操作最终的结果是一样的,但是实现原理不一样。
从上面的MairoBro例子可以知道pull大概对历史记录进行了怎样的合并操作,其实默认pull的操作就是一个分支的merge操作,如下图重现一下:
首先是Mairo弟弟把更新push到服务器,这样服务器端的记录就和Mairo弟弟本地的记录是一样的,接着Mairo哥哥执行pull操作,现在分析下pull是如何操作的。
l pull默认就是先把服务器端的最新记录更新到本地的Remote Tracking中对应的mirror分支
l 接着对Local的mirror分支和Remote Tracking的mirror分支进行merge操作
Merge操作后的结果就是会新增加一个merge记录节点,如下所示:
从上图可以看出,mushroomA是在mushroomB之前的,这个时间关系不取决于谁先执行push,而取决于本地仓库中谁先执行commit。所以merge会按照时间顺序严格的记录每一次commit。
接下来看看rebase,其实rebase也是把两个分支进行合并的操作,当Mairo弟弟push更新后,服务器端的mirror分支的历史如下:
现在Mairo哥哥不是执行merge操作,而是执行rebase操作,最后结果如下:
很明显的区别是没有出现分支的记录,而且注意到mushroomA*,请注意这个记录和mushroomA不是同一个记录,我们先分析下rebase操作下,Mairo哥哥的历史记录都做了哪些变化:
l 先将当前分支的更新部分保存到临时区域,而当前分支重置到上一次pull的记录
l 然后将服务器端的更新添加到当前分支,此时当前分支和服务器端分支是一样的
十_Rebase和Merge如何选择的简单解析
此小结为什么说是简单解析呢,因为rebase和merge的选择问题讨论比较激烈,笔者也没有一个定论,而且git也处于研究发展阶段,很多理论还没有完全的纯熟。
对于一个多人开发团队频繁提交更新的情况,如果使用merge会使得历史线图非常复杂,并且merge一次就会新增一个记录点,如果使用rebase就是完全的线性开发。
上图所示是Merge和Rebase的两个结果,显然你不想要merge的混乱结果吧,你能告诉我merge图中那条线是master分支吗?
十一_Fetch和Rebase
MairoBro来做fetch和rebase的测试,首先Mairo弟弟在client中添加文件OPQ分别提交,并push到服务器,如图:
此时服务器端的历史已经被更新,但是Mairo哥哥的remote tracking中mirror分支并没有更新到最新的记录,如图:
所以需要更新remote tracking中的分支,使得它与服务器端的分支同步,右键点击资源库选择Fetch
这样就更新了本地的remote tracking中的分支,使得它和服务器端分支同步。
然后Mairo哥哥在本地的private中添加文件ABC,并分别提交到本地仓库中。
然后将本地mirror分支和remote tracking中的mirror分支进行rebase,先checkout本地mirror分支 ,然后右键点击选择Rebase
如上图可以看到历史记录的顺序是OPQABC,已经rebase成功,接着push到服务器即可。
十二_重置功能
GIT中有三种重置功能,分别是soft、mixed、hard,区别如下:
l Soft - 当前分支重置到指定commit记录位置,索引和工作树不变;
l Mixed - 当前分支重置到指定commit记录位置,索引被更新,工作树不变;
l Hard - 当前分支重置到指定commit记录位置,索引和工作树都更新。
貌似不好理解,首先要理解GIT的三个区域(工作树、索引区、仓库),可以参考文档《GIT简介》。
先做soft的测试,新建Soft.java文件,可以看到此文件未添加到索引控制
先进行一次提交,提交后在History窗口中重置此次提交,如图:
从上图可以看出,soft文件还存在,说明重置没有改变工作树,而且soft文件不是“问号”图标,说明已经添加到索引,说明索引也没有变。唯一重置的是历史记录。
然后新建Mixed.java文件,此时Mixed.java也没有添加到索引控制,然后提交。
从上图可以看出,Mixed.java文件还存在,说明工作树没有改变,但是文件状态是untracked,说明索引被更新,此时文件没有添加索引控制。
git在eclipse中的配置 转载相关推荐
- java中git使用教程_【教程】Git在Eclipse中的安装和基本使用
一.安装 点击 Help->Install New Software->add 安装地址为:http://download.eclipse.org/egit/updates/ 选择插件 点 ...
- maven的安装、路径配置、修改库文件路径和eclipse中的配置、创建maven工程(转)...
一.maven的安装 首先,先到官网去下载maven.这里是官网的地址:http://maven.apache.org/download.cgi 请选择最新的版本下载: 解压apache-maven ...
- How to Configure Eclipse for Python --- 在eclipse中如何配置pydev
From: http://www.rose-hulman.edu/class/csse/resources/Eclipse/eclipse-python-configuration.htm Pytho ...
- maven下载,安装与eclipse中maven配置
1.maven下载.安装与环境变量配置 http://blog.csdn.net/jiuqiyuliang/article/details/45390313 2.Eclipse中maven的配置 ht ...
- 【教程】Git在Eclipse中的安装和基本使用
一.安装 点击 Help->Install New Software->add 安装地址为:http://download.eclipse.org/egit/updates/ 选择插件 ...
- Maven 系列 3:如何在 Eclipse 中集成配置 Maven(以 apache-maven-3.6.2、eclipse-jee-2019-09-R-win32-x86_64 为例)
文章目录 前言 一.打开 Eclipse 进入 Maven 配置页面 二.将本地 Maven 路径对应到 Eclipse 中 三.将配置文件集成到 Eclipse 中 四.开启 Eclipse 的 M ...
- Eclipse中Latex配置
Eclipse中配置latex环境(Texclipse) 安装Miktex环境. Eclipse中安装Texclipse插件. Open Window > Preferences, and fr ...
- Eclipse中安装配置Tomcat和创建JSP项目
这里写自定义目录标题 安装配置Tomcat 创建JSP项目 安装配置Tomcat 下载并解压Tomcat到指定目录 Eclipse菜单栏中找到Window–>Preperences->Se ...
- spring在eclipse中基本配置使用
spring① spring 使用eclipse中的maven项目配置spring 配置jar包 我们还需要一个spring.xml java对象实例化,赋值 首先写一个简单的学生类 到spring. ...
最新文章
- 介绍两个非常好用的Javascript内存泄漏检测工具
- r读取shape文件可视化_【R】提取 PCA 结果并利用 ggplot2 进行可视化
- Hybris订单价格的折扣维护
- 《人生不设限》力克的生命故事
- 查看tomcat管理信息
- Linux下安装Oracle11g服务器
- 看我如何发现开源 WAF引擎ModSecurity 中的DoS 漏洞
- vs2017+配置工程的编译路径(输出目录和中间目录)
- 一文详解深度学习模型部署!(分类+检测+分割)
- ununtu16.04+python3+selenium+firefox环境搭建
- Atitit nosql的概念与attilax的理解 目录 1. 常见的nosql 二、Redis,Memcache,MongoDb的特点 1 HBase	1 2. Nosql的核心nosql	1
- 数组字符串转int数组_7.5 C++字符串数组 | 字符串数组输出
- Linux安装maven(超详细教程)
- Java中的class类和对象总结(思维导图)
- Eclipse WTP
- Vue联动下拉框默认选中
- Python爬虫入门 | 5 爬取小猪短租租房信息
- windows server 2008搭建nfs共享服务
- Error: stat_count() can only have an x or y aesthetic Run `rlang::last_error()` to see where the err
- 3000字英文随笔(挽救下语感)
热门文章
- 255.0.0.0子网掩码相应的cidr前缀表示法是?_六十四、前缀,后缀,中缀表达式转化求值问题...
- 新网数十万域名管理密码泄露
- 连连看外挂消去算法分析
- jQuery:从零开始,DIY一个jQuery(1)
- 终于我还是放手了, 但是只想说,暂别 Aptana Studio 3,Phpstorm来吧!(附:个人遇到的小问题的解决方法)...
- Swift中文教程(一)基础数据类型
- 【jQuery插件】textSlider 文字滚动插件
- 华为机试——简单密码
- 【Linux】tail显示日志最后几行
- 【anaconda】激活环境失败-bash: activate:No such file/没有那个文件或目录