每次吃一點(diǎn)Android_Gitの四

目錄:
1、Git分支再述
2、Git標(biāo)簽管理

進(jìn)擊的小仙

穿越:【目錄】每次吃一點(diǎn)Android_Git版本管理

參考資料:Git教程 - 廖雪峰的官方網(wǎng)站

1. Git分支再述

1.1. Git之stash貯藏功能(Bug分支)

貯藏功能主要用在優(yōu)先修復(fù)bug時(shí),貯藏當(dāng)前工作區(qū)的修改內(nèi)容,等到bug修復(fù)后再恢復(fù)。
假定項(xiàng)目一期上線后,lisa和Jimbo便投入了二期的開(kāi)發(fā),在dev上做開(kāi)發(fā)。

  • step1:lisa在自己的分支上作README.md文檔的修改,二期剛開(kāi)始時(shí)候工作區(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:一期臨時(shí)出現(xiàn)一個(gè)bug交給lisa要立刻修改,lisa準(zhǔn)備新建一個(gè)名為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
  • 提交后準(zhǔn)備回去lisa分支繼續(xù)未完成的工作結(jié)果發(fā)現(xiàn)原先在工作區(qū)所做的修改沒(méi)有了,README.md的內(nèi)容又重置成了原始內(nèi)容:
The Android Project for Learning Android MVP mode
lisa status test

也就是說(shuō)當(dāng)bug001分支執(zhí)行了commit操作后,原本在lisa分支上工作區(qū)的工作被清掉了。這里就要在離開(kāi)lisa分支之前儲(chǔ)存在工作區(qū)上的修改:

git stash 

Paste_Image.png

然后放心去bug001修改Bug。修改完后回到lisa分支恢復(fù)工作區(qū)修改:

git stash apply
git stash drop
# 或者
git stash pop
# 或者恢復(fù)到指定的stash
git stash apply stash@{0}

1.2. Git刪除分支(feature分支)

前面說(shuō)過(guò)刪除分支用:

git branch -d bran_name

但是如果該分支新建后都還未合并,刪除時(shí)會(huì)抱錯(cuò)誤:

Paste_Image.png

他提示要換成下面的指令:

git branch -D bran_name

那么什么時(shí)候會(huì)出現(xiàn)這種情況呢?
一個(gè)項(xiàng)目通??梢苑殖啥鄠€(gè)功能模塊,最好分出多個(gè)feature分支來(lái)獨(dú)立開(kāi)發(fā)。這樣假設(shè)一個(gè)新功能在開(kāi)發(fā)過(guò)程中臨時(shí)被產(chǎn)品經(jīng)理或客戶干掉,這時(shí)候就會(huì)好辦些。

1.3. 遠(yuǎn)程分支

本地分支如果沒(méi)有提交到遠(yuǎn)程,遠(yuǎn)程是不會(huì)有該分支的。
查看所有分支(包含本地和遠(yuǎn)程的):

git branch -a
Paste_Image.png

紅色以remotes開(kāi)頭的是遠(yuǎn)程的分支,可以看到lisa分支在遠(yuǎn)程中不存在。
將本地分支提交到遠(yuǎn)程:

git push origin lisa
Paste_Image.png

將遠(yuǎn)程分支獲取到本地對(duì)應(yīng)的分支:

git checkout -b dev origin/dev
# 或者 
git fetch origin dev_originname:dev_localname

將遠(yuǎn)程的分支與本地分支關(guān)聯(lián):

git branch --set-upstream  branch_name origin/branch_name

將本地分支內(nèi)容提交到遠(yuǎn)程分支:

git push origin branch_name

提交失敗可能是產(chǎn)生沖突了,先將遠(yuǎn)程分支內(nèi)容更新下來(lái):

git pull origin branch_name

對(duì)比兩個(gè)分支的差異:

git log dev...master

對(duì)比本地分支與遠(yuǎn)程分支差異

git diff dev origin/dev

2. Git標(biāo)簽管理

每次修改提交時(shí)都會(huì)生成一個(gè)commit,那么經(jīng)年累月,就會(huì)產(chǎn)生很多的commit,我們需要對(duì)一些節(jié)點(diǎn)性的提交做一下標(biāo)注,比如說(shuō)某次的提交是某個(gè)重要的上線版本,這時(shí)候就可以用到tag打個(gè)標(biāo)簽。

2.1. 添加標(biāo)簽:

git tag v1.0
# 對(duì)指定的commitid打標(biāo)簽
git tag v1.0 0cfea9
# 對(duì)指定的commitid打標(biāo)簽,并注釋
git tag -a v1.0 -m "first released" 0cfea9

2.2. 查看標(biāo)簽:

git tag

2.3. 查看某個(gè)標(biāo)簽下的提交信息:

git show v1.0

2.4. 刪除標(biāo)簽

git tag -d v1.0

2.5. 推送標(biāo)簽到遠(yuǎn)程

git push origin tagname
# 一次性將所有tag都提交上去
git push origin --tags

2.6. 刪除遠(yuǎn)程標(biāo)簽

# 先刪除本地
git tag -d v1.0
# 再刪除遠(yuǎn)程
git push origin  :refs/tags/v1.0
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,247評(píng)論 25 708
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,846評(píng)論 4 54
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,861評(píng)論 9 163
  • 當(dāng)你足夠優(yōu)秀,便有資格獲得最高榮譽(yù)。 故事要從今晚看的《蜘蛛俠》說(shuō)起,作為教師節(jié)的福利,興沖沖的想要看《戰(zhàn)狼》,但...
    時(shí)慧慧愛(ài)物閱讀 259評(píng)論 0 1
  • 蝴蝶在許多文化傳統(tǒng)中有不同的意義,象征愛(ài)情和自由,也象征死亡和再生,還象征精神和靈魂。作為自然界改變與成長(zhǎng)的絕佳例...
    奕秋read閱讀 13,128評(píng)論 2 10

友情鏈接更多精彩內(nèi)容