綱領(lǐng):
其實(shí)git的學(xué)習(xí)就是四個(gè)區(qū)之間關(guān)系轉(zhuǎn)換的學(xué)習(xí)蘸泻,以及各個(gè)區(qū)本身一些操作的學(xué)習(xí)。每個(gè)操作都有其特定的作用區(qū)嘲玫。學(xué)習(xí)時(shí)注意區(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
"
注:對(duì)比的是工作區(qū)與暫存區(qū)
git diff test.txt
七取刃、查看版本歷史
關(guān)鍵命令:"git log
" 、"git log --pretty=oneline
"
注:查看的都是repo庫的改動(dòng)
git log
#簡化輸出可用參數(shù)--pretty=oneline
git log --pretty=oneline
#等號(hào)兩邊沒有空格
八出刷、回退歷史版本
關(guān)鍵命令:"git reset --hard commit_id
"
注:此命令其實(shí)就是修改repo庫head指針的指向位置
參數(shù)解釋:
git reset
有三個(gè)主要參數(shù)
- --soft -------->只有repo動(dòng)
- --mixed ----->repo和stage動(dòng)(注:默認(rèn)缺省值)
- --hard -------> repo璧疗、stage、workspace都動(dòng)
commit_id
主要有兩種表示方式
- HEAD關(guān)鍵字表示
- hash值前四位表示
git reset --hard HEAD^
#--hard 表示三個(gè)區(qū)域完全回退
#HEAD^表示回退的目的地馁龟,^號(hào)表示HEAD指針的上一個(gè)版本崩侠。HEAD^也可用commit id的hash值的前幾位替代,git會(huì)自動(dòng)索引坷檩。
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在單一文件時(shí)可缺省句灌,默認(rèn)整個(gè)文件夾同時(shí)修改
- HEAD指向當(dāng)前head指針
注:本質(zhì)依舊是修改repo庫的head指針夷陋,但因?yàn)槿笔≈低瑫r(shí)修改了stage,所以效果像是刪除了暫存區(qū)。
git reset HEAD test.txt
#此操作不會(huì)影響工作區(qū)
十二骗绕、刪除工作區(qū)文件
關(guān)鍵命令:"git rm xx.file
"
注:在暫存區(qū)工作藐窄,同git add xx.file
,所以還需要一步commit
git rm test.txt
#會(huì)先執(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
十四诺凡、克隆項(xiàng)目
關(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)前工作,去解決臨時(shí)問題凉袱,之后再恢復(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)簽的顯示是按照字母順序的棺耍,不是時(shí)間順序。
注3:標(biāo)簽?zāi)J(rèn)只存儲(chǔ)在本地种樱,需要而外推送遠(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ù)以现。