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 的不同。
沒有留言:
張貼留言