前言

Github:https://github.com/HealerJean

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

一、提交

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

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、观察版本区别

可以观察到线上版本和本地修改的版本内容 (这里只显示一个,实际上 commit3 次在 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