Git之"git diff"命令
本文主要是瞭解git diff
、git diff --cached
、git diff HEAD
命令的區別。
1.準備工作:
- 1.新建一個資料夾,名字為
Test
, 並且使用git init
命令進行初始化。 - 2.在
Test
目錄中,新建main.m
檔案,並新增以下內容。
#include <stdio.h>
int main {
return 0;
}
執行新增提交操作。
$ git add .
$ git commit -m "新增了main.m檔案"
- 3.編輯
main.m
檔案, 新增一些內容printf(...)
#include <stdio.h>
int main {
printf("Hello, Boys");
return 0;
}
此時,執行git add .
命令,不執行git commit
命令!
- 4.再次編輯
main.m
檔案, 新增一些內容printf(...)
#include <stdio.h>
int main {
printf("Hello, Boys");
printf("Let's go!");
return 0;
}
不進行新增,提交操作。
2.執行git status
命令,檢視結果
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: main.m
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: main.m
結果中,第一行modified: main.m
表示已新增到暫存區
中,還沒有提交到倉庫
。第二行modified: main.m
表示修改檔案還沒有被新增到暫存區
中。
3.執行git diff
命令,比較不同
- 1.執行
git diff
命令,結果如下:
$ git diff
diff --git a/main.m b/main.m
index d87b99d..33077a5 100644
--- a/main.m
+++ b/main.m
@@ -1,5 +1,6 @@
#include <stdio.h>
int main {
printf("Hello, Boys");
+ printf("Let's go!");
return 0;
}
由此可見,git diff
比較的是工作目錄
與暫存區
的區別。
- 2.執行
git diff --cached
命令,結果如下。
$ git diff --cached
diff --git a/main.m b/main.m
index 2662a1a..d87b99d 100644
--- a/main.m
+++ b/main.m
@@ -1,5 +1,5 @@
#include <stdio.h>
int main {
+ printf("Hello, Boys");
return 0;
}
由此可見,git diff --cached
比較的是暫存區
與本地倉庫
的區別。
- 3.執行
git diff HEAD
命令,結果如下。
$ git diff HEAD
diff --git a/main.m b/main.m
index 2662a1a..33077a5 100644
--- a/main.m
+++ b/main.m
@@ -1,5 +1,6 @@
#include <stdio.h>
int main {
+ printf("Hello, Boys");
+ printf("Let's go!");
return 0;
}
比較的是工作目錄
與本地倉庫
的區別。
4.檔案的三種狀態
對於任何一個檔案,在 Git 內都只有三種狀態:已提交(committed)
,已修改(modified)
和已暫存(staged)
。
-
已提交
表示該檔案已經被安全地儲存在本地資料庫
中了; -
已修改
表示修改了某個檔案,但還沒有提交儲存
; -
已暫存
表示把已修改的檔案放在下次提交時要儲存的清單中
。
Git 管理專案時,檔案流轉的三個工作區域:工作目錄
,暫存區域
,以及本地倉庫
。
Git 目錄(倉庫)
:它是 Git 用來儲存後設資料和物件資料庫的地方。該目錄非常重要,每次克隆映象倉庫的時候,實際拷貝的就是這個目錄裡面的資料。工作目錄
:從專案中取出某個版本的所有檔案和目錄,用以開始後續工作的叫做工作目錄。這些檔案實際上都是從 Git 目錄(倉庫)中的壓縮物件資料庫中提取出來的,接下來就可以在工作目錄中對這些檔案進行編輯。暫存區域
:所謂的暫存區域(索引檔案)只不過是個簡單的檔案,一般都放在 Git 目錄中。-
基本的
Git 工作流程
如下- 1.在工作目錄中修改某些檔案。
- 2.對修改後的檔案進行快照,然後儲存到暫存區域。
- 3.提交更新,將儲存在暫存區域的檔案快照永久轉儲到 Git 目錄中。
注意:可以從檔案所處的位置來判斷狀態:
- 如果是 Git 目錄中儲存著的特定版本檔案,就屬於已提交狀態;
- 如果作了修改並已放入暫存區域,就屬於已暫存狀態;
- 如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態。
相關文章
- git diff 命令淺析Git
- git diff --stat命令詳解Git
- git diffGit
- 『現學現忘』Git基礎 — 21、git diff命令Git
- git diff --numstatGit
- Git基礎命令之git rebase命令Git
- 命令列下Git呼叫IDEA的diff功能命令列GitIdea
- git 命令之git rebase 用法&git rebase介紹Git
- git diff 視覺化配置Git視覺化
- git diff 輸出格式詳解Git
- Git - 使用命令和P4Merge進行diffGit
- Git diff hash順序的問題Git
- GIT 命令Git
- # Git命令Git
- git命令Git
- Git 學習之命令詳解Git
- 3、Git之常用命令Git
- Git(6)-- 記錄每次更新到倉庫(git clone、status、add、diff、commit、rm、mv命令詳解)GitMIT
- git命令列命令Git命令列
- JB的git之旅-git命令列Git命令列
- [git]git分支常用命令Git
- git push命令Git
- Git——rebase命令Git
- git status 命令Git
- git init 命令Git
- Git的命令Git
- git show 命令Git
- git checkout 命令Git
- git命令速查Git
- git 命令速查Git
- git命令整理Git
- git rebase命令Git
- Git 命令整理Git
- git命令大全Git
- 玩轉git與github--git命令Github
- Git基本命令 -- 建立Git專案Git
- 【Git】git常用命令彙總Git
- Git是什麼?Git基本命令+工作區命令Git