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
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP