1.設置帳戶與郵箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com" //此處global命令爲當前機器下全部倉
複製代碼
2.建立版本庫
$ mkdir learngit //建立文件夾
$ git init //將這個目錄變爲Git能夠管理的倉庫
ls -ah //查看隱藏目錄
複製代碼
3.添加到暫存區與提交到倉庫
$ git add readme.txt //將文件添加到暫存區,可反覆使用,添加多個文件,再一次性提交
$ git commit -m "wrote a readme file" //將文件提交到倉庫(-m爲提交註釋)
複製代碼
4.查看改動狀態與改動具體差別
$ git status //讓咱們掌握當前倉庫的狀態
$ git diff readme.txt //查看對某文件進行了什麼修改
$ cat readme.txt //查看文件內容
複製代碼
5.查看提交歷史記錄
$ git log //顯示從最近到最遠的提交日誌
//最近的一次是append GPL,上一次是add distributed,最先的一次是wrote a readme file
$ git log --pretty=oneline //簡化log
複製代碼
6.版本回退
$ git reset --hard HEAD^ //HEAD表示當前版本,HEAD^表示上一版本,HEAD~100表示往上100個版本
$ git reset --hard 3628164 //往指定版本跳轉 版本號無需寫全
$ git reflog //查看你的每一次命令,以便確認要回到將來的那個版本
複製代碼
7.撤銷修改
$ git checkout -- readme.txt //讓某文件修改撤銷,讓他回到最近一次git commit或git add的狀態(未add時)
$ git reset HEAD readme.txt //git reset命令既能夠回退版本,也能夠把暫存區的修改回退到工做區.
//當咱們用HEAD時,表示最新的版本.
//已add,未commit再使用checkout撤銷工做區的修改.
複製代碼
8.刪除文件
$ rm test.txt //直接刪除文件,在經過提交達到刪除目的
$ git rm test.txt
$ git commit -m "remove test.txt" //從版本庫中刪除該文件,並git commit
$ git checkout -- test.txt //當發生誤刪時,能夠從版本庫中恢復最新版本
複製代碼
9.建立SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com" //建立SSH Key
//用戶目錄下,有id_rsa和id_rsa.pub兩個文件,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人.
複製代碼
10.添加遠程庫
$ git remote add origin git@github.com:michaelliao/learngit.git //關聯遠程庫
//orgin 通常指代遠程庫
$ git push -u origin master
//將本地庫的內容推送到遠程
//由於是第一次推送,加上-u參數,將本地master分支與遠程的master分支聯繫起來
$ git push origin master //將本地master分支的最新修改推送這Github
複製代碼
11.從遠程庫克隆
$ git clone git@github.com:Mzs1994/gitskills.git //從遠程庫克隆一個本地庫
//Git支持多種協議 包括https,但經過ssh支持的原生git協議速度最快
複製代碼
12.建立與合併分支
$ git checkout -b dev
//建立dev分支,git checkout命令加上-b參數表示建立並切換
//至關於如下兩條命令
$ git branch dev
$ git checkout dev
$ git branch //查看當前分支
$ git checkout master //完成dev工做後,切換回master分支
$ git merge dev //用於合併指定分支到當前分支
$ git branch -d dev //刪除當前分支
複製代碼
13.解決衝突
$ git log --graph --pretty=oneline --abbrev-commit //能夠看到分支合併圖
//當Git沒法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。
複製代碼
14.分支管理策略
$ git merge --no-ff -m "merge with no-ff" dev
//--no-ff參數,表示禁用Fast forward
//此次合併,會建立一個新的commit
//出現以下log
$ git log --graph --pretty=oneline --abbrev-commit
* 7825a50 merge with no-ff
|\
| * 6224937 add merge
|/
* 59bc1cb conflict fixed
複製代碼
15.Bug分支
$ git stash //將未提交的修改暫時保存
$ git stash list //查看工做現場存儲狀況
$ git stash apply //恢復但不刪除stash內容
$ git stash apply stash@{0} //恢復但不刪除指定stash內容
$ git stash drop //刪除stash內容
$ git stash pop //恢復同時刪除stash內容
//修復bug時,咱們會經過建立新的bug分支進行修復,而後合併,最後刪除;
//當手頭工做沒有完成時,先把工做現場git stash一下,而後去修復bug,修復後,再git stash pop,回到工做現場。
複製代碼
16.Feature分支
$ git branch -D feature-vulcan //強行刪除
//若是要丟棄一個沒有被合併過的分支,能夠經過git branch -D <name>強行刪除。
複製代碼
17.多人協做
$ git remote //查看遠程庫的信息
$ git remote -v //查看遠程庫的詳細信息
$ git push origin master //推送分支,前一個爲遠程,後一個爲本地
$ git branch //查看分支
$ git checkout -b dev origin/dev //建立遠程origin的dev分支到本地
$ git branch --set-upstream dev origin/dev
//創建本地dev分支與遠程origin/dev分支
複製代碼
18.標籤
$ git tag //查看全部標籤
$ git tag v0.9 6224937 //給提交打標籤
$ git show v0.9 //查看標籤信息
$ git tag -a v0.1 -m "version 0.1 released" 3628164 //建立自帶說明的標籤
$ git tag -d v0.1 //刪除標籤
$ git push origin v1.0 //推送標籤到遠程
$ git push origin --tags //一次性推送所有還沒有推送到遠程的本地代碼
$ git push origin :refs/tags/v0.9 //當標籤已經推送到遠程時,先刪除本地標籤
複製代碼
19.自定義Git
$ git config --global color.ui true //讓Git顯示顏色
複製代碼
20.忽略特殊文件
//配置.gitignore文件
$ git add -f App.class //強制添加文件到git
$ git check-ignore -v App.class //檢查忽略文件命令
複製代碼
21.配置別名
$ git config --global alias.st status //配置status的別名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
.git/config //每一個倉庫的配置文件
admin/.gitconfig //用戶主目錄
複製代碼