Git屬于分散型版本管理系統(tǒng)乃摹。版本管理就是管理更新的歷史記錄讯泣。
安裝Git
Mac和Linux都預裝了Git并炮。
Windows使用msysGit:http://msysgit.github.io/
Use git bash only
初始設置
設置姓名和郵箱地址
git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
將color.ui設置為auto可以讓命令的輸出擁有更高的可讀性
git config --global color.ui auto
設置SSH Key
$ssh-keygen -t rsa -C "email"
之后直接回車鞠值,不用填寫東西矿辽。之后會讓你輸入密碼。然后就生成一個目錄.ssh 蹄殃,里面有兩個文件:id_rsa(私有密鑰) , id_rsa.pub(公開密鑰)携茂,還有一個fingerprint值
把這個SSH放到github上。用公鑰诅岩。先在GitHub上注冊一個用戶讳苦,然后進入account-setting ,把id_rsa.pub的內(nèi)容復制進去就可以了吩谦。
測試OK鸳谜。輸入命令:$ssh -T git@github.com
基本操作
- 定位——
cd ~/
- git Init ——初始化倉庫
mkdir git-tutorial
cd git-tutorial
然后會生成.git目錄,這個目錄里存儲著管理當前目錄內(nèi)容所需的倉庫數(shù)據(jù)式廷。
將這個目錄的內(nèi)容稱為”附屬于該倉庫的工作樹“咐扭。
- git status——查看倉庫狀態(tài)
git status
建立README.md文件作為管理對象,未第一次提交做前期準備
touch README.md
-
git add——向暫存區(qū)中添加文件
將其加入暫存區(qū)(Stage或者Index)中滑废。
git add README.md
- git commit——保存?zhèn)}庫的歷史記錄
- 記述一行提交信息
git commit -m "First commit"
First commit是提交信息
- 記述詳細提交信息
git commit```
執(zhí)行后編輯器就會啟動蝗肪,在編輯器中記述提交信息的格式如下:
第一行:用一行文字簡述提交的更改內(nèi)容
第二行:空行
第三行以后:記述更改的原因和詳細內(nèi)容
`Esc`+`shift`+`z`+`shift`+`z`即可推出編輯器并保存
`Esc`+`:`+`help`可查看編輯器幫助
* **git log**——查看提交日志
commit欄旁是指向這個提交的哈希值。
* `git log --pretty=short `——只顯示提交信息的第一行
* `git log README.md `——只顯示指定目錄蠕趁、文件的日志
* ` git log -p` ——顯示文件的改動
* **git diff**——查看更改前后的差別
在剛剛提交的README.md中寫:
>\#Git 教程
* `git diff`——查看工作樹和暫存區(qū)的差別
然后將README.md加入暫存區(qū):git add README.md
* `git diff HEAD`——查看工作樹和最新提交的差別
> **養(yǎng)成好習慣**:在執(zhí)行git commit前先執(zhí)行git diff HEAD薛闪,查看本次提交與上次提交之間有什么差別,等確認完畢后再進行提交俺陋,這里的HEAD是指向當前分支中最新一次提交的指針逛绵。
確認過兩個提交之間的差別后就可以執(zhí)行commit命令:
git commit -m "Add index"
查看提交日志怀各,確認提交成功。
***
####分支的操作
* **git branch**——顯示分支一覽表
* **git checkout -b**——創(chuàng)建术浪、切換分支
git checkout -b feature-A等同于
git branch feature-A
git checkout feature-A
在分支A下修改README.md并提交
* 切換回上一個分支——**git checkout -**
* **git merge**——合并分支
首先切換到master分支
git checkout master
然后
git merge --no-ff feature-A
* **git log --graph**——以圖表形式查看分支
***
####更改提交的操作
* **git reset**——回溯歷史版本
* 回溯到創(chuàng)建分支A前
git reset --hard 目標時間點的哈希值
* 創(chuàng)建分支B修改README.md并提交
* 推進至分支A合并后的狀態(tài)
`git reflog`可查看當前倉庫執(zhí)行過的操作的日志。找到對應哈希值并回到當時的狀態(tài)寿酌。
* 消除沖突
合并分支B時分支A更改的部分和分支B發(fā)生了沖突胰苏。
修改README.md文件,然后提交醇疼。
* **git commit --amend**——修改提交信息
編輯器啟動硕并,修改提交信息后保存退出。
* **git rebase -i**——壓縮歷史
* 創(chuàng)建分支C修改README.md并提交C秧荆,故意留下拼寫錯誤倔毙,然后:git commit -am "Add feature-C"完成兩步操作
* 修正并提交:git commit -am "Fix typo",`錯字漏字等失誤稱作typo`
* ```
git rebase -i HEAD~2
出現(xiàn)
pick 哈希值 Add feature-C
pick 哈希值 Fix typo
將pick改為fixup便可
分支C合并至master分支。
推送至遠程倉庫
-
git remote add——添加遠程倉庫
git remote add origin git@github.com:DumplingsLi/git-tutorial.git
Git自動將遠程倉庫的名稱設置為origin(標識符)
* **git push**——推送至遠程倉庫
* 推送至master分支
git push -u origin master
* 推送至master以外的分支
git checkout -b feature-D
git push -u origin feature-D
***
###從遠程倉庫獲取
* **git clone**——獲取遠程倉庫
* 獲取遠程倉庫
git clone git@github.com:DumplingsLi/git-tutorial.git
查看當前分支的相關信息
git branch -a
* 獲取遠程的feature-D分支
git checkout -b feature-D(本地倉庫新建分支名稱) origin/feature-D(獲取來源的分支名稱)
修改分支D并推送乙濒。
* **git pull**——獲取最新的遠程倉庫分支
git pull origin feature-D
一些資源:
[Pro Git](http://git-scm.com/book/zh/v1) 作者:[Scott Chacon](https://github.com/schacon)
[LearningGitBranching](http://pcottle.github.io/learnGitBranching/)
[tryGit](http://try.github.io/)
[Github pages的一些用法](http://www.cnblogs.com/ztoz/p/5515475.html)