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+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告