Idea中的Git操作
前言
Github:https://github.com/HealerJean
准备
准备项目hlj-git-practice
创建两个文件夹me,other分表讲这个项目复制到这两个文件夹下
第一个me文件夹
1、local Changes 本地文件的修改
如果不更新代码,则看到的一直是本地的)
1.1、本地新创建的,Git仓库中没有
1.2、Gt仓库中存在,本地做了修改
左面是是Git中的
右面是自己当前的
2、log commit的日志
**左面是上次commit的文件 **
右面是当次commit的文件
2.1、新创建一个文件,并且commit
public class Git {
public static void main(String[] args) {
System.out.println("init - 未冲突");
}
}
2.2、修改这个文件,并且commit
public class Git {
public static void main(String[] args) {
System.out.println("init - 未冲突");
/**
* 率先提交
*/
System.out.println("率先提交");
}
}
左面是上次提交的(不论是谁提交的)
右面是这次提交的
2.3、修改这个文件,再次commit
public class Git {
public static void main(String[] args) {
System.out.println("init - 未冲突");
/**
* 率先提交
*/
System.out.println("率先提交");
/**
* 率先commit提交2
*/
System.out.println("率先commit提交2");
}
}
左面是上次提交的(不论是谁提交的)
右面是这次提交的
2.4、所有的log日志
3、commit
3.1、可以观察到线上版本和本地修改的版本内容 (这里只显示一个,实际上commit的3次在2.2中已经出现了)
4、push
4.1、下面可以看到多个commit(如果本地commit多次的话,但是我们的push只能一次性全部提交了,而不能根据commit的版本进行提交)
other文件夹
1、目前的状态
2、开始修改
public class Git {
public static void main(String[] args) {
System.out.println("init - 未冲突");
/**
* other 第一次commit
*/
System.out.println(" other 第一次commit");
}
}
3、commit
4、push
这个时候push,肯定冲突,但是不要紧,冲突就冲突吧,主要是为了获取的冲突后的解决方法,一直点,最后点击merge,然后就会先拉到本地,而没有push
4.1、如果我们在弹窗不解决的话冲突的文件,而是关闭的话,就会在下面让我解决。
上面是我的,下面是别人的
public class Git {
public static void main(String[] args) {
System.out.println("init - 未冲突");
/**
<<<<<<< HEAD
* other 第一次commit
*/
System.out.println(" other 第一次commit");
=======
* 率先提交
*/
System.out.println("率先提交");
/**
* 率先commit提交2
*/
System.out.println("率先commit提交2");
>>>>>>> origin/master
}
}
5、log
**log中根据日期进行重新排列了,这个时候观察和上面介绍的一样,还是比较的上次提交和当次提交的对比,这样我们就可以看到别人之前提交的东西 以及他本地做的修改 **,
6、Local Changes
可以看到本地做的修改,git原有仓库的内容,以及被人提交的版本 ,这个呢,只能看不能修改,修改的话,到自己本地去吧。
7、冲突解决
7.1、在Local Change 中点击Resolve 进行冲突的解决
7.2、。可以拖动以及删除,最后点击apply
中间是最终的结果,
左面是我的版本,
右面是冲突的别人的版本
7.3、,这个时候不会帮我们自动提交commit,而是相当于作为本地进行修改了,现在我们commit,下面我们还可以看到 6中出现的3个版本
8、这时观看 log中 冲突解决的文件
中间是当前结果,
左面是我的版本,
右面是冲突的别人的版本
me
1、再次编辑 文件进行创建冲突
1.1、具体操作
public static void main(String[] args) {
System.out.println("init - 未冲突");
/**
* 率先提交
*/
System.out.println("率先提交");
/**
* 率先commit提交2
*/
System.out.println("率先commit提交2");
/**
* 第二次制作冲突
*/
System.out.println("第二次制作冲突");
}
1.2、直接commit,再pull ,自动就会让我们解决冲突,按照上面的解决冲突的流程进行解决,那么它会为我们自动提交备注 如下
1.3、不 commit,直接pull,也是自动让我们解决冲突,解决完成 之后,这个时候不会帮我自动提交,而是还是在Local Change中进行展示,相当于idea为我们先拉取了代码,然后,我才做的修改,所以,即使查看也是 ,左面的显示 已经提交的版本(别人的),右面为我当前解决完冲突的版本