使用Eclipse-Maven-git做Java开发(14)--开发中对git的使用

jopen 9年前

        前面的文章说到了怎么讲本地的项目代码托管到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!!!


来自: http://my.oschina.net/songxinqiang/blog/603790