瞭解並創建Git倉庫,以及添加文件到倉庫

先來理解一個概念,repository。你可以簡單將它理解成一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。這個目錄通常稱爲倉庫,或者叫版本庫。

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

1 git init

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

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

初始化後,在當前目錄下會出現一個名爲 .git 的目錄,所有 Git 需要的數據和資源都存放在這個目錄中。不過目前,僅僅是按照既有的結構框架初始化好了裏邊所有的文件和目錄,但我們還沒有開始跟蹤管理項目中的任何一個文件。

倉庫的文件結構

我們看看這個目錄下的文件結構:

01 $ ls
02 HEAD
03 config
04 description
05 index
06 branches/
07 hooks/
08 info/
09 objects/
10 refs/

該目錄下有可能還有其他文件,但這是一個全新的 git init 生成的庫,所以默認情況下這些就是你能看到的結構。新版本的 Git 不再使用 branches 目錄,description 文件僅供 GitWeb 程序使用,所以不用關心這些內容。config 文件包含了項目特有的配置選項,info 目錄保存了一份不希望在 .gitignore 文件中管理的忽略模式 (ignored patterns) 的全局可執行文件。hooks 目錄保存了客戶端或服務端鉤子腳本。

另外還有四個重要的文件或目錄:HEAD 及 index 文件,objects 及 refs 目錄。這些是 Git 的核心部分。

  • objects 目錄存儲所有數據內容
  • refs 目錄存儲指向數據 (分支) 的提交對象的指針
  • HEAD 文件指向當前分支
  • index 文件保存了暫存區域信息

添加文件到倉庫

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

現在我們編寫一個readme.txt文件,內容如下:

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

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

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

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

1 $ git add readme.txt

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

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

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

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

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

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

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

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

小結

現在總結一下今天學的兩點內容:

1. 初始化一個Git倉庫,使用git init命令。並且瞭解到一個倉庫的文件組成結構。

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

  • 第一步,使用命令git add ,注意,可反覆多次使用,添加多個文件;
  • 第二步,使用命令git commit,完成。
發佈了166 篇原創文章 · 獲贊 138 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章