鍍金池/ 教程/ Java/ 創(chuàng)建版本庫
操作標簽
多人協(xié)作
解決沖突
Git 的誕生
工作區(qū)和暫存區(qū)
搭建 Git 服務器
Bug 分支
配置別名
從遠程庫克隆
分支
添加遠程庫
分支管理策略
撤銷修改
安裝 Git
管理修改
生成 SSH key
GitHub
倉庫狀態(tài)
忽略特殊文件
刪除文件
Feature 分支
創(chuàng)建與合并分支
創(chuàng)建版本庫
創(chuàng)建標簽
版本回退
集中式 vs 分布式

創(chuàng)建版本庫

什么是版本庫呢?版本庫又名倉庫,英文名 repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被 Git 管理起來,每個文件的修改、刪除,Git 都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

所以,創(chuàng)建一個版本庫非常簡單,首先,選擇一個合適的地方,創(chuàng)建一個空目錄:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit

pwd命令用于顯示當前目錄。在我的 Mac 上,這個倉庫位于/Users/michael/learngit。

如果你使用 Windows 系統(tǒng),為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。

第二步,通過git init命令把這個目錄變成 Git 可以管理的倉庫:

$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/

瞬間 Git 就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發(fā)現(xiàn)當前目錄下多了一個.git的目錄,這個目錄是 Git 來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把 Git 倉庫給破壞了。

如果你沒有看到.git目錄,那是因為這個目錄默認是隱藏的,用ls -ah命令就可以看見。

http://wiki.jikexueyuan.com/project/git-tutorial/images/git-init.gif" alt="" />

也不一定必須在空目錄下創(chuàng)建 Git 倉庫,選擇一個已經(jīng)有東西的目錄也是可以的。不過,不建議你使用自己正在開發(fā)的公司項目來學習 Git,否則造成的一切后果概不負責。

把文件添加到版本庫

首先這里再明確一下,所有的版本控制系統(tǒng),其實只能跟蹤文本文件的改動,比如 TXT 文件,網(wǎng)頁,所有的程序代碼等等,Git 也不例外。版本控制系統(tǒng)可以告訴你每次的改動,比如在第5行加了一個單詞“Linux”,在第8行刪了一個單詞“Windows”。而圖片、視頻這些二進制文件,雖然也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化,只能把二進制文件每次改動串起來,也就是只知道圖片從 100KB 改成了 120KB,但到底改了啥,版本控制系統(tǒng)不知道,也沒法知道。

不幸的是,Microsoft 的 Word 格式是二進制格式,因此,版本控制系統(tǒng)是沒法跟蹤 Word 文件的改動的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫文件。

因為文本是有編碼的,比如中文有常用的 GBK 編碼,日文有 Shift_JIS 編碼,如果沒有歷史遺留問題,強烈建議使用標準的 UTF-8 編碼,所有語言使用同一種編碼,既沒有沖突,又被所有平臺所支持。

使用 Windows 的童鞋要特別注意:

千萬不要使用 Windows 自帶的記事本編輯任何文本文件。原因是 Microsoft 開發(fā)記事本的團隊使用了一個不合理的方法來保存 UTF-8 編碼的文件,他們在每個文件開頭添加了 0xefbbbf(十六進制)的字符,你會遇到很多不可思議的問題,比如,網(wǎng)頁第一行可能會顯示一個“?”,明明正確的程序一編譯就報語法錯誤,等等,都是由記事本的弱智行為帶來的。建議你下載Notepad++代替記事本,不但功能強大,而且免費!記得把 Notepad++ 的默認編碼設置為 UTF-8 without BOM 即可:

http://wiki.jikexueyuan.com/project/git-tutorial/images/git5.jpg" alt="" />

言歸正傳,現(xiàn)在我們編寫一個 readme.txt 文件,內(nèi)容如下:

Git is a version control system.
Git is free software.

一定要放到 learngit 目錄下(子目錄也行),因為這是一個 Git 倉庫,放到其他地方 Git 再厲害也找不到這個文件。

和把大象放到冰箱需要 3 步相比,把一個文件放到 Git 倉庫只需要兩步。

第一步,用命令git add告訴 Git,把文件添加到倉庫:

$ git add readme.txt

執(zhí)行上面的命令,沒有任何顯示,這就對了,Unix 的哲學是“沒有消息就是好消息”,說明添加成功。

第二步,用命令git commit告訴 Git,把文件提交到倉庫:

$ git commit -m "wrote a readme file"
[master (root-commit) cb926e7] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

http://wiki.jikexueyuan.com/project/git-tutorial/images/add-and-commit.gif" alt="" />

簡單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。

嫌麻煩不想輸入-m "xxx"行不行?確實有辦法可以這么干,但是強烈不建議你這么干,因為輸入說明對自己對別人閱讀都很重要。實在不想輸入說明的童鞋請自行 Google,我不告訴你這個參數(shù)。

git commit命令執(zhí)行成功后會告訴你,1 個文件被改動(我們新添加的 readme.txt 文件),插入了兩行內(nèi)容(readme.txt 有兩行內(nèi)容)。

為什么 Git 添加文件需要 add,commit 一共兩步呢?因為 commit 可以一次提交很多文件,所以你可以多次 add 不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

小結(jié)

現(xiàn)在總結(jié)一下今天學的兩點內(nèi)容:

初始化一個 Git 倉庫,使用git init命令。

添加文件到 Git 倉庫,分兩步:

第一步,使用命令git add <file>,注意,可反復多次使用,添加多個文件;

第二步,使用命令git commit,完成。

上一篇:倉庫狀態(tài)下一篇:刪除文件