前言
安裝與設定完 git 不代表你的系統已經開始受到 git 的版控
而是我們需要把資料夾與檔案加入 git 的控管當中
事實上我們現在還沒有開始讓 git 控管我們的任何一個檔案或資料夾
之後我們都會在 git bash 上作業,讓我們先進入 git bash 中,應該還沒忘吧。
讓資料夾被 git 版控
我們新增一個資料夾並讓這個資料夾被 git 版控,也就是被 git 追蹤
說明一下之後的體歷:
#
井號開頭是註解,不需要輸入,通常是用來說明與解釋指令$
錢號後面則是我們要輸入的指令- 沒有這些符號的就是下完指令按 enter 執行後的輸出結果
# 進入 git bash 後先看看自己在哪裡
$ pwd
/c/Users/Administrator
# 切換到 D 槽,不一定要這樣,就看大家習慣,反正只是練習
$ cd /d
# 建立一個資料夾做為練習,就叫 practice 吧
$ mkdir practice
# 進入該資料夾
$ cd practice
# 初始化這個資料夾,讓他開始被 git 版控
$ git init
Initialized empty Git repository in D:/practice/.git/
上面最後一個指令的執行結果是告訴我們 practice 開始被 git 版控了
他會在 practice 下新增一個 .git
的資料夾
這個資料夾就是在記錄 git 的版控資訊
其他加入追蹤的資料夾或檔案被刪被改了都救得回來,都是靠 .git
的紀錄資訊
所以這個 .git
很重要,被刪了就等於是解除 git 的版控了
.git
沒了就會讓該資料夾回到一般的狀態,改了就改了,刪了就刪了
提醒
因為 .
點開頭的是 linux 的隱藏檔或隱藏資料夾,輸入 ls
或 ls -l
會發現看不到他
這時候要加入 a 參數,也就是 ls -a
或 ls -al
就可以看到他囉
其他已存在的資料夾想加入 git 就直接在該資料夾內輸入 git init
即可
查看 git 狀態
接下來要做什麼呢?先來看一下目前 practice 的 git 狀態
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
上面是說,目前我們在 master 分支,這是一開始的主要分支,
沒有需要提交(commit) 的檔案,你可以輸入 git add
來將檔案加入追蹤
細節我們會在之後補充,目前先讓大家熟悉整個 git 的流程就好
把檔案交給 git 追蹤
我們在 practice 內建立一個新檔案,檔名為 welcome.txt
內容寫 你好
在 git bash
中可以用 vim 或 notepad 編輯器等方式完成這件事
$ vim welcome.txt
# 看到畫面一片空白,表示已經進入 vim
按 i
切換成插入模式
輸入 你好
按 esc 鍵切換回普通模式
輸入 :wq
並按 enter 存檔離開回到 $
提示符號
如果不想用編輯器的話,可以直接用一行指令完成這件事
$ echo '你好' > welcome.txt
原本 echo 是把字印在畫面上,加上大於就是把前面的字串輸入到檔案中,
所以大於後面接了檔名就能夠把資訊輸入到檔案中了
小心,如果檔案存在的話會直接被蓋掉喔
編輯好後再來看看 git 狀態
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
welcome.txt
nothing added to commit but untracked files present (use "git add" to track)
重複的我們就不解釋了,看到 Untracked files
就表示有一些檔案還沒有被加入追蹤
其實他都有建議的下一步動作,訊息還滿清楚的
所以,git 是不會自動幫我們記錄的,需要我們手動加入追蹤
因為可能有不同的需求,自動記錄的話主動權就尚失了,這個之後再說
$ git add welcome.txt
加入後再來確認目前的 git 狀態
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: welcome.txt
沒有 Untracked
了,變成 new file
表示新建的檔案 welcome.txt 已經被追蹤了,只是還沒提交而已
他目前在暫存區(Staging Area) 如果提交了才會被放到儲存庫裡
提醒
git add
就跟 ls
, copy
等這些指令一樣可以使用萬用字元
像是 git add *.txt
等一次加入多個檔案
使用 git add .
或 git add --all
會加入該資料夾下包含所有子資料夾與檔案到追蹤清單
這兩個參數有一點點不同,--all
不管在哪個資料夾下,都會把 git init
初始化資料夾下含所有子資料夾之檔案加入追蹤
但 .
只會加入該資料夾下所有子資料夾之檔案到追蹤清單
所以在 git init
的那層為根目錄(資料夾)的話,輸入 git add .
就會加入該資料夾下所有檔案與資料夾到追蹤清單
這時候 .
跟 --all
是完全相同的
相對的如果只是在某個子資料夾用 .
加入追蹤的話,那麼上一層的資料就不會被加入了
狀況
做好 git add
的檔案再次編輯後還想加入追蹤則還需要再次 git add
否則直接提交的話會是前一次 git add
的內容而已,還沒 git add
的就不會被提交到儲存庫
我們再次編輯 welcome.txt
再第二行加入 我很好
# 變成兩個大於,就是直接在檔案後面添加資訊
$ echo '我很好' >> welcome.txt
# 再來看一下狀態
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: welcome.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: welcome.txt
看起來好像有兩個 welcome.txt
檔案,後面的狀態是 modified
並且提醒我們是要再 git add
還是想回到之前的版本等等
仔細看訊息其實就可以知道目前檔案的狀態,以及應該要做什麼事情
那就再次 git add .
加入追蹤
$ git add .
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: welcome.txt
好了,準備提交吧
提交到儲存庫裡存檔
想要將資訊從暫存區永久存放至儲存庫(倉庫)還需要最後一個動作,也就是提交
commit
就是提交指令,-m
參數後面用引號包住文字訊息
如果只輸入 git commit
應該會開啟預設編輯器讓你輸入提交的文字訊息
$ git commit -m '加入git並新增welcome.txt檔案'
[master (root-commit) 0fdb52f] 加入git並新增welcome.txt檔案
1 file changed, 2 insertions(+)
create mode 100644 welcome.txt
從上面的資訊至少可以了解到:
- 這是主要(master) 分支,產生的版號是
0fdb52f
接著是我們寫的提交訊息 - 有 1 個檔案中的 2 行被提交
- 看到 create 表示有新的檔案被建立,是之前沒有的,最後是權限跟檔名
從這些資訊我們也可以知道剛剛做了哪些事情
我覺得看到很多改變會突然覺得很有成就感
提交訊息的建議:
- 簡單易懂就好
- 避免情緒性文字,以免團隊合作時產生不必要的問題
- 避免不清楚或不完整的資訊,如:修改檔案或新增文字
提交時只會處理暫存區的資訊到儲存庫,這也就是我們剛剛提到的
沒有 git add
的資訊是不會被儲存下來的
完成提交才是完成整個 git 一般流程
提示
如果沒東西也想提交的話可以使用 --allow-empty
參數
# 看一下剛剛完成提交的狀態
$ git status
On branch master
nothing to commit, working tree clean
# 沒東西,來提交看看
$ git commit -m '沒東西'
On branch master
nothing to commit, working tree clean
# 沒東西硬是要提交
$ git commit --allow-empty -m '沒東西'
[master 462682d] 沒東西
雖然提交空的沒什麼意義,不過在測試合併時可能會需要這樣做
還有一些特殊狀況,就是想要有一筆紀錄時也會這樣做
補充
想要在 git bash 貼上的話,可以直接按快顯鍵,並使用下方向鍵找到 paste
按 enter
後面也有列出快速鍵 shift+insert
如果 insert被設定成 NVDA 鍵那就要連按兩下囉
所以這個環境不能按 ctrl+v
貼上喔
結論
- 初始化被 git 版控
git init
只要做一次就好 - 讓 git 追蹤所有內容
git add .
- 提交這次的追蹤內容到倉庫
git commit -m '訊息'
- 經常使用
git status
來確認目前的 git 狀態