本地倉庫
背景
建立工作目錄
平時工作時我們習慣對文件分門別類進行管理,.doc
.txt
等文字型別的檔案習慣存在 doc
檔案下,開發java
js
等原始碼檔案存在在 src
目錄下,這一點很好理解,那麼講解 git的專案我們也要建立一個資料夾,姑且新建一個demo
的資料夾吧!
# 在工作空間建立指定目錄
mkdir demo
# 切換至工作目錄
cd demo
複製程式碼
建立本地倉庫
既然已經建立了工作資料夾,那麼我們自然是希望該檔案下的所有檔案都能被 git
管理,也就是說在當前檔案下的建立新檔案,修改原檔案內容或者刪除檔案等操作都能納入版本控制中,不然為什麼要用git
呢?
下面這個命令就是告訴git
這個 demo
目錄要納入版本控制了.
# 初始化本地倉庫
git init
複製程式碼
一旦執行git init
命令,細心的讀者可能會發現在原來的 demo
目錄下多了.git
隱藏檔案,正因如此,原來被我們稱為工作目錄的 demo
才能納入版本控制,我們將.git
目錄稱之為版本庫.
由於當前專案 demo
只在我們自己電腦上,其他人無法訪問,所以我們稱這種形式的版本庫為本地倉庫.
新增檔案到版本庫
首先明確的是,所有的版本控制系統只能追蹤文字檔案的改動,文字檔案就是平常熟悉的.txt
.html
.js
.css
.java
.xml
等等檔案,非文字檔案的其他格式有哪些?
例如二進位制檔案,像我們平時聽音樂的.mp3
,看視訊的.mp4
,瀏覽圖片的.png
等這些都是二進位制檔案,需要專門的軟體才能正常開啟,不信的話,你用記事本看看能不能開啟視訊?
瞭解文字檔案和二進位制檔案的區別,那是不是說二進位制檔案沒法進行版本控制了,剛才你不是還說demo
目錄下的所有檔案嗎?這不是自相矛盾嗎!
非也非也,git
當然也能夠管理二進位制檔案,對於文字檔案的追蹤,可以細粒度到哪個檔案在哪一行發生了哪些變化,而二進位制檔案只能粗粒度知道哪個檔案變化了,並不知道具體變化.
不幸的是,Microsoft
的Word
格式是二進位制格式,因此,版本控制系統是沒法跟蹤Word
檔案的改動的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統,就要以純文字方式編寫檔案.
因為文字是有編碼的,比如中文有常用的GBK
編碼,日文有Shift_JIS
編碼,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8
編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支援.
言歸正傳,現在我們在demo
目錄下建立一個test.txt
演示檔案,內容如下git test
# 建立新檔案
touch test.txt
# 編輯新檔案,輸入 git test
echo "git test" > test.txt
複製程式碼
接下來我們還需要兩步操作才能將test.txt
納入git
管理:
第一步,使用git add <file>
命令將檔案新增到本地倉庫:
# 新增到本地倉庫: 第一步指定要新增的檔案
git add test.txt
複製程式碼
第二步,使用git commit -m <message>
命令將檔案提交到本地倉庫:
# 新增到本地倉庫: 第二步指定新增檔案備註
git commit -m "add test.txt"
複製程式碼
經過上述兩步操作,test.txt
檔案已經納入到版本控制中了,這裡你可能會有疑問了為什麼需要add
commit
兩步呢?
因為commit
可以一次性提交很多檔案,所以你可以多次add
不同的檔案,比如:
# 建立三個檔案file1.txt file2.txt file3.txt
touch file1.txt file2.txt file3.txt
# 新增一個檔案file1.txt
git add file1.txt
# 新增兩個檔案file2.txt file3.txt
git add file2.txt file3.txt
# 一次性提交全部檔案
git commit -m "add 3 files."
複製程式碼
小結
- 初始化本地倉庫
git init
- 新增檔案到本地倉庫分兩步
git add <file>
和git commit -m <message>
- 實際工作中,大致以下流程
# 在工作空間建立指定目錄
mkdir demo
# 切換至工作目錄
cd demo
# 初始化本地倉庫
git init
# 建立新檔案
touch test.txt
# 編輯新檔案,輸入 git test
echo "git test" > test.txt
# 新增到本地倉庫: 第一步指定要新增的檔案
git add test.txt
# 新增到本地倉庫: 第二步指定新增檔案備註
git commit -m "add test.txt"
...
# 繼續編輯目標檔案,追加 git init
echo "git init" >> test.txt
# 將目標檔案新增到本地倉庫
git add test.txt
# 新增本次新增檔案的備註
git commit -m "add git init"
複製程式碼