前言

Github:https://github.com/HealerJean

博客:http://blog.healerjean.com

一、提交

准备项目hlj-git-practice 创建两个文件夹 me,other 分表讲这个项目复制到这两个文件夹下

1、第一个 me文件夹

1)local Changes 本地文件的修改

如果不更新代码,则看到的一直是本地的)

1563506003112

a、本地新创建的,Git 仓库中没有

1563506832186

b、Git仓库中存在,本地做了修改

左面是是 Git 中的

右面是自己当前的

1563506035163

2)log commit 的日志

**左面是上次 commit的文件 **

右面是当次 commit 的文件

a、新创建一个文件,并且 commit

public class Git {

    public static void main(String[] args) {

        System.out.println("init - 未冲突");
    }
}

1563507181587

b、修改这个文件,并且 commit

public class Git {

    public static void main(String[] args) {

        System.out.println("init - 未冲突");

        /**
         * 率先提交
         */
        System.out.println("率先提交");
    }

}

左面是上次提交的(不论是谁提交的)

右面是这次提交的

1563507194015

c、修改这个文件,再次 commit

public class Git {

    public static void main(String[] args) {

        System.out.println("init - 未冲突");

        /**
         * 率先提交
         */
        System.out.println("率先提交");

        /**
         * 率先commit提交2
         */
        System.out.println("率先commit提交2");
    }

}


左面是上次提交的(不论是谁提交的)

右面是这次提交的

1563507211056

d、所有的 log 日志

1563506971908

3)commit

1563505954808

a、观察版本区别

可以观察到线上版本和本地修改的版本内容 (这里只显示一个,实际上 commit 的 3 次在 2.2 中已经出现了)

1563506104398

4)push

1563507413814

4.1、提交

下面可以看到多个 commit(如果本地 commit 多次的话,但是我们的 push 只能一次性全部提交了,而不能根据 commit 的版本进行提交)

1563507433748

2、other文件夹

1563507990144

1563508015423

1)开始修改

public class Git {

    public static void main(String[] args) {

        System.out.println("init - 未冲突");

        /**
         *  other 第一次commit
         */
        System.out.println(" other 第一次commit");
    }

}

2)commit

1563508216365

1563508225697

3)push

这个时候 push,肯定冲突,但是不要紧,冲突就冲突吧,主要是为了获取的冲突后的解决方法,一直点,最后点击 merge,然后就会先拉到本地,而没有 push

a、本地冲突解决

如果我们在弹窗不解决的话冲突的文件,而是关闭的话,就会在下面让我解决。

1563508915880

上面是我的,下面是别人的

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
    }

}

4)log

**log 中根据日期进行重新排列了,这个时候观察和上面介绍的一样,还是比较的上次提交和当次提交的对比,这样我们就可以看到别人之前提交的东西 以及他本地做的修改 **,

1563508604738

5)Local Changes

可以看到本地做的修改,git 原有仓库的内容,以及被人提交的版本 ,这个呢,只能看不能修改,修改的话,到自己本地去吧。

1563508814184

6、冲突解决

在 Local Change 中点击 Resolve 进行冲突的解决

1563514892835

a、可以拖动以及删除,最后点击 apply

中间是最终的结果,

左面是我的版本,

右面是冲突的别人的版本

1563515110721

这时观看 log 中 冲突解决的文件

1563519234280

中间是当前结果,

左面是我的版本,

右面是冲突的别人的版本

1563519246254

3、me

1)再次编辑 文件进行创建冲突

 public static void main(String[] args) {

        System.out.println("init - 未冲突");

        /**
         * 率先提交
         */
        System.out.println("率先提交");

        /**
         * 率先commit提交2
         */
        System.out.println("率先commit提交2");

        /**
         * 第二次制作冲突
         */
        System.out.println("第二次制作冲突");
    }

a、冲突查看

直接 commit,再 pull ,自动就会让我们解决冲突,按照上面的解决冲突的流程进行解决,那么它会为我们自动提交备注 如下

1563519899570

不 commit,直接 pull,也是自动让我们解决冲突,解决完成 之后,这个时候不会帮我自动提交,而是还是在 Local Change 中进行展示,相当于 idea 为我们先拉取了代码,然后,我才做的修改,所以,即使查看也是 ,左面的显示 已经提交的版本(别人的),右面为我当前解决完冲突的版本

1563519905499

二、暂存

1、暂存

image-20250120143227584

ContactAuthor