成为git砖家(4): git status 命令简介

server/2024/10/18 8:20:12/

1. untracked 和 tracked 状态

Remember that each file in your working directory can be in one of two states: tracked or untracked. Tracked files are files that were in the last snapshot, as well as any newly staged files; they can be unmodified, modified, or staged. In short, tracked files are files that Git knows about.

对于一个本地的 git 仓库, 里面的文件无非是两种状态:tracked 和 untracked。 tracked 意思是被跟踪中, 是说在上一次 snapshot(快照)中已经出现了,当然它现在也可以被 stage。

对于 snapshot 的概念, pro git 在目前的章节还没有明确给出解释, gpt 给出的解释是:

当你进行一次提交时, git 会生成一个新的 commit 对象,记录当前项目的完整状态(快照)。每个提交都会保存一个新的项目状态, 而不是只保存变更。

换言之,有几个 commit 就可以认为有几个快照,下图有5次commit,有5个快照:
在这里插入图片描述

2. tracked 状态的细分

对于已经处于 tracked 状态的文件, 又可以细分为:

  • unmodifled: checkout 出来后,文件没有被修改过
  • modifed:checkout 出来后,修改了文件、但是没有执行 git add
  • staged: checkout 出来后、修改了文件、并且执行了 git add
    在这里插入图片描述

3. 检查文件当前状态

git status
# 或
git status -s

使用 git status 命令查询文件状态。 默认是按 long 格式输出,也就是给出比较容易让人读懂的提示。

也可以使用 git status -s 命令, 意思是以简短的形式来表达文件的状态。
在这里插入图片描述

git_status_s__28">4. git status -s 解读

git help status --web 给出了完整文档,里面写到:
在这里插入图片描述
也就是说, 每个文件的状态的short格式,通常由 XY PATH 来表述, PATH 是文件路径,XY 则根据不同情况有不同解释:

  • 当出现merge并且merge是成功的,或者merge之外的情况下,X表示index的状态,Y表示working tree的状态
  • 当出现merge冲突并且尚未解决,X和Y分别表示merge的每个head相对于公共祖先节点的变更
  • 当文件是 untracked 状态时,X和Y总是相同的,因为它们没有被记录在 index 中,因此只显示 ??.

对于 tracking 状态的文件,使用如下字母来表示X和Y具体取值:

  • ‘’ unmodifled
  • M modified
  • T 文件类型变了
  • A 添加的
  • D 删除了的
  • R 重命名了的
  • C 拷贝了的
  • U 更新了但是没有被merge
    在这里插入图片描述

gitk__46">5. gitk 中的文件状态

gitk 界面虽然不如 fork 那样好看,但是,git status 显示出的文件状态的变化,在 gitk 里面都是能看到的. 换言之, git status + git diff + git diff --cached 三个命令组合的得到的结果, 在 gitk 中用鼠标点选一下就能查看。

已经添加到索引但未提交的修改,相当于 git diff --cached:
在这里插入图片描述
未添加到索引且未提交的修改:相当于 git diff 的结果:
在这里插入图片描述
这两种情况下, gitk 中的 sha1 都提示为 00000…00 (全0)。


http://www.ppmy.cn/server/93303.html

相关文章

C# 写入SQLServer数据库报错SqlException: 不能将值 NULL 插入列 ‘ID‘

private int id; [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//id自增 public int ID { get > id; set > id value; } 将ID属性下的标识规范由否改成是

学习大数据DAY24 Shell脚本的书写

目录 shell 的变量 系统变量 特殊变量 运算符 if 选择结构 ---then 独立一行 case 语句 等值判断 上机练习 10 附加题 for 循环 while 循环 乘法表(双层嵌套) 上机练习 11 把附加题代码修改为循环形式 shell 的变量 系统变量 $HOME : 当前登录用户的 " 家…

uniapp+vue2 实现Android设备禁止截屏和录屏

开发背景:项目开发需要实现安卓和ios设备禁止用户截屏录屏,目前只找到一个安卓禁用截屏录屏功能的方法,具体实现效果只在个人手机上试用过(华为nova9) 项目架构:uniappvue2版本 代码: // #ifde…

QQ微信头像制图工具箱小程序纯前端源码

QQ微信头像制图工具箱小程序纯前端源码,主要功能有文字九格、头像挂件生成、爆趣九宫格、形状九宫格、创意长图、情侣头像、猫狗交流器。 这个QQ微信小程序源码是纯前端的,基本上拿去就可以用,不过好像调用了很多API,由于最近时间…

Java高级Day18-集合

62.集合 之前保存多个数据元素使用数组,但数组有以下缺点: 长度开始必须指定,指定后不可修改 保存的必须为同一类型的元素 使用数组进行增加/删除元素的代码比较麻烦 集合 可以动态的保存任意多个对象 提供了一系列方便操作对象的方法 …

废品上门回收小程序预约系统续

废品上门回收小程序预约系统凭借其独特优势,引领了环保回收的新风尚。该系统不仅极大地方便了用户,通过一键预约即可享受上门回收服务,省去了自行搬运的麻烦,还提高了回收效率,智能匹配回收员,快速响应需求…

微软:警惕利用VMware ESXi进行身份验证绕过攻击

微软于7月29日发布警告,称勒索软件团伙正在积极利用 VMware ESXi 身份验证绕过漏洞进行攻击。 该漏洞被追踪为 CVE-2024-37085,由微软安全研究人员 Edan Zwick、Danielle Kuznets Nohi 和 Meitar Pinto 发现,并在 6 月 25 日发布的 ESXi 8.0 …

react.16+

1、函数式组件 在vite脚手架中执行&#xff1a; app.jsx: import { useState } from react import reactLogo from ./assets/react.svg import viteLogo from /vite.svg import ./App.cssfunction App() {console.log(this)return <h2>我是函数式组件</h2> }exp…