## 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 命令可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。
- 说明
- git配置
- git与github的关系
- 基础概念
- git命令
- git init
- git status
- git diff
- git log
- git reflog
- git add
- git commit
- git reset
- git checkout
- git rm
- git stash
- git remote
- git push
- git clone
- git branch
- git fetch
- git merge
- git rebase
- git pull
- git tag
- 建立版本库
- 分支合并
- 远程库别名
- Pull requests
- 扩展知识
- 功能文件
- 差异看法
- 注意细节
- github移动端
- git工作系统理解
- 仓库嵌套问题
- 仓库的使用问题
- 常用命令
- 学习资料
- 学习总结
- 示例文件
- README.md
- CONTRIBUTING.md
- .gitignore
- coding
- 大小写问题
- 如何贡献
- 使用账号密码clone
- git目录分析
- HEAD
- 代码部署问题
- 开发流程
- 指定公钥文件