-
1. 起步
-
2. Git 基礎
-
3. Git 分支
-
4. 伺服器上的 Git
- 4.1 協議
- 4.2 在伺服器上部署 Git
- 4.3 生成 SSH 公鑰
- 4.4 架設伺服器
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方託管服務
- 4.10 小結
-
5. 分散式 Git
-
A1. 附錄 A: Git 在其他環境
- A1.1 圖形介面
- A1.2 Visual Studio 中的 Git
- A1.3 Visual Studio Code 中的 Git
- A1.4 IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine 中的 Git
- A1.5 Sublime Text 中的 Git
- A1.6 Bash 中的 Git
- A1.7 Zsh 中的 Git
- A1.8 PowerShell 中的 Git
- A1.9 小結
-
A2. 附錄 B: 在應用程式中嵌入 Git
-
A3. 附錄 C: Git 命令
2.1 Git 基礎 - 獲取 Git 倉庫
如果你只想閱讀一章來入門 Git,那麼就是這一章。本章涵蓋了你需要做的絕大多數事情的基本命令。讀完本章,你應該能夠配置和初始化一個倉庫,開始和停止跟蹤檔案,以及暫存和提交更改。我們還會告訴你如何設定 Git 來忽略某些檔案和檔案模式,如何快速輕鬆地撤銷錯誤,如何瀏覽專案的歷史記錄並檢視提交之間的差異,以及如何從遠端倉庫推送和拉取。
獲取 Git 倉庫
你通常透過以下兩種方式之一來獲取 Git 倉庫:
-
你可以將一個當前未進行版本控制的本地目錄,變成一個 Git 倉庫,或者
-
你可以從別處 克隆 一個已有的 Git 倉庫。
無論哪種方式,你最終都會在本地機器上得到一個 Git 倉庫,並準備好進行工作。
在現有目錄中初始化倉庫
如果你有一個目前未進行版本控制的專案目錄,並且想開始用 Git 來控制它,你首先需要進入該專案的目錄。如果你之前從未做過,這取決於你執行的系統,操作方式會略有不同:
對於 Linux
$ cd /home/user/my_project
對於 macOS
$ cd /Users/user/my_project
對於 Windows
$ cd C:/Users/user/my_project
然後輸入
$ git init
這會建立一個名為 .git 的新子目錄,其中包含你所有必需的倉庫檔案——一個 Git 倉庫的骨架。此時,你的專案中的任何內容都還沒有被跟蹤。有關你剛剛建立的 .git 目錄中具體包含哪些檔案的更多資訊,請參閱 Git 內部原理。
如果你想開始版本控制已有的檔案(而不是一個空目錄),你應該先跟蹤這些檔案並進行一次初始提交。你可以通過幾個 git add 命令來指定要跟蹤的檔案,然後執行 git commit 來完成:
$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'
我們稍後會詳細介紹這些命令的作用。此時,你就擁有了一個包含已跟蹤檔案和一次初始提交的 Git 倉庫。
克隆現有倉庫
如果你想獲取一個已有的 Git 倉庫的副本——例如,一個你想貢獻其程式碼的專案——你需要使用的命令是 git clone。如果你熟悉其他版本控制系統(如 Subversion),你會注意到這個命令是“clone”而不是“checkout”。這是一個重要的區別——Git 不僅獲取一個工作副本,而是接收伺服器上幾乎所有資料的完整副本。當你執行 git clone 時,預設會拉取專案歷史中每個檔案的每個版本。事實上,如果你的伺服器磁碟損壞了,你幾乎可以用任何一個客戶端的克隆來恢復伺服器到克隆時的狀態(你可能會丟失一些伺服器端的鉤子等,但所有版本化的資料都會在那裡——更多細節請參閱 在伺服器上設定 Git)。
你可以透過 git clone <url> 來克隆一個倉庫。例如,如果你想克隆一個名為 libgit2 的 Git 可連結庫,你可以這樣做:
$ git clone https://github.com/libgit2/libgit2
這會建立一個名為 libgit2 的目錄,在其內部初始化一個 .git 目錄,拉取該倉庫的所有資料,並檢出最新版本的可工作副本。如果你進入剛剛建立的 libgit2 目錄,你會在裡面看到專案檔案,準備好進行開發或使用。
如果你想將倉庫克隆到一個名為 libgit2 以外的目錄,你可以將新目錄名作為附加引數指定:
$ git clone https://github.com/libgit2/libgit2 mylibgit
這個命令與前一個命令作用相同,但目標目錄名為 mylibgit。
Git 支援多種傳輸協議。前面的例子使用了 https:// 協議,但你也可能看到 git:// 或 user@server:path/to/repo.git,它使用 SSH 傳輸協議。在伺服器上設定 Git 將介紹伺服器可以設定的所有訪問你 Git 倉庫的選項以及它們的優缺點。