$ mkdir git-tutorial # 新建目錄 $ cd git-tutorial # 進入目錄 $ git init # 初始化倉庫
.git
目錄(該目錄存儲着管理當前目錄內容所需的倉庫數據);$ git status # 顯示 Git 倉庫的狀態
$ git add README.md # 向暫存區添加文件
$ git commit -m "First commit" # 保存倉庫的歷史記錄
-m
參數後面的字符串稱做提交信息,是對這個提交的概述;-m
,直接執行 git commit
命令。$ git log # 查看提交日誌 $ git log --pretty=short # 只顯示提交信息的第一行 $ git log README.md # 只顯示指定目錄、文件的日誌(README.md) $ git log -p # 顯示文件的改動 $ git log -p README.md # 查看README.md 文件的提交日子以及提交先後的差異
$ git diff # 查看工做樹和暫存區的差異 $ git diff HEAD # 查看工做樹和最新提交的差異
PS:不妨養成這樣一個好習慣:在執行git commit
命令以前先執行git diff HEAD
命令,查看本次提交與上次提交之間有什麼差異,等確認完畢後再進行提交。這裏的HEAD
是指向當前分支中最新一次提交的指針。
master -----> master |---> feature-A |---> fix-B
master
分支是 Git 默認建立的分支,基本上全部開發都是以這個分支爲中心進行的;master
分支合併。/---\ fix-B master ---------------> master \--------/ feature-A
$ git branch # 顯示分支一覽表 * master # master 分支左側標有 `*`(星號),表示當前所在分支
$ git checkout -b # 建立、切換分支 $ git checkout -b feature-A # 切換到 feature-A 分支並進行提交(下面兩條命令等同該條命令) $ git branch feature-A # 建立 feature-A 分支 $ git checkout feature-A # 將當前分支切換爲 feature-A 分支 $ git checkout master # 切換到 master 分支 $ git checkout - # 切換回上一分支
特性(Topic)分支
,即集中實現單一特性(主題),除此以外不進行任何做業的分支;master
分支擔當;master
分支合併。只要保持這樣一個開放流程,就能保證 master
分支能夠隨時供人查看。這樣一來,其餘開發者也能夠放心大膽地從 master
分支建立新的特性分支;master
分支做爲主幹分支;下面演示如何將分支 feature-A
合併到 master
:git
首先,切換到 master
分支:github
$ git checkout master Switch to branch 'master'
而後合併 feature-A
分支:編輯器
爲了在歷史記錄中明確下本次分支合併,咱們須要建立合併提交。所以在合併時加上
--no-ff
參數。
$ git merge --no-ff feature-A
隨後編輯器會啓動,用於錄入合併提交的信息。隨後,feature-A
分支的內容就合併到 master
分支中了。學習
$ git log --graph # 用圖表形式輸出提交日誌
該命令能夠清楚看到特性分支的建立以及合併。
/------> fix-B master ---------------> master \------------/ feature-A
$ git reset --hard fd0cbf0d4a234f67sjdkfjklbj6786a # 回溯歷史版本 HEAD is now at fd0cbf0 Add index
git reset --hard
命令,只要提供目標時間點的哈希值,就能夠徹底恢復至該時間點的狀態;git reflog
命令能夠查看當前倉庫執行過的操做日誌,只要不進行 Git 的 GC
(Garbage Collection,垃圾回收),就能夠經過日誌隨意調取近期的歷史狀態,就像給時間機器指定一個時間點,在過去將來中自由穿梭通常;git reflog
命令恢復到原先的狀態,請務必牢記!(由於 git reflog
命令打印出來的操做前面都有版本哈希碼,能夠拿來使用)$ git commit -amend # 修改提交信息
$ git rebase -i # 壓縮歷史
$ git remove add origin git@github.com:github-book/git-tutorial.git # 添加遠程倉庫
$ git push -u origin master # 推送至 master 分支 $ git checkout -b feature-D # 建立 feature-D 分支 $ git push -u origin feature-D # 推送至 feature-D 分支
-u
能夠在推送的同時,將 origin
倉庫的 master
分支設置爲本地倉庫當前分支的 upstream
(上游);git pull
命令從遠程倉庫獲取內容時,本地倉庫的這個分支就能夠直接從 origin
的 master
分支獲取內容,省去了另外添加參數的麻煩。$ git clone git@github.com:github-book/git-tutorial.git # 獲取遠程倉庫 $ git branch -a # 查看當前分支的相關信息
PS:參數
-a
能夠同時顯示本地倉庫和遠程倉庫的分支信息。
git pull origin feature-D # 獲取最新的遠程倉庫分支