綱領(lǐng):
其實git的學(xué)習(xí)就是四個區(qū)之間關(guān)系轉(zhuǎn)換的學(xué)習(xí),以及各個區(qū)本身一些操作的學(xué)習(xí)。每個操作都有其特定的作用區(qū)。學(xué)習(xí)時注意區(qū)分,可事半功倍!
注:尤其要注意,git是以修改為單位的。
一、配置
關(guān)鍵命令: "git config"
git config --global user.name "yourName"
git config --global user.email "email@example.com"
二、初始化
關(guān)鍵命令:"git init"
//切換到工作目錄,然后執(zhí)行初始化命令
git init
三、添加文件
關(guān)鍵命令:"git add xx.file"
git add test.txt
四、提交文件
關(guān)鍵命令:"git commit -m "添加了xx.file文件""
git commit -m "添加了test.txt文件"
五、狀態(tài)查看
關(guān)鍵命令:"git status"
git status
六、查看差異
關(guān)鍵命令:"git diff xx.file"
注:對比的是工作區(qū)與暫存區(qū)
git diff test.txt
七、查看版本歷史
關(guān)鍵命令:"git log" 、"git log --pretty=oneline"
注:查看的都是repo庫的改動
git log
#簡化輸出可用參數(shù)--pretty=oneline
git log --pretty=oneline
#等號兩邊沒有空格
八、回退歷史版本
關(guān)鍵命令:"git reset --hard commit_id"
注:此命令其實就是修改repo庫head指針的指向位置
參數(shù)解釋:
git reset有三個主要參數(shù)
- --soft -------->只有repo動
- --mixed ----->repo和stage動(注:默認(rèn)缺省值)
- --hard -------> repo、stage、workspace都動
commit_id主要有兩種表示方式
- HEAD關(guān)鍵字表示
- hash值前四位表示
git reset --hard HEAD^
#--hard 表示三個區(qū)域完全回退
#HEAD^表示回退的目的地,^號表示HEAD指針的上一個版本。HEAD^也可用commit id的hash值的前幾位替代,git會自動索引。
git reset --hard 142e
九、回流
關(guān)鍵命令:"git reflog"
注:作用與repo庫
git reflog
#用于回流回退過的情況
十、放棄工作區(qū)的修改
關(guān)鍵命令:"git checkout -- xx.file"
注:從暫存去簽出,覆蓋工作區(qū)。
git checkout -- test.txt
# --不能少
十一、刪除暫存區(qū)的內(nèi)容(參考第八條)
關(guān)鍵命令:"git reset HEAD xx.file"
參數(shù)解釋:
- 默認(rèn)缺省--mixed
- xx.file在單一文件時可缺省,默認(rèn)整個文件夾同時修改
- HEAD指向當(dāng)前head指針
注:本質(zhì)依舊是修改repo庫的head指針,但因為缺省值同時修改了stage,所以效果像是刪除了暫存區(qū)。
git reset HEAD test.txt
#此操作不會影響工作區(qū)
十二、刪除工作區(qū)文件
關(guān)鍵命令:"git rm xx.file"
注:在暫存區(qū)工作,同git add xx.file,所以還需要一步commit
git rm test.txt
#會先執(zhí)行工作區(qū)的文件刪除操作 `rm test.txt`
git commit -m "rm test.txt"
十三、遠(yuǎn)程倉庫
-
ssh-keygen -t rsa -C "youremail@example.com"創(chuàng)建私鑰與公鑰 - 在github添加公鑰
- 創(chuàng)建github倉庫 (后續(xù)可直接按github的提示操作即可。)
- 在本地git工作區(qū)運(yùn)行
git remote add origin git@github.com:name/repoName.git關(guān)聯(lián)本地repo與遠(yuǎn)程repo - 初次推送
git push -u origin master - 后續(xù)推送
git push origin master - 注:SSH警告可以忽略,直接yes
十四、克隆項目
關(guān)鍵命令:"git clone"
git clone git@github.com:name/repoName.git
#使用了ssh。也可以使用https。
十五、分支
關(guān)鍵命令:
-
git branch <name>創(chuàng)建分支 -
git checkout -b <name>創(chuàng)建并切換分支 -
git checkout <name>切換分支 -
git branch查看分支 -
git merge <name>合并指定分支到當(dāng)前分支 -
git branch -d <name>刪除指定分支
git branch testDevA
#創(chuàng)建分支A
git checkout -b testDevB
#創(chuàng)建并切換到B分支
git checkout master
#切換到主分支
git branch
#查看分支
git merge testDevA
#將A分支合并到主分支
git merge testDevB
#將B分支合并到主分支
git branch -d testDevA
#刪除A分支
git branch -d testDevB
#刪除B分支
十六、貯藏棧
注:常用來暫存當(dāng)前工作,去解決臨時問題,之后再恢復(fù)工作。
關(guān)鍵命令:
-
git stash貯藏入棧 -
git stash pop出棧并清空棧 -
git stash list貯藏列表(可多次貯藏,然后查詢,并用下面命令取出) -
git stash apply出棧 -
git stash apply stash{0}指定貯藏出棧 -
git stash drop清空棧
git stash
#貯藏
git stash pop
#取出
十七、標(biāo)簽
注:默認(rèn)給最新的commit_id打標(biāo)簽,也可指定commit_id。
注2:標(biāo)簽的顯示是按照字母順序的,不是時間順序。
注3:標(biāo)簽?zāi)J(rèn)只存儲在本地,需要而外推送遠(yuǎn)程庫。
關(guān)鍵命令:
-
git tag <tagName>打標(biāo)簽 -
git tag查看標(biāo)簽名 -
git tag <tagName> <commit_id>給特定commit_id打標(biāo)簽 -
git show <tagName>查看指定標(biāo)簽的詳細(xì)信息 -
git tag -a <tagName> -m <describe> <commit_id>-a指定標(biāo)簽名,-m注釋。 -
git tag -d v1.0刪除標(biāo)簽 -
git push origin <tagName>推送特定標(biāo)簽 -
git push origin --tags推送全部標(biāo)簽 -
git push origin :ref/tags/<tagName>刪除遠(yuǎn)端標(biāo)簽
git tag v1.0
git tag
git tag v0.3 1e2c
git show v1.0
git tag -a v0.4 -m "this is a test" 3re4
#commit_id 可省略,默認(rèn)最新commit_id。
十八、git私服搭建
待續(xù)。