
CH01 入門
Git 中文件的三種狀態(tài)
- 已提交(committed):表示數(shù)據(jù)已被安全地存入本地數(shù)據(jù)庫中
- 已修改(modified):表示已經(jīng)改動了文件,但尚未提交到數(shù)據(jù)庫
- 已暫存(staged):表示對已修改文件的當前版本做出了標識,并將加入下一次要提交的快照中
Git 的基本工作流程
(1) 修改工作目錄中的文件
(2) 暫存文件,將這些文件的快照加入暫存區(qū)
(3) 提交暫存區(qū)中的文件,將快照永久地保存在 Git 目錄中

安裝 Git
Windows:下載安裝包,直接安裝
Ubuntu:$ sudo apt-get install git-all
Git 的首次配置
(1) 設置用戶身份
$ git config --global user.name "John Doe"
$ git config --global user.email John Doe@example.com
(2) 設置個人編輯器
$ git config --global core.editor emacs
(3) 檢查個人設置
$ git config --list
?單獨查看某個鍵的值
$ git config user.name
獲取幫助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
CH02 Git 基礎
2.1 獲取 Git 倉庫
(1) 在現(xiàn)有目錄中初始化 Git 倉庫
?只需進入項目目錄并輸入:$ git init
(2) 克隆現(xiàn)有倉庫
?自動創(chuàng)建新目錄$ git clone [url]
?克隆到已有目錄$ git clone [url] [dir_name]
2.2 在 Git 倉庫中記錄變更
(1) 查看當前文件狀態(tài)
?$ git status
(2) 跟蹤新文件
?$ git add [file_name]
(3) 暫存已修改的文件
?$ git add [modify_file_name]
?把 git add 命令看成“添加內(nèi)容到下一次提交中”
(4) 顯示更簡潔的狀態(tài)信息
?$ git status -s
(5) 忽略文件
?編輯文件.gitignore文件,可參考 https://github.com/github/gitignore
(6) 查看已暫存和位暫存的變更
?$ git diff 將當前工作目錄下的內(nèi)容與暫存區(qū)的內(nèi)容作對比
?$ git diff --staged 查看哪些已暫存的內(nèi)容會進入下一次提交
?$ git diff --cached 查看當前已暫存的更改(與 staged 等效)
(7) 提交變更
?$ git commit 或 git commit -m "message"
(8) 跳過暫存區(qū)
?$ git commit -a
(9) 移除文件
?$ git rm [file_name] 把文件從暫存區(qū)移除
?$ git rm --cached [file_name] 把文件保存在工作目錄,但從暫存區(qū)移除該文件
(10)移動文件(重命名)
$ git mv file_from file_to
2.3 查看提交歷史
$ git log
$ git log -p -2
-p,顯示出每次提交所引入的差異;
-2 參數(shù),只輸出最近的兩次提交
$ git log --stat 查看每個提交的簡要統(tǒng)計信息
$ git log --pretty=oneline
--pretty,更改日志輸出的默認格式
$ git log --pretty=format:"%h - %an, %ar : %s"
$ git log --graph
--graph 選項會用 ASCII 字符形式的簡單圖表來顯示 Git 分支和合并歷史。、
2.4 撤銷操作
$ git commit --amend 修改、修訂上次提交
$ git reset HEAD filename 撤銷己暫存的文件
$ git checkout -- filename 撤銷對文件的修改
2.5 遠程倉庫的使用
CH03 Git 分支機制
3.1 分支機制簡述
Git 的分支只不過是一個指向每次提交的輕量級的可移動指針。Git 的默認分支名稱是 master。
$ git branch branch_name 創(chuàng)建新分支
$ git checkout branch_name 切換分支
3.2 基本的分支與合并操作
$ git checkout -b branch_name 創(chuàng)建并切換到新分支
$ git merge branch_name 將 branch_name 分支合并到當前分支
$ git mergetool 圖形化沖突處理解決工具
3.3 分支管理
$ git branch 獲得當前所有分支簡短列表
-v 查看每個分支上的最新提交
-- merged 篩選已并入當前分支的所有分支
--no-merged 篩選尚未并入當前分支的所有分支
$ git branch -d branch_name 刪除分支
-D 強制刪除
3.4 與分支有關(guān)的工作流
長期分支
主題分支
3.5 遠程分支
$ git fetch origin 與服務器同步
$ git push (origin) (branch) 推送本地分支到遠程倉庫
$ git checkout --track [remotename]/[branch] 跟蹤遠程分支
$ git branch -vv 查看已經(jīng)設置了哪些跟蹤分支
$ git pull 讀取上游服務器和分支上的數(shù)據(jù),并嘗試將遠程分支上的修改合并到本地
$ git push origin --delete branch_name 刪除遠程分支
$ git rebase branch_name 變基,把某個分支上所有提交的更改在另一個分支上重現(xiàn)一遍。