1/12 Git筆記(*將檔案交給Git的暫存區)

1/12 Git筆記
$ cd /tmp                  # 切換至 /tmp 目錄
$ mkdir git-practice       # 建立 git-practice 目錄
$ cd git-practice          # 切換至 git-practice 目錄
$ git init                 # 初始化這個目錄,讓 Git 對這個目錄開始進行版控
Initialized empty Git repository in /private/tmp/git-practice/.git/

GIt Status:

git status 這個指令。這個指令的用途是用來查詢現在這個目錄的「狀態」
$ echo "hello, git" > welcome.html
在這個目錄裡透過系統指令建立一個內容為 hello, git 並命名為 welcome.html 的檔案

把檔案交給 Git的暫存區:
可以利用$ git add 檔名 指令將檔案交給git管理
或是利用Source Tree 將檔案右鍵 add to index來儲存

如果你覺得 git add welcome.html 這樣一次只加一個檔案有點麻煩,你也可以使用萬用字元(wildcard character):
$ git add *.html
就可把所有附檔名是 html 的檔案全部都加到暫存區。而如果想要一口氣把全部的檔案加到暫存區,可直接使用 --all 參數:
$ git add --all

-all . 的差別
1. Git 版本
在比較舊版本(1.x 版)的 Git git add . 這個指令會把「新增的檔案」(也就是 Untracked 狀態的檔案)以及有「修改過的檔案」加到暫存區沒錯,但是不會處理「刪除檔案」的行為。讓我畫個表格簡單說明一下:
使用參數
新增檔案
修改檔案
刪除檔案
--all
O
O
O
.
O
O
X
不過,在 Git 2.x 版之後變成這樣:
使用參數
新增檔案
修改檔案
刪除檔案
--all
O
O
O
.
O
O
O
也就是說,在 Git 2.x 之後,這兩個參數在功能上就沒什麼差別了。

2. 執行指令時候的目錄位置
舉個例子來說:


在專案的根目錄的 index.html 以及在 css 目錄的 main.css 都有修改,如果是在根目錄執行 git add .,這兩個檔案都會被加進暫存區,但如果是在 css 目錄下執行,僅會加入 main.cssindex.html 的狀態不會改變。

那是因為 git add . 這個指令會把目前當下這個目錄,以及它的子目錄、子子目錄、子子子目錄裡的異動全部加到暫存區,但在這個目錄的以外的就不歸它管了。而 git add --all 指令就沒這個問題,這個指令不管在專案的哪一層目錄執行,效果都是一樣的,在這個專案裡所有的異動都會被加至暫存區。
所以git add --all 比較方便使用。

Overall, 到目前為止git add 的功能只能將檔案放到暫存區。

留言

熱門文章