使用Eclipse-Maven-git做Java开发(14)--开发中对git的使用
前面的文章说到了怎么讲本地的项目代码托管到git托管服务中,本文将来说一下日常的开发中对git的使用来进行开发。
(上次才说了要缩短更新时间,但是实在抱歉,中间出了一些事情,耽搁了一段时间)。
0、要求
要达到前一篇博客说明的条件,也就是代码已经托管到git中了,并且本地的环境那些也是对的。本次演示使用上一篇博客使用的那个工程。
1、远端代码到本地代码的同步
之前只说了本地代码提交推送到远端,有时候远端有更新的提交需要同步到本地来,接下来就演示一下怎么操作。
为了演示这种情况,我会在web上进行一次修改,模拟出有更新的提交,然后在本地的STS中进行查看与同步。
1.1 在web进行修改
点击“编辑”进行编辑,然后做出一些修改,提交。
修改过后的文件内容:
1.2 本地STS中查看修改
在同步之前,先在本地STS的仓库管理中对应的仓库上面查看历史,看看同步之前的样子,右键仓库记录->"show in"->"history":
从提交时间上可以看到,刚才的那次提交并不在列表中,
这也是符合git是分布式版本管理的设定的,接下来我们查看远端的代码仓库情况。右键仓库记录->"fetch from upstream",等到网络传输,然后会有提示说远端是否有改动。
但是这个时候在“history”视图是看不到的,因为还没有拉取下来,但是在仓库记录的条目上会有一个向下的箭头,表示需要进行拉取以保持同步。
1.3 拉取改动
我们在仓库上右键->“pull”拉取远端上的改动
拉取过后会有提示框说明本次拉取的结果,然后在“history”视图中也会看到记录。
2 冲突的出现与冲突的解决
刚才的演示中是本地没有修改与同步得来的修改冲突的,要是本地有一个修改是与远端修改冲突了的呢?这种情况经常出现,所以有必要说明一下处理方法。
2.1 制造冲突
还是那样,我们在web上做一次提交,使得文件成为这样:
然后,我们在本地的STS中进行修改,使得文件成为这样,:
并提交但是不推送
2.2 拉取远端变更,得到冲突
在fetch之后会看到仓库记录条目上有一个向上和一个向下的箭头,表示需要推送也需要拉取,这个时候直接推送是不行的,需要先拉取,我们使用先前的方法进行拉取:
然后就会得到这样的提示:
文件中标注了冲突的具体情况,文件视图中表明了哪些文件有冲突,仓库视图中对应的记录标注该仓库有冲突。
2.3 解决冲突
这个时候你推送是不行的,会提示你需要解决冲突。接下来我们就解决冲突,然后推送。
首先将文件内容进行修改,根据实际的情况修改为这个文件本来的内容,具体怎么改得看具体情况。
"<<<<<<< HEAD"以及后面的"=========="之间的内容是本地的"HEAD"指向的版本,后面的是远端与之冲突部分的版本。
我这里就直接保留两个版本,将两行都留下来。
这里补充一下,推荐一款软件-------"Meld",是一个非常好用的文件对比工具,同时提供版本控制软件的对比公能,能够找出哪些地方修改了、冲突等,自由软件(GNU)、跨平台,官方网站,使用linux的时候可以使用它来进行冲突解决,windows版本的不是很好用。
使用“版本控制”功能,加载我们需要处理的git仓库;然后设置显示“修改”和“冲突”,不显示“未修改”的,查看出现冲突的文件;然后在视图中就可以看到是怎么个冲突法了,而且还可以直接标记为“已解决冲突”。
修改文件之后,保存,这个时候需要做一些操作,然后才能提交,否则是不成功的。
在工程视图中文件上右键->"team"->"add to index":
然后你就会发现,原先标记的冲突都不见了:
这个时候就可以愉快的提交啦,不过这个时候的提交注释信息已经有一部分填写好了:
直接提交、推送,然后在远端和本地就都是一样的啦。
3 暂停一下
好了,本文就先说到这里,下一文将说一下git的使用管理,例如分支、标签、分支合并等。
enjoy!!!