Skip to content

Latest commit

 

History

History
103 lines (58 loc) · 2.82 KB

Git_3_checkout、stash、标签、diff.md

File metadata and controls

103 lines (58 loc) · 2.82 KB

checkout、stash、标签、diff

一、gitcheckout和git reset --的区别

git checkout -- test.txt的作用: 丢弃掉相对于暂存区中最后一次添加的文件内容所做的变更

演示:

3_1.png

第二个,注意和git reset HEAD test.txt的区别:

将之前添加到暂存区(stage)的内容从暂存区移除到工作区

演示:

3_2.png

二、git checkout游离状态

之前我们知道git branch可以切换到历史提交。而git reset HEAD commid-id可以切换到某个历史状态,然而git checkout也可以切换到某个历史状态,但是git checkout 切换到的是一个游离的状态,我们必须要提交或者stash,不然会报错。

下面开始演示,先做准备工作: 创建test.txt并修改提交几次。

3_3.png

然后开始我们的演示。

3_5.png

可以看到git报错了,所以我们必须通过add和commit保存起来,最好再创建一个分支,如下:

3_6.png

总结图:


三、stash使用

常见使用命令:

  • 保存现场
    • git stash
    • git stash list
  • 恢复现场
    • git stash apply(stash内容并不删除,需要通过git stash drop stash@{id} 手动删除)作用,保存在master之前创建的分支上做的修改(想要回到master)。
    • git stash pop(恢复的同时也将stash内容删除)
    • git stash apply stash@{id},回到某一个stash

演示:

先搭建基础环境:

3_8.png

然后我们回到test分支上进行修改,不做提交,想回到master上:

3_10.png

下面看使用stash pop恢复:

3_11.png

下面使用stash applystash drop命令:

3_12.png

四、标签

主要是git tag这个标签。

简单使用:

3_13.png

五、diff

这里先介绍一下git blame,作用: 找到上一次修改的人和详细信息

然后在介绍git diff之前,先看linux系统中内置的diff命令。

3_14.png

git diff有四种差别性比较:

  • 工作区和暂存区的差别,命令git diff
  • 工作区和某一次提交的差别;
    • 最新的提交和工作区的差别,git diff HEAD
    • 特定commit-id和工作区的差别,git diff commit-id
  • 暂存区和某一个提交的差别;
    • 最新的提交和暂存区之间的差别,git diff --cached
  • 两个提交之间的差别;

先看第一个: 工作区和暂存区的差别:

3_15.png

最近一次提交和工作区之间的差别以及最新的提交和暂存区之间的差别。

3_16.png