Git(建立版本庫)
什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
所以,建立一個版本庫非常簡單,首先,選擇一個合適的地方,建立一個空目錄:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd
命令用於顯示當前目錄。在我的Mac上,這個倉庫位於/Users/michael/learngit
。
如果你使用Windows系統,為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。
第二步,通過git init
命令把這個目錄變成Git可以管理的倉庫:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git
的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。
如果你沒有看到.git
目錄,那是因為這個目錄預設是隱藏的,用ls -ah
命令就可以看見。
也不一定必須在空目錄下建立Git倉庫,選擇一個已經有東西的目錄也是可以的。不過,不建議你使用自己正在開發的公司專案來學習Git,否則造成的一切後果概不負責。
把檔案新增到版本庫
首先這裡再明確一下,所有的版本控制系統,其實只能跟蹤文字檔案的改動,比如TXT檔案,網頁,所有的程式程式碼等等,Git也不例外。版本控制系統可以告訴你每次的改動,比如在第5行加了一個單詞“Linux”,在第8行刪了一個單詞“Windows”。而圖片、視訊這些二進位制檔案,雖然也能由版本控制系統管理,但沒法跟蹤檔案的變化,只能把二進位制檔案每次改動串起來,也就是隻知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。
不幸的是,Microsoft的Word格式是二進位制格式,因此,版本控制系統是沒法跟蹤Word檔案的改動的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統,就要以純文字方式編寫檔案。
因為文字是有編碼的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支援。
使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文字檔案。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行為來儲存UTF-8編碼的檔案,他們自作聰明地在每個檔案開頭添加了0xefbbbf(十六進位制)的字元,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程式一編譯就報語法錯誤,等等,都是由記事本的弱智行為帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!記得把Notepad++的預設編碼設定為UTF-8 without BOM即可:
言歸正傳,現在我們編寫一個readme.txt
檔案,內容如下:
Git is a version control system.
Git is free software.
一定要放到learngit
目錄下(子目錄也行),因為這是一個Git倉庫,放到其他地方Git再厲害也找不到這個檔案。
和把大象放到冰箱需要3步相比,把一個檔案放到Git倉庫只需要兩步。
第一步,用命令git add
告訴Git,把檔案新增到倉庫:
$ git add readme.txt
執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有訊息就是好訊息”,說明新增成功。
第二步,用命令git commit
告訴Git,把檔案提交到倉庫:
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+) create mode 100644 readme.txt
簡單解釋一下git commit
命令,-m
後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。
嫌麻煩不想輸入-m "xxx"
行不行?確實有辦法可以這麼幹,但是強烈不建議你這麼幹,因為輸入說明對自己對別人閱讀都很重要。實在不想輸入說明的童鞋請自行Google,我不告訴你這個引數。
git commit
命令執行成功後會告訴你,1 file changed
:1個檔案被改動(我們新新增的readme.txt檔案);2 insertions
:插入了兩行內容(readme.txt有兩行內容)。
建立版本庫
閱讀: 1859225什麼是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄裡面的所有檔案都可以被Git管理起來,每個檔案的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
所以,建立一個版本庫非常簡單,首先,選擇一個合適的地方,建立一個空目錄:
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
pwd
命令用於顯示當前目錄。在我的Mac上,這個倉庫位於/Users/michael/learngit
。
如果你使用Windows系統,為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。
第二步,通過git init
命令把這個目錄變成Git可以管理的倉庫:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git
的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄裡面的檔案,不然改亂了,就把Git倉庫給破壞了。
如果你沒有看到.git
目錄,那是因為這個目錄預設是隱藏的,用ls -ah
命令就可以看見。
也不一定必須在空目錄下建立Git倉庫,選擇一個已經有東西的目錄也是可以的。不過,不建議你使用自己正在開發的公司專案來學習Git,否則造成的一切後果概不負責。
把檔案新增到版本庫
首先這裡再明確一下,所有的版本控制系統,其實只能跟蹤文字檔案的改動,比如TXT檔案,網頁,所有的程式程式碼等等,Git也不例外。版本控制系統可以告訴你每次的改動,比如在第5行加了一個單詞“Linux”,在第8行刪了一個單詞“Windows”。而圖片、視訊這些二進位制檔案,雖然也能由版本控制系統管理,但沒法跟蹤檔案的變化,只能把二進位制檔案每次改動串起來,也就是隻知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統不知道,也沒法知道。
不幸的是,Microsoft的Word格式是二進位制格式,因此,版本控制系統是沒法跟蹤Word檔案的改動的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統,就要以純文字方式編寫檔案。
因為文字是有編碼的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強烈建議使用標準的UTF-8編碼,所有語言使用同一種編碼,既沒有衝突,又被所有平臺所支援。
使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文字檔案。原因是Microsoft開發記事本的團隊使用了一個非常弱智的行為來儲存UTF-8編碼的檔案,他們自作聰明地在每個檔案開頭添加了0xefbbbf(十六進位制)的字元,你會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程式一編譯就報語法錯誤,等等,都是由記事本的弱智行為帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!記得把Notepad++的預設編碼設定為UTF-8 without BOM即可:
言歸正傳,現在我們編寫一個readme.txt
檔案,內容如下:
Git is a version control system.
Git is free software.
一定要放到learngit
目錄下(子目錄也行),因為這是一個Git倉庫,放到其他地方Git再厲害也找不到這個檔案。
和把大象放到冰箱需要3步相比,把一個檔案放到Git倉庫只需要兩步。
第一步,用命令git add
告訴Git,把檔案新增到倉庫:
$ git add readme.txt
執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有訊息就是好訊息”,說明新增成功。
第二步,用命令git commit
告訴Git,把檔案提交到倉庫:
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+) create mode 100644 readme.txt
簡單解釋一下git commit
命令,-m
後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄裡方便地找到改動記錄。
嫌麻煩不想輸入-m "xxx"
行不行?確實有辦法可以這麼幹,但是強烈不建議你這麼幹,因為輸入說明對自己對別人閱讀都很重要。實在不想輸入說明的童鞋請自行Google,我不告訴你這個引數。
git commit
命令執行成功後會告訴你,1 file changed
:1個檔案被改動(我們新新增的readme.txt檔案);2 insertions
:插入了兩行內容(readme.txt有兩行內容)。
add
,
commit
一共兩步呢?因為
commit
可以一次提交很多檔案,所以你可以多次
add
不同的檔案,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
小結
現在總結一下今天學的兩點內容:
初始化一個Git倉庫,使用git init
命令。
新增檔案到Git倉庫,分兩步:
- 使用命令
git add <file>
,注意,可反覆多次使用,新增多個檔案; - 使用命令
git commit -m <message>
,完成。