git status
命令用於顯示工作目錄和暫存區的狀態。使用此命令能看到那些修改被暫存到了, 哪些沒有, 哪些檔案沒有被Git tracked到。git status
不顯示已經commit
到專案歷史中去的資訊。看專案歷史的資訊要使用git log
.
簡介
git status [<options>…?] [--] [<pathspec>…?]
顯示索引檔案和當前HEAD提交之間的差異,在工作樹和索引檔案之間有差異的路徑以及工作樹中沒有被Git跟蹤的路徑。 第一個是通過執行git commit
來提交的; 第二個和第三個是你可以通過在執行git commit
之前執行git add
來提交的。
git status
相對來說是一個簡單的命令,它簡單的展示狀態資訊。輸出的內容分為3個分類/組。
# On branch master
# Changes to be committed: (已經在stage區, 等待新增到HEAD中的檔案)
# (use "git reset HEAD <file>..." to unstage)
#
#modified: hello.py
#
# Changes not staged for commit: (有修改, 但是沒有被新增到stage區的檔案)
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
#modified: main.py
#
# Untracked files:(沒有tracked過的檔案, 即從沒有add過的檔案)
# (use "git add <file>..." to include in what will be committed)
#
#hello.pyc
沒有tracked
的檔案分為兩類. 一是已經被放在工作目錄下但是還沒有執行 git add
的, 另一類是一些編譯了的程式檔案(如.pyc
, .obj
, .exe
等)。當這些不想add的檔案一多起來, git status
的輸出簡直沒法看, 一大堆的狀態資訊怎麼看?
基於這個原因。 Git讓我們能在一個特殊的檔案.gitignore
中把要忽略的檔案放在其中, 每一個想忽略的檔案應該獨佔一行, *
這個符號可以作為萬用字元使用。例如在專案根目錄下的.gitignore
檔案中加入下面內容能阻止.pyc
和.tmp
檔案出現在git status
中:
*.pyc
*.tmp
以下是一些範例 -
在每次執行 git commit
之前先使用git status
檢查檔案狀態是一個很好的習慣, 這樣能防止你不小心提交了您不想提交的東西。 下面的例子展示 stage 前後的狀態, 並最後提交一個快照.
# Edit hello.py
$ git status
# hello.py is listed under "Changes not staged for commit"
$ git add hello.py
$ git status
# hello.py is listed under "Changes to be committed"
$ git commit
$ git status
# nothing to commit (working directory clean)
第一個狀態輸出顯示了這個檔案沒有被放到暫存區(staged)。git add
將影響第二個git status
的輸出, 最後一個git status
告訴我們沒有什麼能可以提交了,工作目錄已經和最近的提交相匹配了。有些命令 (如, git merge
) 要求工作目錄是clean
狀態, 這樣就不會不小心覆蓋更新了。
git status
命令可以列出當前目錄所有還沒有被git管理的檔案和被git管理且被修改但還未提交(git commit
)的檔案。下面來看看如下一個範例 -
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: 2.txt
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: 1.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 1.log
上面輸出結果中」Changes to be committed「中所列的內容是在索引中的內容,提交之後進入Git工作目錄。
上面輸出結果中「Changed but not updated」中所列的內容是在工作目錄中的內容,git add
之後將新增進入索引。
上面輸出結果中「Untracked files」中所列的內容是尚未被Git跟蹤的內容,git add
之後進入新增進入索引。
通過git status -uno
可以只列出所有已經被git管理的且被修改但沒提交的檔案。