2018/07/11
參考:git-廖雪峰的官方網(wǎng)站
版本回退:
從最近到最遠(yuǎn)的提交日志:
git log
?如果嫌輸出信息太多,可以加上--pretty=oneline
git使用
HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD^,上上個(gè)版本就是HEAD^^,很多個(gè)版本就是HEAD~n;
?命令:git reset --hard HEAD^
從過(guò)去回到未來(lái):
git reset --hard 版本號(hào)(版本號(hào)不需要寫全,寫前幾位即可)
git reflog用來(lái)記錄每一次命令
撤銷修改:
撤銷工作區(qū):
git checkout --filename
?撤銷提交到暫存區(qū)的:git reset HEAD filename
刪除文件:
刪掉提交到版本庫(kù)的文件:
git rm filename;
?然后:git commit -m "remove filename"
工作區(qū)誤刪:
?從版本庫(kù)替換工作區(qū):git checkout --filename
分支管理:
創(chuàng)建dev分支,然后切換:
?git checkout -b dev
?相當(dāng)于以下兩條命令:
??git branch dev
??git checkout dev
查看分支:
?git branch;當(dāng)前分支前面會(huì)標(biāo)一個(gè)*
?git branch -a:查看遠(yuǎn)程分支
切換回master分支:
git checkout master
把dev分支的工作成果合并到master分支上:
git merge dev
刪除分支:
git branch -d dev
查看分支合并圖:
git log --graph
分支合并策略:合并分支時(shí)加上--no-off就可以使用普通模式合并合并后的歷史有分支
BUG分支:
?工作途中需要修復(fù)bug,可以把當(dāng)前工作儲(chǔ)藏起來(lái)git stash
?恢復(fù):兩種方式
??git stash apply:stash內(nèi)容沒有刪除:git stash drop
??git stash pop恢復(fù)的同時(shí)把stash內(nèi)容刪除
feature分支:添加新功能
?丟棄一個(gè)沒有合并的分支(強(qiáng)行刪除):git branch -D name
多人協(xié)作:遠(yuǎn)程倉(cāng)儲(chǔ)的默認(rèn)名稱是origin
?查看遠(yuǎn)程倉(cāng)庫(kù)的信息:git remote或者git remote -v
?推送分支:把該分支上的所有本地提交到遠(yuǎn)程庫(kù),推送時(shí)要指定本地分支推送master分支:
git push origin master
如果要推送其他分支,比如dev:git push origin dev
那些需要推送到遠(yuǎn)程:
?master是主分支,要時(shí)刻與遠(yuǎn)程同步
?dev是開發(fā)分支,團(tuán)隊(duì)成員都需要在上面工作,需要同步
?bug分支只用于本地修復(fù)bug,不需要
?freature分支是否需要,取決于自己
因此,多人協(xié)作的工作模式通常是這樣:
?首先,可以試圖用git push origin <branch-name>推送自己的修改;
?如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;
?如果合并有沖突,則解決沖突,并在本地提交;
?沒有沖突或者解決掉沖突后,再用git push origin <branch-name>推送就能成功!
?如果git pull提示no tracking information,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
標(biāo)簽管理:
創(chuàng)建標(biāo)簽:
git tag name
?查看所有標(biāo)簽:git tag
對(duì)某一個(gè)commit id打標(biāo)簽:git tag name id
?標(biāo)簽不是按時(shí)間順序的,而是按字母順序
查看標(biāo)簽信息:git show tagname
創(chuàng)建帶有說(shuō)明的標(biāo)簽:-a制定標(biāo)簽名,-m指定說(shuō)明文字:git tag -a name -m "info" id
刪除標(biāo)簽:git tag -d name
推送:git push origin tagname
刪除遠(yuǎn)程標(biāo)簽(先刪本地):git push origin:/addr/tagname