目錄:
1唇跨、Git分支再述
2款咖、Git標簽管理
進擊的小仙
1. Git分支再述
1.1. Git之stash貯藏功能(Bug分支)
貯藏功能主要用在優(yōu)先修復bug時退盯,貯藏當前工作區(qū)的修改內(nèi)容,等到bug修復后再恢復撤师。
假定項目一期上線后剂府,lisa和Jimbo便投入了二期的開發(fā),在dev上做開發(fā)剃盾。
- step1:lisa在自己的分支上作README.md文檔的修改腺占,二期剛開始時候工作區(qū)的
README.md
內(nèi)容為:
The Android Project for Learning Android MVP mode
lisa status test
lisa修改后未提交的工作區(qū)內(nèi)容為:
The Android Project for Learning Android MVP mode
- step2:一期臨時出現(xiàn)一個bug交給lisa要立刻修改,lisa準備新建一個名為
bug001
的分支并在上面修改Bug.
git checkout -b bug001
vim README.md
git add README.md
git commit -m "resolved bug001"
git checkout master
git merge --no-ff -m "resolved bug001" bug001
git push origin master
git branch -d bug001
- 提交后準備回去lisa分支繼續(xù)未完成的工作結(jié)果發(fā)現(xiàn)原先在工作區(qū)所做的修改沒有了万俗,
README.md
的內(nèi)容又重置成了原始內(nèi)容:
The Android Project for Learning Android MVP mode
lisa status test
也就是說當bug001分支執(zhí)行了commit操作后湾笛,原本在lisa分支上工作區(qū)的工作被清掉了。這里就要在離開lisa分支之前儲存在工作區(qū)上的修改:
git stash
Paste_Image.png
然后放心去bug001修改Bug闰歪。修改完后回到lisa分支恢復工作區(qū)修改:
git stash apply
git stash drop
# 或者
git stash pop
# 或者恢復到指定的stash
git stash apply stash@{0}
1.2. Git刪除分支(feature分支)
前面說過刪除分支用:
git branch -d bran_name
但是如果該分支新建后都還未合并嚎研,刪除時會抱錯誤:
Paste_Image.png
他提示要換成下面的指令:
git branch -D bran_name
那么什么時候會出現(xiàn)這種情況呢?
一個項目通晨馓龋可以分成多個功能模塊临扮,最好分出多個feature分支來獨立開發(fā)。這樣假設一個新功能在開發(fā)過程中臨時被產(chǎn)品經(jīng)理或客戶干掉教翩,這時候就會好辦些杆勇。
1.3. 遠程分支
本地分支如果沒有提交到遠程,遠程是不會有該分支的饱亿。
查看所有分支(包含本地和遠程的):
git branch -a
Paste_Image.png
紅色以remotes開頭的是遠程的分支蚜退,可以看到lisa分支在遠程中不存在。
將本地分支提交到遠程:
git push origin lisa
Paste_Image.png
將遠程分支獲取到本地對應的分支:
git checkout -b dev origin/dev
# 或者
git fetch origin dev_originname:dev_localname
將遠程的分支與本地分支關聯(lián):
git branch --set-upstream branch_name origin/branch_name
將本地分支內(nèi)容提交到遠程分支:
git push origin branch_name
提交失敗可能是產(chǎn)生沖突了彪笼,先將遠程分支內(nèi)容更新下來:
git pull origin branch_name
對比兩個分支的差異:
git log dev...master
對比本地分支與遠程分支差異
git diff dev origin/dev
2. Git標簽管理
每次修改提交時都會生成一個commit钻注,那么經(jīng)年累月,就會產(chǎn)生很多的commit配猫,我們需要對一些節(jié)點性的提交做一下標注幅恋,比如說某次的提交是某個重要的上線版本,這時候就可以用到tag打個標簽泵肄。
2.1. 添加標簽:
git tag v1.0
# 對指定的commitid打標簽
git tag v1.0 0cfea9
# 對指定的commitid打標簽捆交,并注釋
git tag -a v1.0 -m "first released" 0cfea9
2.2. 查看標簽:
git tag
2.3. 查看某個標簽下的提交信息:
git show v1.0
2.4. 刪除標簽
git tag -d v1.0
2.5. 推送標簽到遠程
git push origin tagname
# 一次性將所有tag都提交上去
git push origin --tags
2.6. 刪除遠程標簽
# 先刪除本地
git tag -d v1.0
# 再刪除遠程
git push origin :refs/tags/v1.0