# 6.1.1 Git基礎操作
### 6.1.1 Git基礎操作
#### 基本流程
使用Git的基本流程如下:

1. 首先你要決定是新建一個Git倉庫(在本地),還是clone一個已有的Git倉庫(到本地)。一個Git**倉庫(Repository)**保存著一個項目的全部版本數據,包括歷史版本、提交(commit)紀錄等等。一個Git倉庫,不論是在本地還是遠程,都保存著一個項目的全部、完整的版本數據——這是Git作為分布式版本管理系統、不依賴中心服務器的一個特征。[git init](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93#%E5%9C%A8%E7%8E%B0%E6%9C%89%E7%9B%AE%E5%BD%95%E4%B8%AD%E5%88%9D%E5%A7%8B%E5%8C%96%E4%BB%93%E5%BA%93)和[git clone](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7%E5%8F%96-Git-%E4%BB%93%E5%BA%93#%E5%85%8B%E9%9A%86%E7%8E%B0%E6%9C%89%E7%9A%84%E4%BB%93%E5%BA%93)命令分別用來新建或是clone一個Git倉庫。
2. 有了Git倉庫,你就可以對(倉庫所管理的)項目進行編輯了。你可以更新若干文件,然后一次提交(commit)。一個最佳實踐是:每次提交只解決一個問題或者新增一個功能;把若干個問題的解決或者若干新增功能在一個commit里提交往往是一種不佳的做法。
3. 在commit之前你需要把待commit的文件、目錄標記出來,使用[git add](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#%E8%B7%9F%E8%B8%AA%E6%96%B0%E6%96%87%E4%BB%B6)標記新增或者修改的文件,用[git rm](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#%E7%A7%BB%E9%99%A4%E6%96%87%E4%BB%B6)標記刪除的文件。你可以用[git status](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#%E6%A3%80%E6%9F%A5%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E7%8A%B6%E6%80%81)命令來查看已經標記了哪些文件以及有哪些文件更改了但尚未被標記。
4. 最后,使用[git commit](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#%E6%8F%90%E4%BA%A4%E6%9B%B4%E6%96%B0)命令完成一次提交。
5. 你提交的更改保存在本地的Git倉庫中,你可能還需要把它同步到遠程的另一個Git倉庫,這時你要用到[git push](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E7%9A%84%E4%BD%BF%E7%94%A8#%E6%8E%A8%E9%80%81%E5%88%B0%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93)命令。
另外,[git log](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2)命令可以查看提交(commit)的歷史紀錄,[git diff](https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#%E6%9F%A5%E7%9C%8B%E5%B7%B2%E6%9A%82%E5%AD%98%E5%92%8C%E6%9C%AA%E6%9A%82%E5%AD%98%E7%9A%84%E4%BF%AE%E6%94%B9)命令可以查看歷史版本差異。
#### 分支(branching)與合并(merging)
當你新建或者clone一個Git倉庫時,缺省就在master分支上。你可以通過`git branch`命令建立新的分支(也可以用它刪除或者查看現有的分支),然后通過`git checkout`命令切換當前工作的分支;你也可以通過[git checkout -b](https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6#%E6%96%B0%E5%BB%BA%E5%88%86%E6%94%AF)命令一步新建并切換到一個新的分支上。當你在分支上的工作完成以后,你可能需要把它合并(merge)到另一個分支(比如master)上,這時你需要[git merge](https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6#%E5%88%86%E6%94%AF%E7%9A%84%E5%90%88%E5%B9%B6)或者[git rebase](https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA)命令。
Git的分支與合并操作十分輕便、靈活,可以據此設計靈活多樣的開發工作流程,這里是一個[參考](https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E6%B5%81)。
#### 更多Git命令
以上對常用Git命令做了簡要介紹,同時給出了進一步了解的鏈接。它們都出自于[《Pro Git》](https://git-scm.com/book/zh/v2)。但是在你正式開始學習Git之前,我建議你先了解一下[Git的基本原理](internals.html)——這會對你學習Git起到事倍功半的效果,同時它也是深刻領會Git的關鍵。
- 前言
- 1 Web概述
- 1.1 什么是Web
- 1.2 超文本和超鏈接
- 1.3 URL
- 1.4 DNS
- 1.5 HTTP
- 1.5.1 客戶端請求
- 1.5.2 服務器應答
- 1.5.3 進一步了解HTTP
- 1.6 HTTPS
- 2 Web瀏覽器
- 2.1 HTML
- 2.1.1 文檔類型聲明
- 2.1.2 標簽和屬性
- 2.1.3 文檔結構
- 2.1.4 DOM
- 2.1.5 進一步了解HTML
- 2.2 CSS
- 2.2.1 樣式與樣式表
- 2.2.2 樣式表語法
- 2.2.3 級聯樣式表
- 2.2.4 進一步了解CSS
- 2.3 JavaScript
- 2.3.1 script標簽
- 2.3.2 操縱DOM
- 2.3.3 jQuery
- 2.3.4 進一步了解JavaScript
- 2.4 Ajax
- 2.5 移動設備與響應式Web設計
- 3 Web服務器
- 3.1 方法與資源
- 3.2 狀態代碼
- 3.3 靜態內容與動態內容
- 3.4 編程語言與技術
- 3.4.1 CGI
- 3.4.2 PHP
- 3.4.3 Java
- 3.4.4 Python
- 3.4.5 Ruby
- 3.4.6 Node.js
- 3.5 RESTful Web API
- 3.6 服務器架構
- 3.7 Web緩存
- 3.8 服務器推送
- 4 數據庫
- 4.1 關系型數據庫
- 4.2 NoSQL數據庫
- 5 Web服務器的其他組件
- 5.1 Cron
- 5.2 消息隊列
- 5.3 郵件服務器
- 6 開發工具與技術
- 6.1 Git
- 6.1.1 Git基礎操作
- 6.1.2 Git基本原理
- 6.1.3 進一步了解Git
- 6.2 敏捷開發