Git 中的簡短狀態是什麼?


git status 命令返回 - 的當前狀態。

  • 工作區

  • 暫存區

此命令返回已跟蹤和未跟蹤的檔案以及對儲存庫所做的更改。但是,此命令不顯示任何提交記錄或資訊。此命令通常返回一個狀態訊息,表示以下狀態之一 -

  • 沒有提交歷史

  • 未跟蹤的檔案

  • 待提交的更改

  • 乾淨的工作樹

  • 已修改的檔案

  • 已刪除的檔案

使用 **git status** 命令的語法如下所示 -

$ git status

上面命令輸出的螢幕截圖如下。輸出表明檔案已被修改。

dell@DESKTOP-N961NR5 MINGW64 /e/tut_repo (master)
$ git status
On branch master
Changes not staged for commit:
   (use "git add <file>… " to update what will be committed)
   (use "git restore <file>… " to discard changes in working directory)
      modified: file1.txt

上面顯示的輸出是詳細且描述性的。有時我們可能不希望獲得詳細的輸出。可以向 git status 命令提供 **−−short** 或 **−s** 標誌以獲取簡短格式的輸出。

以簡短格式檢索狀態的語法如下所示 -

$ git status −−short
$ git status −s

每個路徑的簡短狀態顯示為以下之一 -

XY PATH
OR
XY ORIG_PATH −>PATH

僅當進行了一些重新命名或複製操作時,才會以第二種形式返回狀態。ORIG_PATH 表示重新命名或複製內容的實際位置。XY 是一個兩位狀態程式碼,其中 X 表示暫存區中檔案的狀態,Y 表示工作目錄中檔案的狀態。下表列出了 X 和 Y 的可能值。

指示符解釋
‘ ’未修改
M已修改
A已新增
D已刪除
R已重新命名
C已複製
U已更新但未合併

根據檔案在每個區域中的狀態,上述指示符可以有多種組合。狀態程式碼 **??** 表示未跟蹤的檔案。

讓我們透過以下示例來理解這一點。

示例 1

  • 建立兩個檔案“file1.txt”和“file2.txt”,並在這些檔案中新增一些內容。

$ echo hello >file1.txt
$ echo hello again >file2.txt
  • 使用簡短狀態格式檢視狀態 -

$ git status −s

下面螢幕截圖中的輸出(**??**)表示檔案未被跟蹤。

aparna. nair@DESKTOP-6EFOVU8 MING64 ~/myrepo (master)
$ git status -s
?? file1.txt
?? file2.txt
  • 現在讓我們將這些檔案新增到暫存區並驗證狀態。

$ git add file1.txt
$ git add file2.txt
$ git status -s

輸出 **(A)** 表示檔案已新增到暫存區。請注意,指示符 A 左對齊,因此表示暫存區的狀態。

aparna. nair@DESKTOP-6EFOVU8 MING64 ~/myrepo (master)
$ git status -s
A file1.txt
A file2.txt
  • 讓我們修改工作樹中的檔案並驗證狀態。

$ echo new content for file1>>file1.txt
$ echo new content for file2>>file2.txt
$ git status −s

輸出 **(AM)** 表示暫存區和工作樹中檔案的內容不同。這意味著檔案的內容已在工作樹中修改,但對檔案的更改尚未暫存。

aparna. nair@DESKTOP-6EFOVU8 MING64 ~/myrepo (master)
$ git status -s
AM file1.txt
AM file2.txt
  • 現在讓我們提交更改並觀察狀態。

$ git add file1.txt
$ git add file2.txt
$ git commit −m ‘changes committed’

空白輸出表示工作目錄是乾淨的。

aparna. nair@DESKTOP−6EFOVU8 MING64 ~/myrepo (master)
$ git status −s
aparna. nair@DESKTOP−6EFOVU8 MING64 ~/myrepo (master)
$

示例 2

  • 建立一個檔案“test.txt”並在其中新增一些內容。將檔案暫存並提交到儲存庫。

$ echo hello >test.txt // create a file with some content
$ git add test.txt // stage the file
$ git commit −m ‘saved to repo’ // commit to the repository
  • 使用 Linux mv 命令重新命名檔案並驗證狀態。

$ mv test.txt test.python
$ git status -s

輸出表明“test.txt”檔案已從工作樹中刪除,新檔案“test.python”未被跟蹤。

aparna.nair@DESKTOP-6EFOVUB MINGW64 ~/myrepo (master)
$ git status -s
D test. txt
?? test. python
  • 讓我們暫存這些檔案並驗證狀態。

$ git add test.txt
$ git add test.python
$ git status -s

輸出 **(R)** 表示重新命名操作。它表示檔案在暫存區中從“test.txt”重新命名為“test.python”。

aparna. nair@DESKTOP-6EHOVUB MINGW64 ~/myrepo (master)
$ git status − s
R test. txt −> test. python

更新於: 2021年2月20日

2K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.