首页 > 其他分享 >Git的命令git diff和git diff --cached的作用

Git的命令git diff和git diff --cached的作用

时间:2023-05-09 22:14:24浏览次数:29  
标签:文件 Git -- 暂存区 cached git diff

1.首先看一下diff

 举一个例子,比较文件t.txt和tc.txt这两个文件的差异性

diff也是GNU/LINUX生态系统中的一个重要的工具,众所周知的是,linux的很多很多工具都是可以协作使用的。比如Git中就借助了diff这个文件差异性工具

 2.关于git diff:比较本地文件和暂存区(staging area, index area)文件的差异

这是我的一个git仓库以及仓库的状态:没有要提交到暂存区和工作树上的内容

 

下面我修改了f1中的内容

 

输入命令git status

 

显示的是f1文件被修改,而且文件的表示变化没有提交到暂存区

输入命令git diff

 暂存区的文件是没有最后一行的,本地的文件f1新增了一行

git diff的作用就是比较本地文件和暂存区文件,如果有差异,则显示

 

 

输入命令git diff --cached

 什么都没有。因为git diff --cached的作用是比较暂存区的文件和工作树上的文件的差异。

 

输入git add f1将文件f1提交到暂存区

再次输入git diff

 发现没有什么变化,因为我刚刚把f1从本地仓库提交到暂存区,而git diff的作用就是比较本地和暂存区文件的差异

 

输入git diff --cached

 注意git diff --cached的就是显示暂存区文件和工作树文件的差异

 

使用git commit -m "This is my commit to learn diff"将暂存区的文件提交到工作树

可以预见的是输入git diff --cached之后没有任何显示

 

 

3.总结

想象一下有三个区域:本地仓库、暂存区、工作树,在这上面都有一个相同的文件f

git diff 显示本地仓库的文件和暂存区的文件的差异

git diff --cached 显示暂存区文件和工作树文件的差异

没有修改文件f之前,输入git diff 或者git diff --cached当然不会有任何显示

如果在本地对文件做了修改但是没有提交到暂存区,那么git diff 显示的就是暂存区的f和本地f的差异

使用git add f将文件f提交到暂存区之后,本地文件f和暂存区文件f就没有差异了,但是这是暂存区文件f就和工作树文件f就有差异了

使用git commit -m "Input commit message"将暂存区文件f提交到工作树之后,三个区域的文件f就是相同的文件,此时使用命令git diff 和git diff --cached将不会有任何的显示

4.关于Linux

GNU/LINUX操作系统是一个Unix-like操作系统,它继承了unix系统的设计理念,也就是操作系统中的所有软件都可以而且有必要协作完成一个任务,Linux中生态体系中的很多工具如

GCC, Git, Make, GDB, Vim, diff等等都是程序员必须掌握的工具。

 

标签:文件,Git,--,暂存区,cached,git,diff
From: https://www.cnblogs.com/NoteBlogSgj/p/17386439.html

相关文章

  • git配置
    配置邮箱、用户名gitconfig--globaluser.email"[email protected]"gitconfig--globaluser.name"xxx" 生成秘钥ssh-keygen-trsa-C "[email protected]" 查询配置gitconfig--global-l TRANSLATEwithxEnglishArabicHebrewPoli......
  • Git diff 忽略某些文件
    自定义gitdiffdriver.在项目的根目录下运行gitconfigdiff.nodiff.command/usr/bin/true在/usr/bin/目录下创建文件名为true的文件,并修改这个文件的权限touch/usr/bin/truechmod+x/usr/bin/true设置gitattribute在项目根目录添加.gitattributes文件,内容如下#其......
  • 使用Git上传本地项目到GitHub/Coding/码云
    Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。本文以利用Git上传本地项目到GitHub为例,为那些刚刚接触Git的新手提供使用Git上传本地项目到GitHub/Coding/码云的方法。注册GitHub账号并安装Git首先注册GitHub账号,并添加新项目。下载......
  • git 基本命令记录
    gitinit //初始化本地仓库gitadd*** //添加指定***文件到暂存区gitadd. //添加该目录下所有文件到暂存区gitcommit-m'**注释**' //将文件提交仓库(注释为自己可以添加的信息gitstatus //查看暂存区的状态(例如是......
  • Git 配置多个SSH-Key
    ​Git全局配置查看全局配置gitconfig--global--listgitconfig--globaluser.name删除全局配置gitconfig--global--unsetuser.name1.生成sshpublickeyandprivatekeyopengitbase,执行以下command,其中是keyname自己填;codeup_id_rsa也自己填,是key文件名......
  • git仓库过渡,同时向两个仓库推送代码
    公司部门被大佬收购,产品项目迁移新公司仓库,过渡期间产品上线流程继续使用原公司的,新公司部署新系统后通过域名重定向逐渐将用户引流到新系统上完成切换,最后关闭原公司系统及上线流程。过渡期间新功能代码需要保证两边git仓库里一致,即执行gitpush命令时同时往两个仓库里推送代码......
  • CentOS安装Git记录
    一.二进制方式 yum-yinstallgit 简单粗暴,一句话搞定,弊端就是版本太低,看看版本:git--version一般是1.8.x版本,据最新的2.40.x版本还是差挺多的 二.源代码方式 CentOS7环境建议选择v2.35以下版本,否则在编译的时候会出现错误。yuminstall-ycurl-develexp......
  • git
    简易的命令行入门教程:Git全局设置:gitconfig--globaluser.name"文采杰出"gitconfig--globaluser.email"[email protected]"创建git仓库:mkdiryygh-parentcdyygh-parentgitinittouchREADME.mdgitaddREADME.mdgitcommit-m"firstcommit"......
  • Drone CI For Github
    记录Drone标准.drone.yml文件version:"3.7"services:nginx:image:nginx:alpinecontainer_name:drone_nginxports:-"80:80"restart:alwaysnetworks:-dronenetmysql:image:mysql:5.7restart:......
  • 【自己更换模型】如何用 Serverless 一键部署 Stable Diffusion?
    作者:寒斜上一篇讲了如何使用ServerlessDevs和函数计算快速体验部署StableDiffusion,本篇继续聊聊如何解决动态模型加载的问题,从玩起来到用起来。思路其实很简单,我们只需要将镜像里面的动态路径映射到NAS[1]文件存储里面即可,利用NAS独立存储文件模型,扩展,语言包等,并且......