## 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
- 代碼部署問題
- 開發流程
- 指定公鑰文件