博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git工作区、暂存区、版本库之间的关系以及diff reset checkout相关的命令解析
阅读量:5334 次
发布时间:2019-06-15

本文共 848 字,大约阅读时间需要 2 分钟。

git的3大区 : 工作区 暂存区 版本区 分别代表3个不同的目录树

暂存区跟版本区被包含在版本库中(.git目录)如下图:

工作区 add 到暂存区 commit 到版本区。

1.git diff 

  git diff  默认情况是 工作区跟暂存区的比较

  git diff --cached  暂存区跟版本区的比较

  git diff  HEAD    工作区跟版本区的比较

2.git reset 改变的是具体分支的指向(commit)  HEAD又指向某个分支或commit

  第一种用法使用路径(paths)

  git reset commitId paths   不会重置版本区  ,不会改变工作区,而是用指定提交状态(commit)下的文件覆盖暂存区的文件。

    git reset HEAD paths  相当于取消之前执行的git add paths命令时改变的暂存区。

  第二种用法不使用路径(paths)则会重置版本区,根据不同的选项,可以对暂存区或工作区重置

    git reset --hard commit  3个区都重置

    git reset --soft commit    只更改版本区

    git reset --mixed(默认的) commit  重置版本区和暂存区

  栗子:

    git reset   将之前add命令更新到暂存区的内容撤出暂存区。

 

 3.git checkout 改变的是HEAD的指向 会重置工作区。

    git checkout 默认是从暂存区检出。

    包含 paths 不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。

    不包含paths会改变HEAD头指针。

  栗子:

    git checkout -- . 或 git checkout .   会取消所有本地的修改(相对于暂存区)。

 

转载于:https://www.cnblogs.com/zczhang/p/6704886.html

你可能感兴趣的文章
UVa 10970 - Big Chocolate
查看>>
js输出
查看>>
H5多文本换行
查看>>
HAL层三类函数及其作用
查看>>
Odoo 去掉 恼人的 "上午"和"下午"
查看>>
web@h,c小总结
查看>>
java编程思想笔记(一)——面向对象导论
查看>>
Data Structure 基本概念
查看>>
Ubuntu改坏sudoers后无法使用sudo的解决办法
查看>>
NEYC 2017 游记
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>