|
| 1 | +--- |
| 2 | +title: 了解项目状态 |
| 3 | +createTime: 2025/09/08 23:48:53 |
| 4 | +permalink: /git/3f1386qi/ |
| 5 | +icon: material-icon-theme:git |
| 6 | +--- |
| 7 | + |
| 8 | +## git status |
| 9 | + |
| 10 | +当你忘记某个文件是否已经修改,是否提交到仓库的时候,就可以使用 `git status` 命令来查看。 |
| 11 | + |
| 12 | +它帮助我们了解当前工作目录中文件的更改情况,包括哪些文件被修改、新增或删除,以及这些更改是否已提交到版本库。 |
| 13 | + |
| 14 | +直接在命令行中输入; |
| 15 | +```bash |
| 16 | +git status |
| 17 | +``` |
| 18 | + |
| 19 | +此命令会返回当前工作目录的状态,包括未跟踪的文件、修改后的文件以及新创建的文件。同时,它还会显示当前 branch 的状态信息,如分支名称、最后一次提交的 commit 信息等。 |
| 20 | + |
| 21 | +如果你想查看特定文件的状态,可以使用 `git status -a` 命令,它会显示所有文件的状态,**包括那些在 Git 仓库中但已经删除的文件**。 |
| 22 | + |
| 23 | +`git status` 的优点在于它能够快速展示当前目录的状态,让我们时刻把握项目的进展。然而,它也有一些局限性。例如,**它只能显示当前目录的状态**,无法跨多个子目录分析代码状态。为了解决这个问题,我们可以使用 `git status -u` 命令,它会显示所有子目录的状态。 |
| 24 | + |
| 25 | +**例如修改了一个 `readme.txt` 文件,使用命令后**: |
| 26 | +```bash |
| 27 | +On branch master |
| 28 | +Changes not staged for commit: |
| 29 | + (use "git add <file>..." to update what will be committed) |
| 30 | + (use "git checkout -- <file>..." to discard changes in working directory) |
| 31 | + |
| 32 | + modified: readme.txt |
| 33 | + |
| 34 | +no changes added to commit (use "git add" and/or "git commit -a") |
| 35 | +``` |
| 36 | +`On branch master` 表示我们当前所在的分支是 master 分支。 |
| 37 | + |
| 38 | +下面的 `Changes not staged for commit:` 告诉我们工作目录中有一些更改尚未提交。Git 将要被提交的更改称为 "staged"。在这种情况下,Git 提醒你需要使用 `git add` 来 "添加" 更改,以便它们被包含在下一次提交中。 |
| 39 | + |
| 40 | +`modified: readme.txt` 表示 "readme.txt" 文件已经被修改。修改意味着我们对这个文件进行了修改,但是这些修改尚未被 "添加" 到暂存区。 |
| 41 | + |
| 42 | +`no changes added to commit (use "git add" and/or "git commit -a")` 是提示我们还没有把修改添加到下一次提交中。如果我们想把这些修改包含在下次提交中,我们需要使用 `git add` 命令。如果我们想忽略这些未添加的更改,我们可以使用 `git checkout -- readme.txt` 来丢弃工作目录中的更改。 |
| 43 | + |
| 44 | + |
| 45 | +## git diff |
| 46 | + |
| 47 | +只是用 `git status` 只能看文件是否有改动,但是不能看到文件具体改动了哪些,一旦你忘记了修改了什么地方,也就不敢随便乱动,这个时候就可以使用 `git diff` 命令**查看当前工作目录中所有未提交的更改**。 |
| 48 | + |
| 49 | +如果我们需要查看特定文件的变化,可以使用 `git diff <文件名>`。 |
| 50 | + |
| 51 | +`git diff --cached` 命令则显示已暂存但对尚未提交到版本库的更改。 |
| 52 | + |
| 53 | +例如修改了一个 `example.txt` 文件后,使用 `git diff` 命令来查看: |
| 54 | +```bash |
| 55 | +diff --git a/example.txt b/example.txt index 843a555..45aff21 100644 |
| 56 | +--- a/example.txt |
| 57 | ++++ b/example.txt |
| 58 | +@@ -1,3 +1,4 @@ |
| 59 | +Line 1: The same as the original version. Line 2: Added a new line. |
| 60 | +Line 3: This line has been modified. |
| 61 | ++Line 4: Another new line. |
| 62 | +``` |
| 63 | +`diff --git a/example.txt b/example.txt`:这行告诉我们在 a/example.txt 和 b/example.txt 之间进行了比较。 |
| 64 | + |
| 65 | +`index 843a555..45aff21 100644`:这行展示了索引信息,它描述了文件在 Git 版本库中的状态。在这个例子中,843a555 和 45aff21 是文件的两个不同的版本标识,100644 是文件的权限模式。 |
| 66 | + |
| 67 | +`--- a/example.txt` 和 `+++ b/example.txt`:这两行分别表示被比较的两个文件。在这个例子中,a/example.txt 是原始文件,b/example.txt 是修改后的文件。 |
| 68 | + |
| 69 | +`@@ -1,3 +1,4 @@`:这行表示差异比较的行范围。在这个例子中,原始文件的前3行与修改后的文件的前3行是相同的,而修改后的文件新增了一行。 |
| 70 | + |
| 71 | +最后面列出了文件的每一行及其状态。"+" 表示新增的行,"%" 表示没有改变的行,"-" 表示被删除的行。 |
0 commit comments