IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> IDEA中Git相关操作最详细解析 -> 正文阅读

[开发工具]IDEA中Git相关操作最详细解析

一、Compare with Local

  • 选择当前分支:比较的是当前分支 index暂存区(绿色新建,蓝色修改)当前版本库的代码

  • 选择其他分支:比较的是当前分支 index暂存区(绿色新建,蓝色修改)+ 版本库其它任意分支任意版本,远程版本库任意分支任意版本的代码

  • 情况1:暂存区为空

    • 此处新建了两个TestStream2,TestStream3,并未加入暂存区(idea中为红色)

      git add --ignore-errors -A -- src/main/java/com/cx/domain/TestStream3.java src/main/java/com/cx/domain/TestStream2.java
      
      从暂存区删除:
      git rm --cached -f -- src/main/java/com/cx/domain/TestStream3.java src/main/java/com/cx/domain/TestStream2.java
      
    • 选择当前分支的版本库比较,显示并无差异

image-20210428104954186

image-20210428105401231

情况2:修改了一个文件,暂存区不为空

  • 我修改TestStream(idea默认不会加入index暂存区,但过一会会自动加入暂存区或直接手动command+S保存,默认就会加入暂存区)

    将TestStream恢复回版本库的最新版本,(IDE中Rollback操作)
    git checkout HEAD -- src/main/java/com/cx/domain/TestStream.java
    
  • 比较还是无差异,等加入了暂存区就有了差异

image-20210428121319053

image-20210428121554076

image-20210428121732298

image-20210428121919880

情况3:新建文件并加入暂存区,同时修改一个已存在的文件

  • 将TestStream2加入暂存区,并修改TestStream也将其加入暂存区,显示出差异
  • 选中TestStream(这是修改的文件),点击get,获取TestStream单个文件的本地版本库的版本,会覆盖工作区以及暂存区,下图123
  • 如果选中TestStream2(新建的且加入暂存区的文件),点击get,工作区及暂存区都会消失,因为版本库中没有此文件,下图456
  • 注意:get会直接拉取对应比较的版本文件,不会产生merge,直接覆盖!!!

image-20210428122410221

image-20210428122504622

image-20210428122800968

image-20210429101236175

image-20210429101330971

image-20210429101520643

二、Compare with Branch

  • 比较当前分支的index暂存区+当前版本库其他版本库(本地版本库的其它分支,远程版本库的任意分支)最新版本的差异

情况1:单个文件比较

? 此处修改了TestStream,暂存区加入TestStream2,比较TestStream

image-20210503113323816

image-20210503113506647

image-20210503113654034

情况2:比较多个文件

? 此处修改了TestStream,暂存区增加TestStream2

image-20210503114011655

image-20210503114213190

三、Compare with Current

  • 比较选中的分支(本地版本库中当前分支之外的其他分支,远程版本库的任意分支)与当前分支版本库的差异(版本号的差异,哪怕文件内容一致)

此处修改了TestStream,暂存区增加TestStream2,并没有对比较产生影响

image-20210503120315520

image-20210503120411370

四、Show Diff With Working Tree

  • 比较选中分支(本地版本库的任意分支,远程版本库的任意分支)的版本库的最新版本当前分支暂存区+版本库的差异

相当于Compare with local,不过它只是最新版本的比较

image-20210503121217885

image-20210503121255511

五、Show diff

  • 单个文件的比较,当前分支选中文件的暂存区当前分支版本库的最新版的比较

image-20210503122556444

image-20210503122631582

六、Compare with Revision

  • 比较是当前分支暂存区当前分支版本库不同版本的差异(单个文件或多个文件)

image-20210503123247687

image-20210503123853086

image-20210503123946228

七、Rollback

此处修改TestStream文件并加入暂存区,将新增文件TestStream2加入暂存区

rollback直接回退所有的修改,TestStream2从暂存区删除,TestStream修改回退到和版本库一致

此时相当于执行了两个命令:

git rm --cached -f -- src/main/java/com/cx/domain/TestStream2.java
git checkout HEAD -- src/main/java/com/cx/domain/TestStream.java

image-20210503125500038

image-20210503125546222

image-20210503125651776

八、Reset HEAD

此处修改TestStream文件并加入暂存区,将新增文件TestStream2加入暂存区

image-20210503130514582

Reset Type:默认mixed

soft:保留工作区,并把重置 HEAD 所带来的新的差异放进暂存区,加入暂存区的还在暂存区

git reset --soft HEAD --

mixed:保留工作区,清空暂存区,已加入暂存区的新建文件删除放回工作区,修改的文件也放回工作区,修改差异依然存在(idea中默认保存,修改的还 会默认加入暂存区)

git reset --mixed HEAD --

hard:清空工作区和暂存区,退回到和版本库一模一样(新增的文件若没有加入到暂存区,就一直还在工作区中,若新增并且加入了暂存区,hard就会删除 掉,修改的文件则只是会回退到和版本库一致)

git reset --hard HEAD --

可参考这个文章

To Commit:默认HEAD(版本库中最新的版本)

HEAD^:倒数第二个版本

HEAD^:倒数第三个版本

以此类推。。。。

也可以直接输入版本号,推荐!

image-20210503130744677

image-20210503132839510

image-20210503133626588

image-20210503133823662

image-20210503134231867

image-20210503134350062

image-20210503134555536

九、Reset Current Branch to Here

相当于Reset HEAD的简化版和拓展版,在Git log中直接定位操作,可以回退到本地任意分支的任意版本,远程仓库的任意分支的任意版本

相当于命令(此处已mixed为例):

git reset --mixed 42912bc1ef73083c9a5890f42b2ae471b1b60c15

此处修改TestStream文件并加入暂存区,将新增文件TestStream2加入暂存区

image-20210503135357924

image-20210503135604013

image-20210503135912273

此处Reset Type除了soft、mixed、hard还多了一个keep

keep对比hard,会产生merge,但是本地更改会保留(工作区和暂存区),新建的且加入暂存区的文件扔在暂存区,修改的文件也在暂存区且是merge后的结果,相当于soft+mixed的结合体

image-20210503141532132

image-20210503142040994

image-20210503142433173

image-20210503142655729

十、Undo commit

撤消当前分支中的最后一次提交

对于修改的文件,本地修改还在,且在暂存区中

对于新增的文件,退回到暂存区中

十一、Compare with Versions

比较同一分支中不同版本的差异

image-20210503151428915

十二、Revert Commit

回退所选择的版本的提交,同时会有记录产生

修改的文件暂存区有变动无法revert,Stash或Commit后即可

此处选择版本【8】,成功后就回到了【7】版本

image-20210503154958119

image-20210503155132189

image-20210503155335712

十二、Drop Commit

直接删除此版本,回退到上一个版本,相当于Reset hard,工作区暂存区都没了

十三、Stash Changes

当本地代码有改动,拉取代码,切换分支会失败,此时可以Stash Changes,然后拉取代码或切换分支,最后UnStash Changes,对于差异还会产生merge

十四、Cherry-Pick

将选中分支的某一个版本merge到当前分支

image-20210503163221343

image-20210503163358803

十五、Interactively Rebase from Here

image-20210503164743511

image-20210503165634646

image-20210503165716428

image-20210503165851477

十七、Shelve Changes

作用同Stash Changes

区别在于

  • stash changes… 是 git 原生的
  • shelve changes… 是 idea 独有的

十八、patch

第一个补丁,可以从本地change中也可以从提交版本中,补丁存于本地或直接用剪切板

应用补丁即可

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:30:40  更:2022-04-27 11:31:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:30:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码