[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 查看日志