[toc]
## git status
`git status `命令将为你展示工作区及暂存区域中不同状态的文件。 这其中包含了已修改但未暂存,或已经暂存但没有提交的文件。
### 示例
~~~
$ git status
On branch master
nothing to commit, working directory clean
~~~
## git add
git add 命令使用文件或目录的路径作为参数,可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“添加内容到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。
### 示例
~~~
$ git add README [新增文件]
$ git add CONTRIBUTING.md [修改文件]
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md
~~~
## git diff --cached --staged
如果 git status 命令的输出对于你来说过于模糊,你想知道具体修改了什么地方,可以用 git diff 命令
### 示例
#### git diff 不加参数 ,查看尚未暂存的文件更新了哪些部分
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异, 也就是修改之后还没有暂存起来的变化内容。
~~~
$ git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,7 +65,8 @@ branch directly, things can get messy.
Please include a nice description of your changes when you submit your PR;
if we have to read the whole diff to figure out why you're contributing
in the first place, you're less likely to get feedback and have your change
-merged in.
+merged in. Also, split your changes into comprehensive chunks if your patch is
+longer than a dozen lines.
If you are starting to work on a particular area, feel free to submit a PR
that highlights your work in progress (and note in the PR title that it's
~~~
#### git diff --cached 查看已暂存的将要添加到下次提交里的内容
Git 1.6.1 及更高版本还允许使用 git diff --staged,效果是相同的,但更好记些。
~~~
$ git diff --staged
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+My Project
~~~
请注意,git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
## git commit -m -a
提交更新,每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit,会打开编辑器提示输入本次提交说明.
另外,你也可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行.
Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,如果给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
### 示例
~~~
$ git commit
$ git commit -m "Story 182: Fix benchmarks for speed"
$ git commit -a -m 'added new benchmarks'
~~~
## git rm --cached
git rm 删除本地工作目录中的文件,并从已跟踪文件清单中移除(确切地说,是从暂存区域移除)
rm 只删除本地工作目录中的文件,然后再运行 git rm 记录此次移除文件的操作
git rm --cached 把文件从 Git 仓库中删除(亦即从暂存区域移除),本地保留
支持 glob 模式,正则匹配
### 示例
~~~
$ git rm --cached README
$ git rm log/\*.log
~~~
## git mv
移动文件
### 示例
文件改名,只是暂存了,后面需要commit
~~~
$ git mv file_from file_to
~~~
其实,运行 git mv 就相当于运行了下面三条命令:
~~~
$ mv README.md README
$ git rm README.md
$ git add README
~~~
- 第一章 起步
- 1.1 关于版本控制
- 1.2 Git 简史
- 1.3 Git 基础
- 1.4 命令行
- 1.5 安装 Git
- 1.6 初次运行 Git 前的配置
- 1.7 获取帮助
- 1.8 总结
- 第二章 Git基础
- 2.1 获取 Git 仓库
- 2.2 记录每次更新到仓库
- 2.3 查看提交历史
- 2.4 撤消操作
- 2.5 远程仓库的使用
- 2.6 打标签
- 2.7 Git 别名
- 2.8 总结
- 第三章 Git分支
- 3.1 分支简介
- 3.2 分支的新建与合并
- 3.3 分支管理
- 3.4 分支开发工作流
- 3.5 远程分支
- 3.6 变基
- 3.7 总结
- 第四章 服务器上Git
- 4.1 协议
- 4.2 在服务器上搭建 Git
- 4.3 生成 SSH 公钥
- 4.4 配置服务器
- 4.5 Git 守护进程 TODO
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管的选择
- 4.10 总结
- 第五章 分布式Git
- 5.1 分布式工作流程
- 第六章 GitHub
- 第七章 Git工具
- 第八章 自定义Git
- 第九章 Git于其他系统
- 第十章 Git内部原理
- 附录A 其他环境中的Git
- A1.1 图形界面 TODO
- A1.2 Visual Studio 中的 Git TODO
- A1.3 Eclipse 中的 Git
- 附录B 将Git嵌入你的应用
- 附录C Git命令
- 附录D 常用命令
- D.1 配置和设置
- D.2 帮助
- D.3 创建和获取仓库
- D.4 文件状态
- D.5 查看日志