获取 Git 存储库的状态

已完成

要获取本地 Git 存储库的状态,您可以使用 status 命令。 本命令会向您显示哪些文件已取消跟踪,已添加或已删除哪些文件以及需要提交哪些文件。

git status

使用本命令后,会得到如下所示的结果:

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Car.al
        CarCard.al
        CarList.al

no changes added to commit (use "git add" and/or "git commit -a")

本命令会提供可用于添加或删除文件的其他命令。 如果我们将 Car.al 文件添加到暂存区域,使用 status 命令时将会得到以下结果。

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Car.al

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    BodyType.al

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        CarCard.al
        CarList.al

在状态概览中,您可以在暂存区域和工作目录中查看文件列表。 要压缩结果,您可以使用 status -s 选项。 本选项将在列表中显示文件。 第一列将指示文件在暂存区域中的状态,第二列将指示文件在工作目录中的状态。

在下一个示例中,您可以看到在工作区域(第二列)中删除了 BodyType.al 文件,但尚未暂存该文件(第一列中没有状态)。 Car.al 已添加到暂存区域并具有状态字母 A。其他两个文件仍都处于取消跟踪状态,因此在工作目录或暂存区域内没有这两个文件的状态。

 D BodyType.al
A  Car.al
?? CarCard.al
?? CarList.al

要获取在 Git 目录中执行的提交列表,您可以使用 log 命令。 log 命令还可以接受一些选项,这些选项将显示有关每次提交的详细信息。

git log

基本 log 命令会显示包含作者和日期信息以及提交消息的列表。

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

如果您使用 -p 选项,则它还将包含上一次提交的内容以及两次内容的差异。

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8e38d70
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.alpackages/*.app
+*.app
+.vscode/launch.json
+.vscode/rad.json
diff --git a/BodyType.al b/BodyType.al
new file mode 100644
index 0000000..7fce165
--- /dev/null
+++ b/BodyType.al
@@ -0,0 +1,29 @@
+enum 50100 "Body Type"
+{
+    Extensible = true;
...

另外,log 中的 --stat 选项也很有用。这些选项会显示您的提交中修改了每个文件的多少行。

git log --stat

commit e50111d6d92f0107e97924e5d9ee3c785a10e194 (HEAD -> master)
Author: Your Name <yourname@xyz.com>
Date:   Tue May 12 15:40:29 2020 +0200

    Initial Commit

 .gitignore  |  4 ++++
 BodyType.al | 29 +++++++++++++++++++++++++++++
 app.json    | 39 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)

--graph 选项会以图形方式概要显示您的不同提交(包括不同的分支和合并)。 通过 --pretty 选项,您可以更轻松、更简洁地读取输出。

pretty 有一些相关选项:oneline、short、full、fuller。

git log \--pretty=oneline \--graph

在 Visual Studio Code 中,状态将立即显示在 SCM 窗口中。 字母 A、D、U、M 等指示每个文件的状态。