在讲从远程库拉去代码合并到本地库之前,我们先来将一个关于Push(推送)代码中一个大家需要注意的点:
push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致, push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
下面我们来演示如何在idea中将远程库的代码pull下来:
1:首先我们在我们的远程库中对我们的git_maven6项目做一个修改,如下图所示:
添加我们如下代码:
System.out.println("pull test");
2:修改完成后,此时相当于我们远程库的代码是最新的一个版本,但是本地库中的代码此时还未完成更新,如果此时我们程序员在没有pull下来我们远程库最新的代码,并且在本地完成了对旧版本的代码的更新如下图所示:
那么此时我们会发现本地库更新了一个Test.java的新的版本,远程库更新了一个对于Test.java的新的版本,所以当我们将本地git_maven6项目push的时候会发生合并冲突,如下图所示:
此时就需要我们点击Merge进行手动合并代码
我们会发现中间部分为我们之前本地库与远程代码库版本统一时候的代码,左边为我们本地库对Test.java文件的修改,中间为我们在远程库对Test.java文件的修改,最右边为我们原版Test.java文件。
此处我们就自己决定要怎么人工解决冲突即可,点击Apply后新的版本会自动提交到我们本地库以及我们的远程库当中去。
总结:为了避免以上的合并冲突的问题,建议我们的同学之后在本地进行开发前,如果我们公司的远程库中其他程序员对我们的代码进行了修改,此时我们的代码有了新的版本,建议我们同学先pull下来后,再进行代码的更新,否则此时便会发生上述的分支冲突问题。
3:下面我们来进行我们正常的pull操作
此时我们的远程库中进行了代码的更新,就以Test.java为例,原本Test.java代码如下图所示:
public class Test { public static void main(String[] args) { System.out.println("git1"); System.out.println("git2"); System.out.println("git3"); System.out.println("master test"); System.out.println("hot test"); System.out.println("push test"); System.out.println("pull test"); System.out.println("hello"); } }
此时我们对我们远程库当中的这个Test.java文件做出如下修改:
加上System.out.println("pulling test");这句话
public class Test { public static void main(String[] args) { System.out.println("git1"); System.out.println("git2"); System.out.println("git3"); System.out.println("master test"); System.out.println("hot test"); System.out.println("push test"); System.out.println("pull test"); System.out.println("hello"); System.out.println("pulling test"); } }
此时当我们远程代码库中的代码进行更新后,需要将远程库中的代码更新到我们本地库当中来,那么就需要使用我们的pull(拉取)来实现
点击pull之后,此时我们本地库中的代码更新成功,如下图所示: