Git教程——查看修改日誌 (log & diff)

1.前言

在 git 中, 每一次提交(commit)的修改, 都會被單獨的保存起來. 也可以說 git 的中的所有文件都是一次次修改累積起來的. 文件好比樓房, 每個 commit 記錄 了蓋樓需添加或者拿走的材料. 整個施工過程也被記錄了下來.

2.修改記錄 log

之前我們以Mr Luoj 的名義對版本庫進行了一次修改, 添加了一個 1.py 的文件. 接下來我們就來查看版本庫的些施工的過程. 可以看到在 Author 那已經有我的名字和 email 信息了.
在這裏插入圖片描述
如果我們對1.py文件進行一次修改, 添加這行代碼:

a = 1

然後我們就能在 status 中看到修改還沒被提交的信息了.

$ git status

# 輸出
On branch master
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.py    # 這裏顯示有一個修改還沒被提交

no changes added to commit (use "git add" and/or "git commit -a")

在這裏插入圖片描述
所以我們先把這次修改添加 (add) 到可被提交 (commit) 的狀態, 然後再提交 (commit) 這次的修改:

$ git add 1.py
$ git commit -m "change 1"

# 輸出
[master fb51216] change 1
 1 file changed, 1 insertion(+) # 提示文件有一處添加

再次查看 log, 現在我們就能看到 create 1.py 和 change 1 這兩條修改信息了. 而且做出這兩條 commit 的 ID, 修改的 Author, 修改 Date 也被顯示在上面.

$ git log

# 輸出
commit fb51216b081e00db3996e14edf8ff080fab1980a
Author: Morvan Zhou <mz@email.com>
Date:   Tue Nov 29 00:24:50 2016 +1100

    change 1

commit 13be9a7bf70c040544c6242a494206f240aac03c
Author: Morvan Zhou <mz@email.com>
Date:   Tue Nov 29 00:06:47 2016 +1100

    create 1.py

在這裏插入圖片描述
如果刪除一部分代碼, 也會被記錄上, 比如把 a = 1 改成 a = 2, 再添加一個 b = 1.

a = 2
b = 1

3.查看 unstaged

如果想要查看這次還沒 add (unstaged) 的修改部分 和上個已經 commit 的文件有何不同, 我們將使用 $ git diff:

$ git diff   #對比工作區(未 git add)和暫存區(git add 之後)

在這裏插入圖片描述

4.查看 staged (–cached)

如果你已經 add 了這次修改, 文件變成了 “可提交狀態” (staged), 我們可以在 diff 中添加參數 --cached 來查看修改:

$ git add .   # add 全部修改文件
$ git diff --cached   #對比暫存區(git add 之後)和版本庫(git commit 之後)

在這裏插入圖片描述

5.查看 staged & unstaged (HEAD)

a = 2
b = 1
c = b

目前 a = 2 和 b = 1 已被 add, c = b 是新的修改, 還沒被 add.

$ git diff HEAD     # 對比工作區(未 git add)和版本庫(git commit 之後)

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章