git status是用来检查当前项目下所有文件状态,在git管理中文件有四种阶段,分别是未跟踪的(Untracked)、未更改的(Unmoified)、发生更改的(Modified)、暂存的更改(Staged),当我们在克隆仓库后立刻使用此命令,会看到这样的输出:

$ git status
On branch master  // 在"master"分支
Your branch is up-to-date with 'origin/master'.  // 您的分支与'origin/master'(远端的master分支)相互对比是最新的
nothing to commit, working directory clean  // 没有什么要提交的,工作目录干净

这说明你现在的工作目录相当干净。换句话说,所有已跟踪文件在上次提交后都未被更改过。
git status 命令可以添加参数,这样打印出来的内容会简略显示文件状态,这种打印称为状态简览

$ git status -s

注:-s 区分大小写,此处为小写

  1. 未跟踪的(Untracked)
    当文件第一次被创建时,git不会马上跟踪上这个文件,此时打印出来的状态是这样的
On branch master
Your branch is up to date with 'origin/master'.

Untracked files:  // 未跟踪的文件
  (use "git add <file>..." to include in what will be committed)  // 使用“git add …”来包含将要提交的内容

        index.css  // 相关文件

nothing added to commit but untracked files present (use "git add" to track)  // 没有添加到提交,但存在未跟踪的文件(使用“git add”跟踪)

此时文件 index.css 文件刚刚新建,没有被跟踪,如果想跟踪这个文件的话,需要使用命令

$ git add <files>
  1. 未更改的(Unmoified)
    文件被 git 跟踪,但没有发生更改,这种状态的文件不会出现在 git status 所打印出来的状态列表中

  2. 发生更改的(Modified)
    文件被 git 跟踪,而且发生了更改,此时打印出来的状态是这样的

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:  // 没有准备提交的更改,因为此时文件时更改阶段,准备提交的更改应该在暂存的更改中
  (use "git add <file>..." to update what will be committed) // 使用"git add …"来更新将要提交的内容
  (use "git restore <file>..." to discard changes in working directory)  // 使用"git restore …"来丢弃工作目录中的更改
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")  // 没有修改添加到提交(使用“git add”和/或“git commit -a”)

进入更改阶段下一步就要进入暂存的更改(Staged)阶段,暂存的更改(Staged)阶段中的文件就要准备提交进入远端仓库

  1. 暂存的更改(Staged)
    文件被 git 跟踪,而且发生了更改,并且已经添加到暂存区,此时打印出来的状态是这样的
On branch master
Your branch is up to date with 'origin/master'.

Changes to be committed:  // 已暂存可以被提交的文件
  (use "git reset HEAD <file>..." to unstage)  // 使用"git reset HEAD …"来取消阶段

        modified:   index.html

暂存的阶段是我们将文件提交到远端的一个确认的阶段,相当于像一些删除等不可逆的操作被执行时,会有一个弹框提示是否确认此操作一样

  1. 状态简览
    这里我们讲一下 git status -s 命令所打印出来的简略的状态,以及每个替代字母的意义,此时打印出来的状态是这样的
 M README.md
MM index.html
A  index.js
M  router.html
?? index.css
暂存区工作区文件简介
MREADME.md当前文件被 git 监听,而且文件发生了更改,但还没有添加到暂存区
MMindex.html当前文件被 git 监听,而且文件发生更改,并且添加到了暂存区,添加到暂存区之后又发生了更改
Aindex.js当前文件没有被 git 监听,是首次进入暂存区
Mrouter.html当前文件被 git 监听,文件发生了更改,并且已经添加到暂存区
??index.css当前文件刚刚新建,新建的文件不会直接被 git 监听,此时文件在工作区
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐