一、Compare with Local
情况2:修改了一个文件,暂存区不为空
情况3:新建文件并加入暂存区,同时修改一个已存在的文件
- 将TestStream2加入暂存区,并修改TestStream也将其加入暂存区,显示出差异
- 选中TestStream(这是修改的文件),点击get,获取TestStream单个文件的本地版本库的版本,会覆盖工作区以及暂存区,下图123
- 如果选中TestStream2(新建的且加入暂存区的文件),点击get,工作区及暂存区都会消失,因为版本库中没有此文件,下图456
- 注意:get会直接拉取对应比较的版本文件,不会产生merge,直接覆盖!!!
二、Compare with Branch
- 比较当前分支的index暂存区+当前版本库 和其他版本库(本地版本库的其它分支,远程版本库的任意分支)最新版本的差异
情况1:单个文件比较
? 此处修改了TestStream,暂存区加入TestStream2,比较TestStream
情况2:比较多个文件
? 此处修改了TestStream,暂存区增加TestStream2
三、Compare with Current
- 比较选中的分支(本地版本库中当前分支之外的其他分支,远程版本库的任意分支)与当前分支版本库的差异(版本号的差异,哪怕文件内容一致)
此处修改了TestStream,暂存区增加TestStream2,并没有对比较产生影响
四、Show Diff With Working Tree
- 比较选中分支(本地版本库的任意分支,远程版本库的任意分支)的版本库的最新版本与当前分支暂存区+版本库的差异
相当于Compare with local,不过它只是最新版本的比较
五、Show diff
- 单个文件的比较,当前分支选中文件的暂存区和当前分支版本库的最新版的比较
六、Compare with Revision
- 比较是当前分支暂存区和当前分支版本库不同版本的差异(单个文件或多个文件)
七、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
八、Reset HEAD
此处修改TestStream文件并加入暂存区,将新增文件TestStream2加入暂存区
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^:倒数第三个版本
以此类推。。。。
也可以直接输入版本号,推荐!
九、Reset Current Branch to Here
相当于Reset HEAD的简化版和拓展版,在Git log中直接定位操作,可以回退到本地任意分支的任意版本,远程仓库的任意分支的任意版本
相当于命令(此处已mixed为例):
git reset --mixed 42912bc1ef73083c9a5890f42b2ae471b1b60c15
此处修改TestStream文件并加入暂存区,将新增文件TestStream2加入暂存区
此处Reset Type除了soft、mixed、hard还多了一个keep
keep对比hard,会产生merge,但是本地更改会保留(工作区和暂存区),新建的且加入暂存区的文件扔在暂存区,修改的文件也在暂存区且是merge后的结果,相当于soft+mixed的结合体
十、Undo commit
撤消当前分支中的最后一次提交
对于修改的文件,本地修改还在,且在暂存区中
对于新增的文件,退回到暂存区中
十一、Compare with Versions
比较同一分支中不同版本的差异
十二、Revert Commit
回退所选择的版本的提交,同时会有记录产生
修改的文件暂存区有变动无法revert,Stash或Commit后即可
此处选择版本【8】,成功后就回到了【7】版本
十二、Drop Commit
直接删除此版本,回退到上一个版本,相当于Reset hard,工作区暂存区都没了
十三、Stash Changes
当本地代码有改动,拉取代码,切换分支会失败,此时可以Stash Changes,然后拉取代码或切换分支,最后UnStash Changes,对于差异还会产生merge
十四、Cherry-Pick
将选中分支的某一个版本merge到当前分支
十五、Interactively Rebase from Here
十七、Shelve Changes
作用同Stash Changes
区别在于
- stash changes… 是 git 原生的
- shelve changes… 是 idea 独有的
十八、patch
第一个补丁,可以从本地change中也可以从提交版本中,补丁存于本地或直接用剪切板
应用补丁即可
|