# 獲取 Git 倉庫
有兩種取得 Git 項目倉庫的方法。第一種是在現有項目或目錄下導入所有文件到 Git 中;第二種是從一個服務器克隆一個現有的 Git 倉庫。
## 在現有目錄中初始化倉庫
如果你打算使用 Git 來對現有的項目進行管理,你只需要進入該項目目錄并輸入:
~~~
$ git init
~~~
該命令將創建一個名為 `.git` 的子目錄,這個子目錄含有你初始化的 Git 倉庫中所有的必須文件,這些文件是 Git 倉庫的骨干。但是,在這個時候,我們僅僅是做了一個初始化的操作,你的項目里的文件還沒有被跟蹤。(參見 [Chapter?10](#) 來了解更多關于到底 `.git` 文件夾中包含了哪些文件的信息。)
如果你是在一個已經存在文件的文件夾(而不是空文件夾)中初始化 Git 倉庫來進行版本控制的話,你應該開始跟蹤這些文件并提交。你可通過 `git add` 命令來實現對指定文件的跟蹤,然后執行 `git commit` 提交:
~~~
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
~~~
稍后我們再逐一解釋每一條指令的意思。現在,你已經得到了一個實際維護(或者說是跟蹤)著若干個文件的 Git 倉庫。
## 克隆現有的倉庫
如果你想獲得一份已經存在了的 Git 倉庫的拷貝,比如說,你想為某個開源項目貢獻自己的一份力,這時就要用到 `git clone` 命令。如果你對其它的 VCS 系統(比如說Subversion)很熟悉,請留心一下你所使用的命令是"clone"而不是"checkout"。這是 Git 區別于其它版本控制系統的一個重要特性,Git 克隆的是該 Git 倉庫服務器上的幾乎所有數據,而不是僅僅復制完成你的工作所需要文件。當你執行 `git clone` 命令的時候,默認配置下遠程 Git 倉庫中的每一個文件的每一個版本都將被拉取下來。事實上,如果你的服務器的磁盤壞掉了,你通常可以使用任何一個克隆下來的用戶端來重建服務器上的倉庫(雖然可能會丟失某些服務器端的掛鉤設置,但是所有版本的數據仍在,詳見 [“在服務器上搭建 Git”](#) )。
克隆倉庫的命令格式是 `git clone [url]` 。比如,要克隆 Git 的可鏈接庫 libgit2,可以用下面的命令:
~~~
$ git clone https://github.com/libgit2/libgit2
~~~
這會在當前目錄下創建一個名為 “libgit2” 的目錄,并在這個目錄下初始化一個 `.git` 文件夾,從遠程倉庫拉取下所有數據放入 `.git` 文件夾,然后從中讀取最新版本的文件的拷貝。如果你進入到這個新建的 `libgit2` 文件夾,你會發現所有的項目文件已經在里面了,準備就緒等待后續的開發和使用。如果你想在克隆遠程倉庫的時候,自定義本地倉庫的名字,你可以使用如下命令:
~~~
$ git clone https://github.com/libgit2/libgit2 mylibgit
~~~
這將執行與上一個命令相同的操作,不過在本地創建的倉庫名字變為 `mylibgit`。
Git 支持多種數據傳輸協議。上面的例子使用的是 `https://` 協議,不過你也可以使用 `git://` 協議或者使用 SSH 傳輸協議,比如 `user@server:path/to/repo.git` 。[“在服務器上搭建 Git”](#)將會介紹所有這些協議在服務器端如何配置使用,以及各種方式之間的利弊。
- 前言
- Scott Chacon 序
- Ben Straub 序
- 獻辭
- 貢獻者
- 引言
- 1. 起步
- 1.1 關于版本控制
- 1.2 Git 簡史
- 1.3 Git 基礎
- 1.4 命令行
- 1.5 安裝 Git
- 1.6 初次運行 Git 前的配置
- 1.7 獲取幫助
- 1.8 總結
- 2. Git 基礎
- 2.1 獲取 Git 倉庫
- 2.2 記錄每次更新到倉庫
- 2.3 查看提交歷史
- 2.4 撤消操作
- 2.5 遠程倉庫的使用
- 2.6 打標簽
- 2.7 Git 別名
- 2.8 總結
- 3. Git 分支
- 3.1 分支簡介
- 3.2 分支的新建與合并
- 3.3 分支管理
- 3.4 分支開發工作流
- 3.5 遠程分支
- 3.6 變基
- 3.7 總結
- 4. 服務器上的 Git
- 4.1 協議
- 4.2 在服務器上搭建 Git
- 4.3 生成 SSH 公鑰
- 4.4 配置服務器
- 4.5 Git 守護進程
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 第三方托管的選擇
- 4.10 總結
- 5. 分布式 Git
- 5.1 分布式工作流程
- 5.2 向一個項目貢獻
- 5.3 維護項目
- 5.4 總結
- 6. GitHub
- 6.1 賬戶的創建和配置
- 6.2 對項目做出貢獻
- 6.3 維護項目
- 6.4 管理組織
- 6.5 腳本 GitHub
- 6.6 總結
- 7. Git 工具
- 7.1 選擇修訂版本
- 7.2 交互式暫存
- 7.3 儲藏與清理
- 7.4 簽署工作
- 7.5 搜索
- 7.6 重寫歷史
- 7.7 重置揭密
- 7.8 高級合并
- 7.9 Rerere
- 7.10 使用 Git 調試
- 7.11 子模塊
- 7.12 打包
- 7.13 替換
- 7.14 憑證存儲
- 7.15 總結
- 8. 自定義 Git
- 8.1 配置 Git
- 8.2 Git 屬性
- 8.3 Git 鉤子
- 8.4 使用強制策略的一個例子
- 8.5 總結
- 9. Git 與其他系統
- 9.1 作為客戶端的 Git
- 9.2 遷移到 Git
- 9.3 總結
- 10. Git 內部原理
- 10.1 底層命令和高層命令
- 10.2 Git 對象
- 10.3 Git 引用
- 10.4 包文件
- 10.5 引用規格
- 10.6 傳輸協議
- 10.7 維護與數據恢復
- 10.8 環境變量
- 10.9 總結
- A. 其它環境中的 Git
- A1.1 圖形界面
- A1.2 Visual Studio 中的 Git
- A1.3 Eclipse 中的 Git
- A1.4 Bash 中的 Git
- A1.5 Zsh 中的 Git
- A1.6 Powershell 中的 Git
- A1.7 總結
- B. 將 Git 嵌入你的應用
- A2.1 命令行 Git 方式
- A2.2 Libgit2
- A2.3 JGit
- C. Git 命令
- A3.1 設置與配置
- A3.2 獲取與創建項目
- A3.3 快照基礎
- A3.4 分支與合并
- A3.5 項目分享與更新
- A3.6 檢查與比較
- A3.7 調試
- A3.8 補丁
- A3.9 郵件
- A3.10 外部系統
- A3.11 管理
- A3.12 底層命令