2011年3月23日 星期三

internal -- staging area

這一篇說得很清楚 (http://ihower.tw/blog/archives/2591 ).

staging area 是一塊 git 用來紀錄 commit command 要"提交的東西" 的區域)。
所以當你commit 過後,staging area 是空的。
用 git add, 就會把 add 的 file 加到 staging area 裡。

平時用的
$git commit -a a option ,意指..將修改過的檔案add 到 staging area,
所以這樣 commit ,會自動把修改過的 file commit 進去。

要是不加 -a 選項,就要在commit 之前,用 git add 把要 commit 的 file 加到 staging area。
然後 commit 才會 commit這些 file 進去。

要把 staging area 裡的 file 拿出來,用:
$git reset HEAD filename
這樣,那個 file 就會從 staging area 移出來,恢復到還沒被加入 staging area 的狀態 (原來是 untracked 就是 untracked, 是unstaging 就是 unstaging),修改的內容不會消失。

因為有 staging area,所以 diff 分為以下三種:
$git diff
比較 working 跟 staging area

$git diff --cached
拿staging area 的file 跟 HEAD 的內容 (上次commit)比較

$git diff HEAD
比較 working 跟 HEAD 的不同。

沒有留言:

張貼留言