- Git基础概念
- Git历史(简史)
- Git基础和原理
- Git安装设置
- Git使用前配置
- Git快速入门
- Git工作流程
- Git创建存储库
- Git克隆操作
- Git执行变更操作
- Git查看更改
- Git提交更改
- Git推送(push)操作
- Git更新操作
- Git隐藏(Stash)操作
- Git移动操作
- Git重命名操作
- Git删除操作
- Git修正错误
- Git标签操作
- Git补丁操作
- Git管理分支
- Git处理冲突
- Git不同平台换行符问题
- Git远程操作详解
-
Git常用命令
- git config命令
- git help命令
- git init命令
- git add命令
- git clone命令
- git status命令
- git diff命令
- git commit命令
- git reset命令
- git rm命令
- git mv命令
- git branch命令
- git checkout命令
- git merge命令
- git mergetool命令
- git log命令
- git stash命令
- git tag命令
- git fetch命令
- git pull命令
- git push命令
- git remote命令
- git submodule命令
- git show命令
- git shortlog命令
- git describe命令
- git rebase命令
git status命令
git status
命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status
不显示已经commit
到项目历史中去的信息。看项目历史的信息要使用git log
.
简介
git status [<options>…] [--] [<pathspec>…]
描述
显示索引文件和当前HEAD提交之间的差异,在工作树和索引文件之间有差异的路径以及工作树中没有被Git跟踪的路径。 第一个是通过运行git commit
来提交的; 第二个和第三个是你可以通过在运行git commit
之前运行git add
来提交的。
git status
相对来说是一个简单的命令,它简单的展示状态信息。输出的内容分为3个分类/组。
# On branch master # Changes to be committed: (已经在stage区, 等待添加到HEAD中的文件) # (use "git reset HEAD <file>..." to unstage) # #modified: hello.py # # Changes not staged for commit: (有修改, 但是没有被添加到stage区的文件) # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # #modified: main.py # # Untracked files:(没有tracked过的文件, 即从没有add过的文件) # (use "git add <file>..." to include in what will be committed) # #hello.pyc
忽略文件(untracked文件)
没有tracked
的文件分为两类. 一是已经被放在工作目录下但是还没有执行 git add
的, 另一类是一些编译了的程序文件(如.pyc
, .obj
, .exe
等)。当这些不想add的文件一多起来, git status
的输出简直没法看, 一大堆的状态信息怎么看?
基于这个原因。 Git让我们能在一个特殊的文件.gitignore
中把要忽略的文件放在其中, 每一个想忽略的文件应该独占一行, *
这个符号可以作为通配符使用。例如在项目根目录下的.gitignore
文件中加入下面内容能阻止.pyc
和.tmp
文件出现在git status
中:
*.pyc *.tmp
示例
以下是一些示例 -
在每次执行 git commit
之前先使用git status
检查文件状态是一个很好的习惯, 这样能防止你不小心提交了您不想提交的东西。 下面的例子展示 stage 前后的状态, 并最后提交一个快照.
# Edit hello.py $ git status # hello.py is listed under "Changes not staged for commit" $ git add hello.py $ git status # hello.py is listed under "Changes to be committed" $ git commit $ git status # nothing to commit (working directory clean)
第一个状态输出显示了这个文件没有被放到暂存区(staged)。git add
将影响第二个git status
的输出, 最后一个git status
告诉我们没有什么能可以提交了,工作目录已经和最近的提交相匹配了。有些命令 (如, git merge
) 要求工作目录是clean
状态, 这样就不会不小心覆盖更新了。
git status
命令可以列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit
)的文件。下面来看看如下一个示例 -
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: 2.txt # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: 1.txt # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # 1.log
上面输出结果中”Changes to be committed“中所列的内容是在索引中的内容,提交之后进入Git工作目录。
上面输出结果中“Changed but not updated”中所列的内容是在工作目录中的内容,git add
之后将添加进入索引。
上面输出结果中“Untracked files”中所列的内容是尚未被Git跟踪的内容,git add
之后进入添加进入索引。
通过git status -uno
可以只列出所有已经被git管理的且被修改但没提交的文件。
上一篇:git clone命令
下一篇:git diff命令