## 差異對比的各種情況
```
git diff <filename>
```

當工作區有改動(存在unstaged的文件),**暫存區為空**,diff的對比是“**工作區與最后一次commit提交的倉庫的共同文件**”
當工作區有改動(存在unstaged的文件),**暫存區不為空**,diff對比的是“**工作區與暫存區的共同文件**”
*****
```
git diff --cached 或git diff --staged
```
> cached 和staged都表示暫存區的意思 所以功能一樣
顯示**暫存區**(已add但未commit文件)和**最后一次commit**(HEAD)之間的所有不相同文件的增刪改
****
```
git diff HEAD:
```
顯示工作目錄(已track但未add文件)和暫存區(已add但未commit文件)與最后一次commit之間的的所有不相同文件的增刪改。
```
git diff HEAD~X或git diff HEAD^^^…(后面有X個^符號,X為正整數):
```
可以查看最近一次提交的版本與往過去時間線前數X個的版本之間的差異。
****
> 什么是unstaged狀態:
就是文件發生了修改,但是沒有加到暫存區。