git-分支2

修復(fù)bug色迂,需要在需要修復(fù)的節(jié)點(diǎn)創(chuàng)建分支霞捡,修復(fù)后合并蚀狰,手頭任務(wù)沒(méi)有完成先保存漆弄,回頭再弄
git stash 保存現(xiàn)在的工作區(qū),去修復(fù)bug去
git stash pop 彈出任務(wù)造锅,回到工作現(xiàn)場(chǎng),并刪除棧中內(nèi)容
git stash list 查詢(xún)緩存工作棧中保存的任務(wù)廉邑。
git stash apply stash@{0} 恢復(fù)指定的stash 哥蔚, 但是不會(huì)刪除棧中內(nèi)容,需要使用 git stash drop來(lái)刪除
git branch -D <name> 強(qiáng)行刪除沒(méi)有被合并的分支

Bug分支

軟件開(kāi)發(fā)中蛛蒙,bug就像家常便飯一樣糙箍。有了bug就需要修復(fù),在Git中牵祟,由于分支是如此的強(qiáng)大深夯,所以,每個(gè)bug都可以通過(guò)一個(gè)新的臨時(shí)分支來(lái)修復(fù)诺苹,修復(fù)后咕晋,合并分支,然后將臨時(shí)分支刪除收奔。
當(dāng)你接到一個(gè)修復(fù)一個(gè)代號(hào)101的bug的任務(wù)時(shí)掌呜,很自然地,你想創(chuàng)建一個(gè)分支issue-101來(lái)修復(fù)它坪哄,但是质蕉,等等,當(dāng)前正在dev上進(jìn)行的工作還沒(méi)有提交:

$ git status
On branch dev
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.py

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

并不是你不想提交翩肌,而是工作只進(jìn)行到一半模暗,還沒(méi)法提交,預(yù)計(jì)完成還需1天時(shí)間念祭。但是兑宇,必須在兩個(gè)小時(shí)內(nèi)修復(fù)該bug,怎么辦棒卷?
幸好顾孽,Git還提供了一個(gè)stash功能,可以把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來(lái)比规,等以后恢復(fù)現(xiàn)場(chǎng)后繼續(xù)工作:

$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge

現(xiàn)在若厚,用git status查看工作區(qū),就是干凈的(除非有沒(méi)有被Git管理的文件)蜒什,因此可以放心地創(chuàng)建分支來(lái)修復(fù)bug测秸。
首先確定要在哪個(gè)分支上修復(fù)bug,假定需要在master分支上修復(fù),就從master創(chuàng)建臨時(shí)分支:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)
$ git checkout -b issue-101
Switched to a new branch 'issue-101'

現(xiàn)在修復(fù)bug霎冯,需要把“Git is free software ...”改為“Git is a free software ...”铃拇,然后提交:

$ git add readme.txt 
$ git commit -m "fix bug 101"
[issue-101 4c805e2] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

修復(fù)完成后,切換到master分支沈撞,并完成合并慷荔,最后刪除issue-101分支:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git merge --no-ff -m "merged bug fix 101" issue-101
Merge made by the 'recursive' strategy.
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

太棒了,原計(jì)劃兩個(gè)小時(shí)的bug修復(fù)只花了5分鐘缠俺!現(xiàn)在显晶,是時(shí)候接著回到dev分支干活了!

$ git checkout dev
Switched to branch 'dev'

$ git status
On branch dev
nothing to commit, working tree clean

工作區(qū)是干凈的壹士,剛才的工作現(xiàn)場(chǎng)存到哪去了磷雇?用git stash list命令看看:

$ git stash list
stash@{0}: WIP on dev: f52c633 add merge

工作現(xiàn)場(chǎng)還在,Git把stash內(nèi)容存在某個(gè)地方了躏救,但是需要恢復(fù)一下唯笙,有兩個(gè)辦法:
一是用git stash apply恢復(fù),但是恢復(fù)后盒使,stash內(nèi)容并不刪除崩掘,你需要用git stash drop來(lái)刪除;
另一種方式是用git stash pop少办,恢復(fù)的同時(shí)把stash內(nèi)容也刪了:

$ git stash pop
On branch dev
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   hello.py$ git stash apply stash@{0}

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   readme.txt

Dropped refs/stash@{0} (5d677e2ee266f39ea296182fb2354265b91b3b2a)

再用git stash list查看呢堰,就看不到任何stash內(nèi)容了:

$ git stash list

你可以多次stash,恢復(fù)的時(shí)候凡泣,先用git stash list查看枉疼,然后恢復(fù)指定的stash,用命令:

$ git stash apply stash@{0}

Feature 分支

軟件開(kāi)發(fā)中鞋拟,總有無(wú)窮無(wú)盡的新的功能要不斷添加進(jìn)來(lái)骂维。
添加一個(gè)新功能時(shí),你肯定不希望因?yàn)橐恍?shí)驗(yàn)性質(zhì)的代碼贺纲,把主分支搞亂了航闺,所以,每添加一個(gè)新功能猴誊,最好新建一個(gè)feature分支潦刃,在上面開(kāi)發(fā),完成后懈叹,合并乖杠,最后,刪除該feature分支澄成。
現(xiàn)在胧洒,你終于接到了一個(gè)新任務(wù):開(kāi)發(fā)代號(hào)為Vulcan的新功能畏吓,該功能計(jì)劃用于下一代星際飛船。
于是準(zhǔn)備開(kāi)發(fā):

$ git checkout -b feature-vulcan
Switched to a new branch 'feature-vulcan'

5分鐘后卫漫,開(kāi)發(fā)完畢:

$ git add vulcan.py

$ git status
On branch feature-vulcan
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   vulcan.py

$ git commit -m "add feature vulcan"
[feature-vulcan 287773e] add feature vulcan
 1 file changed, 2 insertions(+)
 create mode 100644 vulcan.py

切回dev菲饼,準(zhǔn)備合并:

git checkout dev

一切順利的話(huà),feature分支和bug分支是類(lèi)似的列赎,合并宏悦,然后刪除。

但是包吝!

就在此時(shí)肛根,接到上級(jí)命令,因經(jīng)費(fèi)不足漏策,新功能必須取消!

雖然白干了臼氨,但是這個(gè)包含機(jī)密資料的分支還是必須就地銷(xiāo)毀

$ git branch -d feature-vulcan
error: The branch 'feature-vulcan' is not fully merged.
If you are sure you want to delete it, run 'git branch -D小結(jié)
開(kāi)發(fā)一個(gè)新feature掺喻,最好新建一個(gè)分支;

如果要丟棄一個(gè)沒(méi)有被合并過(guò)的分支储矩,可以通過(guò)git branch -D <name>強(qiáng)行刪除感耙。 feature-vulcan'.

銷(xiāo)毀失敗。Git友情提醒持隧,feature-vulcan分支還沒(méi)有被合并即硼,如果刪除,將丟失掉修改屡拨,如果要強(qiáng)行刪除只酥,需要使用大寫(xiě)的-D參數(shù)。呀狼。
現(xiàn)在我們強(qiáng)行刪除:

$ git branch -D feature-vulcan
Deleted branch feature-vulcan (was 287773e).

終于刪除成功裂允!
小結(jié)
開(kāi)發(fā)一個(gè)新feature,最好新建一個(gè)分支哥艇;
如果要丟棄一個(gè)沒(méi)有被合并過(guò)的分支绝编,可以通過(guò)git branch -D <name>強(qiáng)行刪除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末貌踏,一起剝皮案震驚了整個(gè)濱河市十饥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祖乳,老刑警劉巖逗堵,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異眷昆,居然都是意外死亡砸捏,警方通過(guò)查閱死者的電腦和手機(jī)谬运,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)垦藏,“玉大人梆暖,你說(shuō)我怎么就攤上這事〉嗫ィ” “怎么了轰驳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)弟灼。 經(jīng)常有香客問(wèn)我级解,道長(zhǎng),這世上最難降的妖魔是什么田绑? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任勤哗,我火速辦了婚禮,結(jié)果婚禮上掩驱,老公的妹妹穿的比我還像新娘芒划。我一直安慰自己,他們只是感情好欧穴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布民逼。 她就那樣靜靜地躺著,像睡著了一般涮帘。 火紅的嫁衣襯著肌膚如雪拼苍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天调缨,我揣著相機(jī)與錄音疮鲫,去河邊找鬼。 笑死弦叶,一個(gè)胖子當(dāng)著我的面吹牛棚点,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾蔓,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼瘫析,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了默责?” 一聲冷哼從身側(cè)響起贬循,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桃序,沒(méi)想到半個(gè)月后杖虾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媒熊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年奇适,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坟比。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嚷往,死狀恐怖葛账,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情皮仁,我是刑警寧澤籍琳,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站贷祈,受9級(jí)特大地震影響趋急,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜势誊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一呜达、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粟耻,春花似錦查近、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勋锤。三九已至饭玲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叁执,已是汗流浹背茄厘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谈宛,地道東北人次哈。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吆录,于是被迫代替她去往敵國(guó)和親窑滞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Git常用語(yǔ)法 [TOC] Git簡(jiǎn)介 描述 ? Git(讀音為/g?t/恢筝。)是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)哀卫,...
    君惜丶閱讀 3,500評(píng)論 0 13
  • 張明乾繼續(xù)說(shuō)道 :“眾所周知,鬼魂是人死后所化成的一種形態(tài)撬槽,因?yàn)槿艘呀?jīng)死了此改,所以鬼魂也是沒(méi)有生命的,但煞就不同了侄柔,...
    長(zhǎng)白居士閱讀 362評(píng)論 0 0
  • 見(jiàn)字如面?書(shū)世界 路明非共啃,楚子航——《龍族》 尊敬的楚師兄: 你好占调! 哈哈哈哈哈這個(gè)寫(xiě)信格式好正經(jīng)啊師兄有沒(méi)有被我...
    學(xué)渣天天熬夜閱讀 544評(píng)論 0 0
  • ——讀李商隱《春雨》 義山乃至情至性、至真至美之人移剪,而后有此等至情至性究珊、至真至美之詩(shī)。尤其“紅樓隔...
    大觀(guān)學(xué)園閱讀 470評(píng)論 2 1
  • 哈挂滓,翻截圖的時(shí)候發(fā)現(xiàn)自己忘了記苦银。 執(zhí)著的找。 小波對(duì)于人的行為居然是按照一個(gè)整體來(lái)的赶站!神奇幔虏。但是是個(gè)體的整體。講了...
    葉開(kāi)開(kāi)閱讀 212評(píng)論 0 0