git diff 的簡單使用(比較版本區別)

2021-09-25 08:08:35 字數 3249 閱讀 3619

假如我們修改viewmail.vue 檔案(部分**)

//

根據id獲取詳情

getbyid () ).then(res =>

});},

修改為

//

根據id獲取詳情

getbyid () ).then(res => ).then(res =>

});},

就在post 位置 多加了 一行注釋和 多加了乙個字段 initatortype 字段  ,好吧這不重要,我只是不行寫簡單的例子了,直接用的專案中的**作為例子。

修改完畢後我們開啟 git 命名行。

執行命令   git status  檢視我們 工作區的修改的檔案

git 告訴我們  乙個viewmail.vue檔案修改了。但是沒有告訴我們這個檔案裡 具體修改了哪些內容。此時git diff 就排上的用場。 他可以用於比較現在  工作區(未提交到暫存區)  與 暫存區(已經通過 git add  和 git commit  提交了)。具體的修改變化。

下面我們來執行一下 git diff 命名。檢視一下變化。

具體的變化就一目了然了,git 告訴我們 刪除了紅色行 ,新增了 綠色 行的**。這正是我們的修改。

其實此時執行的  git diff  相當於 git diff head       (head 指向的是 local repository 中最新提交的版本)。

我們再來看一下執行 git diff head

兩次的執行結果是一樣的。我們再來看一下git diff 的簡單說明:

git diff:是檢視 workspace(工作區) 與 index(暫存區) 的差別的。

git diff --cached:是檢視 index(暫存區) 與 local repositorty(本地倉庫) 的差別的。

git diff head:是檢視 workspace 和 local repository 的差別的。(head 指向的是 local repository 中最新提交的版本)

注:git diff 後跟兩個引數,如果只寫乙個引數,表示預設跟 workspace中的**作比較。git diff 顯示的結果為 第二個引數所指的**在第乙個引數所指**基礎上的修改。如,git diff head 表示 workspace 在 最新commit的基礎上所做的修改

由上圖可以看出,通常情況下, 當我們執行的 git add .  ,是將工作區(workspace)的**提交到了暫存區(index)中,然後我們經常執行的  git commit -m 「修改**提交說明」

是將暫存區中的**提交到了本地倉庫(local repository)中。再往後就是我們通過  git push  將本地倉庫的**提交到遠端倉庫了(這裡不多說了,主要說比較版本區別)。

這樣就可以解釋與git diff  和 git diff head 的執行結果一樣的問題了:

雖然說 git diff 是 比較 的工作區 與 暫存區 的區別,git diff head 比較的是 工作區和 本地倉庫的 區別。

但是有一點是,我在修改 **前已經 執行過來 git add . 和 git commit -m "。。。" 命令了。所以 暫存區的 內容和 本地倉庫的內容是一樣的。

執行完後通過 git status 檢視狀態。已經告訴我沒有要提交 的東西了。

所以執行 git diff 和 執行 git diff head 的命令 結果是一樣的。

下面我們再來看一下如果已經把工作區(workspace)中的**提交到了暫存區(index)和本地倉庫(local repository)中怎麼檢視與上乙個版本的區別。

執行如下命令進行提交:

提交完畢後檢視是否還有要提交的內容

好的,已經提示沒有要提交的內容了。

下面我們再來檢視一下執行 git diff 和 git diff head 看是否還有效果:

可以看出這兩個命令已經沒有輸出的東西了。

相信認真看完上面內容的你,已經知道為什麼了。因為此時  工作區(workspace)和 暫存區(index)、本地倉庫(local repository)的最新版本** 都是一樣的了。所以已經比較不出東西了。

那麼此時我們想看這一版本的**和上一版本的**區別,就得使用  git diff head^  我們知道到  head  ** 本地倉庫的最新版本, 那麼上最新版本的上乙個版本就用 head^  表示, 依次類推 那麼最新版本的 上乙個版本的上乙個版本就是 head^^

那麼問題來了,我們如果我們比較的版本比較久遠,就會寫好多 ^^^...... 很麻煩,也容易把自己寫暈。所以git 還有另一種寫法   git diff head~x  x 代表^ 的個數。 即: git diff head~1  代表最新版本的上乙個版本。  git diff head~2 代表最新版本的上乙個版本的 上乙個版本。

下面我們來執行一下(看一下當前最新版本與上乙個版本的區別)

很完美的展現了我們修改的**。

我們再用 git diff head~1  來檢視一下。

結果是一樣的。

這就是git diff 的一些簡單用法。具體用法請見官網。

附:

git diff檢視修改,比較修改之間的差異

1.比較修改之間的差異 git diff不加引數即預設比較工作區與暫存區 git diff cached 比較暫存區與最新本地版本庫 本地庫中最近一次commit的內容 git diff head 比較工作區與最新本地版本庫。如果head指向的是master分支,那麼head還可以換成master ...

Oracle學習版的簡單使用

1 新增sys和system使用者的口令。2 我們要啟動資料庫主頁,使用system使用者進行登入。3 建立乙個普通使用者。1 命令提示符介面 輸入sqlplus回車,按提示輸入使用者名稱和口令。選擇自帶的執行sql命令列介面輸入conn username password 2 使用客戶端sqlde...

Eclipse使用教程簡單版

b 用eclipse來完成乙個helloworld案例 c 編譯和執行 d eclipse的漢化 e 語法檢查提示 黃色波浪線 b 檢視 是由某些視窗的組合而成的 b 如何去掉預設注釋?c 行號的顯示和隱藏 d 字型大小及顏色 b 控制台 c 其他檔案 e 窗體給弄亂了,怎麼辦?f 控制台找不到了,...