文章目录
环境准备
开始前请配置一下相关软件(并不要求版本一致):
OS: Windows7
Git:2.19.1
IDEA: 2017.2.2
注意:本案例源码GitHub仓库
本地Git安装与SSH秘钥
GitHub秘钥配置
头像下拉箭头–>Setting–>SSH and GPG keys–>new SSH Key,将
标题随便写,key放入Git生成的SSH公钥。
注意:id_rsa.pub直接用文本编辑器打开即可。
IDEA配置Git
File–Other Setting–>Default Settings–>Version Control–>Git
- 配置本地安装Git所在目录
- 选择使用本地Git SSH秘钥文件
- 测试是否成功。
推送本地项目到GitHub
新建测试项目
创建本地仓库
对新建项目使用Git版本管理控制工具:
注意:项目的本地Git仓库默认位置为项目路径下。
项目提交本地仓库
- 将项目加入到Git版本管理中:项目右键–>Git–>Add
- 提交到本地仓库:项目右键–>Git–>Commit Directory
填写提交信息
提交成功,IDEA右下角弹出成功提示
推送至GitHub
如果远程仓库没有对应仓库:
如果远程仓库有对应仓库:项目右键–>Git–>Repository–>Push;
指定对应Repository,然后Push.
URL:对应GitHub上Repository的URL
从GitHub上检出项目
VCS–>Checkout from Version Control–>Git
问题一:在检出项目时出现以下提示,解决方案。
问题二:Maven项目src下的代码不显示,解决方案。
提交和下拉
提交
当我们对本地代码有修改时,如增加、修改、删除等,为了让同事知道我们的最新代码,我们就需要将代码上传至Git远程仓库中,代码从本地上传至远程仓库就需要push,步骤如下:
- 提交至本地仓库–>commit
- 推送到远程仓库–>push
例如我们在项目中增加一个HelloWorld类,并且修改README.md文件的内容;
将新增文件提交到本地仓库:项目右键–>Git–>Commit Directory
填写提交信息,点击commit
推送到远程仓库:项目右键–>Git–>Repository–>Push
可以看到本地提交了几次,这里我不小心多提交了次。确认无误点击push;
IDEA右下角会出现以下提示,说明成功推送到远程仓库中:
查看GitHub中,文件成功上传至GitHub并且有了本次提交记录:
下拉
考虑一个问题,如果同事也修改了README.md文件,那么我们直接推送就会覆盖他的代码,为了避免这个问题,我们需要在push之前将远程仓库上最新的代码下拉至本地,这就是pull.
我们在新检出的项目IDEA_Git02中下拉IDEA_Git刚刚推送的代码:项目右键–>Git–>Repository–>Pull
分支操作
创建分支
在IDEA中创建新的分支:项目右键–>Git–>Repository–>Branches…–>New Branch
填写分支名称,点击OK
点击IDEA右下角:Git:dev就可以知道分支已经建好,且当前分支是dev;
注意:此时分支是在本地存在,远程仓库并不存在,因此我们需要利用我们前面讲的提交,推送到远程仓库。
推送后我们可以在远程仓库中看到dev分支:
分支切换
点击IDEA右下角:Git:dev我们可以看到本地有dev和master两个分支且当前分支为dev;
点击master分支上的小箭头,选择Checkout就会切换到master分支上。
分支合并
当我们在dev分支上做了修改,那么我们要把dev上的修改合并到master分支上:
将当前分支切换至master
选择dev分支–>Merge
这里分Merge的意思是将选中分支合并到IDEA当前所在分支。
查看master分支,发现已经合并。
分支删除
在某些情况下我们需要删除某些分支,那么我们需要在IDEA中删除本地分支,再推送至远程仓库:
我新建一个uat分支,我们删除这个分支。
点击uat分支–>Delete
删除成功。
远程仓库版本回退
在IDEA中操作GIt仓库远程版本回退步骤如下:
- 修改相关文件并提交作为版本回退测试:
- 打开Git历史提交记录:项目右键–>Git–>Show History
3. 复制版本号:复制要回退到的旧版本号和当前最新版本号
版本号右键–>Copy Revision Number
当前版本号:4bd216941c9fb973ba1d65c9950e1cab1cf2cd2f
旧版本号:d35a96ba85a27a4e78c17c60478e6bbc806d1b78
4. 版本回退:右键项目–>Git–>Repository–>Reset HEAD…
在这里我们需要了解Reset Type:hard、soft、mixed的区别
此时没有改变提交,但是Push会提示冲突错误,解决办法如下两种方法:
方法一:使用Hard会退本地代码,使用Git命令强制提交,本方法会将原有提交记录全部抹除
git push -f
重新使用Hard回退操作,会退回最新版本,并且push到远程仓库。
方法二:先使用Hard操作回退本地代码,再使用Mixed操作回退至新版本,再提交push。该方法本质上相当于一次修改提交而已。
使用Mixed将版本号回退到最新版本号
文件对比
在Eclipse中我们可以很方便的与本地和远程分支对比文件的改变,IDEA中也可以做到这样的功能,不过不同的一点是,Eclipse中是实时维护本地远程分支与远程分支的信息,而IDEA不是,需要手动Fetch远程仓库分支的索引。
首先在IDEA_Git02修改文件并提交到远程分支:
切换回IDEA_Git:
- 执行fetch更新本地远程分支代码索引:右键项目–>Git–>Repository–>Fetch
- 进行文件对比:右键项目或右键要对比的文件–>Git
-
这里需要解释在四个选项的含义:
- Compare with the Same Repository Version:与本地仓库相同版本比较
- Compare with Latest Repository Version:与本地仓库最新版本比较,注意这里的本地仓库维护这远程仓库的索引信息,如果Fetch后的最新版本就是远程仓库的最新版本。
- Compare with…:与选择的版本比较
- Compare with Branch:与选择的分支比较
了解了以上四个选项的意义就可以自由的对比了,无论是与远程版本对比还是本地版本对比。我们这里主要使用第四个选项与远程master分支比较。
我们可以在文件对比工具中进行提前合并等等操作。
冲突文件处理
首先我们在IDEA_Git并提交至远程仓库:
IDEA_Git02上修改同一文件并提交至本地仓库:
在IDEA_Git02上pull文件,出现文件合并工具,根据需要选择:
根据差异进行合并,并提交至远程仓库。