文章目录

  • 1.介绍
  • 2.图形操作
  • 2.1 Commit Directroy
  • 2.2 Add
  • 2.3 .git/info/exclude
  • 2.4 Annotate
  • 2.5 Show Current Revision
  • 2.6 Compare with the Same Repository Version
  • 2.7 Compare with...
  • 2.8 Compare with Branch...
  • 2.9 Show Histroy
  • 2.10 Rollback
  • 2.10.1 本地代码区回滚
  • 2.10.2 本地仓库回滚
  • 2.10.3 远程仓库回滚
  • 2.11 Repository
  • 2.11.1 Branches...
  • 2.11.2 Tag...
  • 2.11.3 Merge Changes...
  • 2.11.4 Stash Changes...
  • 2.11.5 UnStash Changes...
  • 2.11.6 Reset HEAD...
  • 2.11.7 Remotes...
  • 2.11.8 Clone...
  • 2.11.9 Fetch
  • 2.11.10 Pull...
  • 2.11.11 Push...
  • 3.命令操作
  • 参考


1.介绍

本次主要是通过IDEA来操作相关GIT操作做一个记录总结

IDEA2019.3.5 GIT220

初始化项目目录为:

...\Git\testJavaGit>tree
D:.
├─.idea
│  ├─inspectionProfiles
│  └─sonarlint
│      └─issuestore
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─zy
    │  │          ├─entity
    │  │          └─service
    │  └─resources
    └─test
        └─java

初始化一个类:

@Data
@Builder
public class Person {
    private Integer pId;
    private String pName;
}

初始化一个测试类:

public class TestDemo {

    @Test
    public void test1(){

        Person p = Person.builder().pName("kkk").pId(1).build();
        System.out.println("p = " + p);

    }

}

2.图形操作

idea2021 集成 gitlab_java

2.1 Commit Directroy

这个其实就是表示提交文件的意思,比如修改了原来版本控制的一些文件内容,那么点击这个就会转到提交页面

idea2021 集成 gitlab_回滚_02

提交框还有许多参数没讲,后面再讲

2.2 Add

idea2021 集成 gitlab_java_03

如上图,若没有选择add,那么创建的文件默认就不会加入到版本控制中,这个时候就是红色的,没有加入到版本控制中的文件,是不允许提交到仓库中去的

idea2021 集成 gitlab_idea2021 集成 gitlab_04

如上图,当使用add后,颜色变成黄绿色,表示已经受本地版本控制了,后续就可以提交到仓库了

2.3 .git/info/exclude

idea2021 集成 gitlab_idea2021 集成 gitlab_05


idea2021 集成 gitlab_idea2021 集成 gitlab_06

idea2021 集成 gitlab_回滚_07


gitignore和exclude区别

.gitignore:需要提交的Git仓库,多用于忽略公共性的文件,例:java产生的.classpath | .project | logs/ …;
exclude:不需要提交Git仓库,用户个人配置文件或某些测试类;

2.4 Annotate

多人合作的时候,有些代码可能被人修改过了,但想要查找某些代码片段是哪些人改的,我们就可以用这个功能,打开annotate查看代码修改者

idea2021 集成 gitlab_回滚_08

2.5 Show Current Revision

查看当前版本信息

idea2021 集成 gitlab_java_09

2.6 Compare with the Same Repository Version

idea2021 集成 gitlab_远程仓库_10

如上,这个命令其实就是比较本地代码和本地代码仓库版本里的代码

2.7 Compare with…

idea2021 集成 gitlab_idea2021 集成 gitlab_11


idea2021 集成 gitlab_java_12

如上,这个功能可以把本地的代码和之前的版本代码进行比较查看

idea2021 集成 gitlab_java_13

2.8 Compare with Branch…

这个也是如2.7一样,只不过是拿本地代码和分支其他代码的相同类里的代码片段进行比较

2.9 Show Histroy

idea2021 集成 gitlab_git_14

可以查看文件提交的相关历史记录

2.10 Rollback

2.10.1 本地代码区回滚

idea2021 集成 gitlab_远程仓库_15


idea2021 集成 gitlab_idea2021 集成 gitlab_16


idea2021 集成 gitlab_远程仓库_17

执行回滚后,本地的所有修改代码的地方都会复原到最近一次版本的代码

2.10.2 本地仓库回滚

idea2021 集成 gitlab_回滚_18


idea2021 集成 gitlab_远程仓库_19

现在我们要回滚到16点56分那个版本,那么可以如下操作:

idea2021 集成 gitlab_git_20


idea2021 集成 gitlab_idea2021 集成 gitlab_21


idea2021 集成 gitlab_git_22

HEAD^ 是还原到上一个版本,HEAD^^ 是还原到上上一个版本。
Reset Type 有三种:

mixed 默认方式,只保留源码,回退commit和index信息
soft 回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit
hard 彻底回退,本地源码也会变成上一个版本内容

2.10.3 远程仓库回滚

idea2021 集成 gitlab_git_23

idea2021 集成 gitlab_java_24


idea2021 集成 gitlab_远程仓库_25


idea2021 集成 gitlab_回滚_26

从上面可知,其实revert,选中前面某个版本回滚,只是把选中的那个版本的代码进行了回滚,但是其他版本的代码还是一直存在的,不会全部回滚到我们选择的这个版本,即其他版本代码不受影响的,该命令就是为撤销某次提交而存在的;

当想撤销中间某次提交时,强烈建议使用revert命令,而不是reset。
git reset –hard commit_id 虽然可以回退远程库,但是其要求pull最新代码的每个人的本地分支都要进行版本回退。这样就增加工作量了!

注意:
若我们revert后,并没有点commit按钮,那么下次选中版本再提交的时候,会报All changes from 14132e57 have already been reverted类似错误,不让我们在执行,这是因为已经idea已经为我们创建了修改记录,如下图

idea2021 集成 gitlab_idea2021 集成 gitlab_27


若不想进行回滚,那么可以取消revert,然后再终止revert就可以恢复恢复成刚开始状态了

idea2021 集成 gitlab_git_28


idea2021 集成 gitlab_回滚_29

2.11 Repository

idea2021 集成 gitlab_远程仓库_30

2.11.1 Branches…

idea2021 集成 gitlab_远程仓库_31

这里主要可以查看分支,切换分支,分支创建等操作

2.11.2 Tag…

tag就像里程碑标志的一个点,branch是一个新的征程的一条线;tag 是静态的,而branch要往前走;稳定版本备份用tag,新功能开发多人用branch,开发完之后再merge到master上。tag是一个只读的branch。

Idea 中如何创建 tag

idea中git标签(tag)的创建与使用

2.11.3 Merge Changes…

idea2021 集成 gitlab_回滚_32


主分支:

idea2021 集成 gitlab_远程仓库_33


dev分支:

idea2021 集成 gitlab_回滚_34

下面我们需要把dev分支的代码合并到主分支中

idea2021 集成 gitlab_回滚_35


idea2021 集成 gitlab_idea2021 集成 gitlab_36

正如上图所示,主分支选择合并本地的dev,还是远程的dev分支

idea2021 集成 gitlab_远程仓库_37


本地合并完后,再push,这样主分支才真正合并了

idea2021 集成 gitlab_idea2021 集成 gitlab_38


idea2021 集成 gitlab_idea2021 集成 gitlab_39

idea2021 集成 gitlab_回滚_40


idea2021 集成 gitlab_git_41

正如上面所示,当合作开发项目时,有些人做好提交到master上合并了,而你自己在这一块也正好有些功能做了修改,即使你更新了最新的master,但合并的时候,就会报冲突了

idea2021 集成 gitlab_git_42


idea2021 集成 gitlab_idea2021 集成 gitlab_43


idea2021 集成 gitlab_git_44

idea2021 集成 gitlab_远程仓库_45

2.11.4 Stash Changes…

后续再说

2.11.5 UnStash Changes…

后续再说

2.11.6 Reset HEAD…

2.11.7 Remotes…

主要是看远程仓库的url

idea2021 集成 gitlab_回滚_46

2.11.8 Clone…

拷贝远程代码到本地

idea2021 集成 gitlab_回滚_47

2.11.9 Fetch

如果你同事新建分支,这个时候自己idea看不到你要更新的分支,你需要git fetch 一下就能够看到了。

idea2021 集成 gitlab_git_48


idea2021 集成 gitlab_idea2021 集成 gitlab_49


idea2021 集成 gitlab_回滚_50

2.11.10 Pull…

更新本地仓库代码

2.11.11 Push…

更新远程仓库代码

3.命令操作

参考

IDEA 本地/远程仓库版本回滚

IDEA远程仓库版本回滚

Java开发工具Idea必备技能之代码回滚

Git 少用 Pull 多用 Fetch 和 Merge

IDEA操作Git在工作中如何使用