合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## git status // 查看当前工作的状态信息 git status 是查看当前工作状态的命令,这个命令的重要性可要认识到,这关系到你当前正在进行的工作,下班前一定要确保状态信息(工作区) 是干净的。否则后果自负哦。 >[info] 这里所说的工作区是干净的,表示当前没有“未添加到暂存区的修改”,并且暂存区是干净的。也就是说一般我们所说的工作区其实是指当前工作目录和暂存区哦。尽管暂存区在.git目录下面,不属于工作目录,但如果我们想要可靠的工作,那就得考虑它。 好,言归正传,git status 能看出来当前工作的状态什么信息呢? >[danger] 那就是:暂存区和“未添加到暂存区的修改” ## 暂存区的计算规则 1. 每次git add 添加文件修改到暂存区会自动覆盖上次的暂存(也可以理解为清空前一次的对应暂存,情况4就可以用这两种方式去理解) 2. 每次git add就是计算一下暂存区 3. 每次提交到分支后,差异会持久化到当前工作的版本库分支的最新提交上(提交对象),且当前暂存区被清空。 * * * * * ## “未添加到暂存区的修改”的计算规则 **先将工作目录和对应的版本库分支进行差异对比** 1. 如果有【差异】,并且暂存区没有此文件的差异记录,那么则表示有“未添加到暂存区的修改”(1),如果暂存区已有此文件的差异记录,并且暂存差异与【差异】不相等,那么也表示有“未添加到暂存区的修改”(2),还需要再次提交修改到暂存区,否则就表示该文件没有“未添加到暂存区的修改”(3); 2. 如果没有【差异】,并且暂存区有此文件的差异记录的话,那么表示有“未添加到暂存区的修改”(4),如果暂存区没有此文件的差异记录,那么则表示此文件没有被更改过,是干净的,即没有“未添加到暂存区的修改”。(5) >[danger] 注意:情况4中暂存区内容刚好和“未添加到暂存区的修改”是相反的,它们相互抵消。 这里详细完全的讨论的所有的5种情况,其中只有3,5两种情况没有“未添加到暂存区的修改”,是干净的,即不需要使用git add。 事实上这个计算法则可以用简单的一个规则来表述: 如果满足此等式规则就说明没有“未添加到暂存区的修改”(3,5两种情况),反之则说明有“未添加到暂存区的修改”(1,2,4三种情况)。 >[info] 工作区内容 = 当前对应版本库内容 + 暂存区; (这个规则对于整个版本库或者某个文件来说都实用) **现在一切都很清楚了,“未添加到暂存区的修改”和暂存区它们里面是些什么东西呢,什么内容呢?** >[info] 其实它们是差异(diff)。但需要注意的是暂存区是手动添加才会计算的,并且会被保存到文件中,被git系统管理(.git目录下),而“未添加到暂存区的修改”这个different则没有任何保存形式,这个是动态计算的,使用git status可以查看。 除了这些,git status还有许多其它功能,可以查看当前版本库与远程版本库的状态,还有工作区的状态,总之这个命令很常用,工作的时候注意用它来看工作状态了(总之你知道它并不止是看工作区状态而已就好了)。 ## 扩展资料 1. 工作区也被称为工作现场。 2. 工作目录(包含未添加的到暂存区的修改)和暂存区为“工作现场”。 3. git stash 命令可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。