Git新手教程-從頭建立倉庫(三)

AndyJennifer發表於2019-10-11

前言

在上篇文章中,我們學習了版本控制系統的一些專業術語,我們在計算機上也安裝了Git,併為Git做了一些初始配置,比如新增點選郵件,名字。及配置預設的Git的預設編輯器。在本篇文章中,我們將學習倉庫的建立。在該篇文章中,我們不僅將學習如下三個命令git initgit clone、和git status,還將會學習該命令在IntelliJ IDEA or Android Sutdio中圖形介面的對應操作。

在具體閱讀文章之前,我們先簡單的瞭解一下這三個命令的作用。

  • git init: 可以讓我們在計算機上從頭建立全新倉庫
  • git clone: 可以讓我們遠端拷貝倉庫到本地
  • git sataus: 可以讓我們檢視倉庫的狀態

建立倉庫

在對倉庫進行commit或執行其他操作之前,我們需要建立一個實際存在的倉庫,要使用Git新建倉庫,我們需要使用 git init 命令。

init 是英語單詞 "intializ” 的簡稱。

當使用 git init 命令時,我們在命令列中會得到如下提示:

git的init命令使用.jpg

在上圖中我的倉庫的地址為 documents/GitTest/GitTestProject ,當然你也可以根據你自己目錄及專案名稱來建立Git倉庫。

git init 命令的作用

當我們使用 git init 命令建立倉庫後,我們能在當前目錄下得到一個隱藏的 .git 資料夾,該資料夾下的內容記錄了我們所有的commit,及其他資訊。該檔案下的內容如下所示:

Git目錄結構.jpg

如果你已經使用Git管理你的專案,請不要直接修改.git資料夾下的任何檔案。該檔案下的內容是Git自身進行維護的。如果更改,會導致丟失一些重要的內容。切記不要刪除、編輯這些檔案。

該目錄下的各個檔案的作用大致如下:

  • branchs 目錄 - 儲存了所有專案有關的分支資訊。
  • config 檔案 - 儲存了所有與專案有關的配置設定。 Git 會檢視 Git 目錄下你當前所使用倉庫對應的配置檔案(.git/config)中的配置值。這些值僅適用於當前倉庫。 例如,假設你將 Git 全域性配置為使用你的個人電子郵箱。如果你想針對某個專案使用你的工作郵箱,則此項更改會被新增到該檔案中。
  • Head 檔案 - 指示當前Git專案處於哪個分支。
  • description 檔案 - 此檔案僅用於 GitWeb程式使用,我們無需關係。
  • hooks 目錄 - 我們會在此處放置客戶端或伺服器端指令碼,以便用來連線到 Git 的不同生命週期事件
  • info 目錄 - 目錄包含一個全域性性排除(global exclude)檔案,用以放置那些不希望被記錄在 .gitignore 檔案中的忽略模式(ignored patterns)
  • objects 目錄 - 此目錄將儲存我們提交的所有commit
  • refs 目錄 - 此目錄儲存了指向 commit 的指標(通常是“分支”和“標籤”)

關於branch(分支)、Head我們會在接下來的文章中進行介紹,其他的檔案或目錄我們可以不用關心,當然如果你想了解更多的內容,可以觀看官方文件下:

克隆現有倉庫

當然除了使用 git init 來建立倉庫以外,我們還可以通過 git clone 命令來克隆現有的專案。通過 git clone 命令我們可以完全拷貝一個專案。而被克隆的專案完全是另一個專案的副本。

在克隆任何專案之前,確保當前命令列以及在正確的目錄下,克隆專案會新建一個目錄,並將克隆的Git倉庫放入其中。在Git中是不允許建立 巢狀的Git倉庫 。因此當你使用 git clone 時,確保當前命令列所在的工作目錄沒有位於Git倉庫中。

下面我們就使用 git clone 命令,來克隆我們的專案吧。克隆一個專案的具體步驟為:輸入命令 git clone,然後輸入你要克隆的 Git 倉庫的路徑。這裡以我的SimpleEyes專案(一個仿開眼的kotlin專案)為例。該專案路徑為:https://github.com/AndyJennifer/SimpleEyes

git clone https://github.com/AndyJennifer/SimpleEyes
複製程式碼

當然除了使用Http協議克隆專案以外。我們還可以使用本地協議、SSH協議與Git協議。這裡以Git協議為例:

git clone git@github.com:AndyJennifer/SimpleEyes.git
複製程式碼

想要了解更多Git使用的協議可以檢視官方文件-->伺服器上的-Git-協議

git clone 輸出結果的簡要說明

輸入命令後效果如下所示:

git_clone展示.gif

這裡我們簡單的介紹下 git clone 顯示的輸出結果。

第一行是"Cloning into 'SimpleEyes'…"。表示當前 Git 正在建立一個目錄(名稱與我們要克隆的專案一樣),並將倉庫放在對應專案中。其餘輸出結果基本都是驗證資訊——也就是統計遠端倉庫的專案數以及當前的下載百分比。

克隆專案並使用不同的名稱

需要注意的是通過 git clone 命令克隆專案,預設情況下,Git會把路徑最後一級目錄名作為新克隆專案的目錄名(如果你的最後一級目錄名包括.git,會將該字尾去掉)。如果說我們自定義專案名稱呢?粗暴而又簡單的方式是找到我們克隆專案的地址,手動重新命名即可。但是我們不採用這種粗暴的方法。我們可以 使用如下命令:

git clone https://github.com/AndyJennifer/SimpleEyes  MyProject
複製程式碼

對,就是如此的簡單,就是在原有的命令中新增空格,並輸入我們自定義的專案名稱就可以啦。

判斷倉庫的狀態

使用 git status 命令可以顯示工作目錄和暫存區的狀態(在上篇文章我們曾經提到過,Git的工作流程主要圍繞三個部分,工作區,暫存區與倉庫區)。它可以讓你看到哪些更改已經被轉移,哪些沒有轉移,哪些檔案沒有被Git跟蹤。進入我們建立的Git倉庫,並輸入 git status 時,我們能得到下圖的輸出結果:

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)
複製程式碼

從輸出結果中,我們可以得到兩條資訊:

  • On branch master - 這部分告訴我們 Git 位於 master 分支上。關於"master"分支(也就是預設分支)。我們將會在後續的分支文章中介紹。
  • No commits yet - 表示專案中沒有任何提交,關於commit我們也會在下文進行介紹。
  • nothing to commit (create/copy files and use "git add" to track) –表示沒有任何的提交資訊,我們可以通過git add新增檔案,使Git能夠跟蹤。

注意:如果是第一次使用Git,我們一定要常常使用 git status 命令來檢視倉庫中檔案或目錄的狀態。

關於更多的 git status 的更多內容,我們可以檢視一下連結:

IntelliJ IDEA or Android Sutdio 圖形化介面的使用

瞭解了這三個命令後,我們來了解一下,在 IntelliJ IDEAor Android Sutdio中Git儲存與清理的圖形化介面的對應流程。雖然命令列非常牛逼,但是有時候我們也想偷個懶,對吧。讓我們看看在IntelliJ IDEAor Android Sutdio中怎樣操作吧。

配置 Git 環境

在實際建立建立倉庫之前,我們需要在我們的 IDEA 中配置 Git ,我們需要 IDEA 中依次點選 Preferences -> Version Control -> Git ,然後在 Path To Git executable 上輸入安裝 Git 的位置,點選右側的 Test 按鈕,如果成功彈出 Git executed successfully 彈框,說明配置成功,如下所示:

idea_配置_git.png

如果你不知道 Git 的安裝位置。

  • Mac 作業系統:終端中輸入 which git
  • Windows 作業系統:命令列中輸入 where git

git init 的使用

在編譯器中,我們只要選擇工具欄中的VCS -> import into Version Control -> Creat Git Repository 就可以從建立我自己的倉庫啦。

git-init展示.png

通過上述方式,最終會選擇一個倉庫目錄地址。這裡由於篇幅限制就不具體描述啦。

git clone的使用

git clone 在IDEA中,有兩種操作流程如下圖所示:

第一種:

git-clone方式第一種.png

第二種:

git-clonet方式第二種.png

以上兩種方式都可以 clone 專案,只是叫法不同而已。當然這兩個操作點選之後會走到如下流程:

clone介面展示.png

就是這麼簡單,和我們使用命令列是一樣的~

git status

在編譯器中沒有視覺化的操作介面來完全顯示 git status 命令所執行的結果,而是以一種非常直觀的顏色來表示當前倉庫中的檔案狀態。比如

  • 紅色:表示當前檔案或目錄沒有被跟蹤或與其他檔案衝突。
  • 綠色:表示當前檔案或目錄已經被新增到倉庫中了。
  • 藍色:表示被新增到倉庫中的檔案或目錄被修改或移動。
  • 橙色:表示被忽略的檔案。
  • 白色:表示沒有任何更改。

當然我們可以通過編譯器底部的Version Control中的local Changes檢視我們當前的倉庫狀態。如下圖所示,

git-status視覺化介面展示.png

最後

站在巨人的肩膀上,才能看的更遠~

相關文章