寫在前面
剛看了一個(gè)TED關(guān)于拖延的演講呀潭,凡事還是有個(gè)deadline比較好啊钉迷,如果大腦不感到驚慌不感到事情的嚴(yán)重性,那是啥事都干不成滴钠署。
正文
11.創(chuàng)建并切換分支
創(chuàng)建:
git branch dev
切換:
git checkout dev
創(chuàng)建并切換:
git checkout -b dev
12.列出當(dāng)前分支
git branch
13.合并指定分支到當(dāng)前分支(1)
git checkout master
git merge dev
合并后就可以刪除dev分支了
git branch -d dev
14.合并分支出現(xiàn)沖突時(shí)要自己手動(dòng)解決沖突
解決好沖突 要再提交一次糠聪。
git add <filename>
git commit -m "conflict fixed"
用下面的命令可以看到?jīng)_突解決后分支合并的情況:
git log --graph --pretty=oneline --abbrev-commit
15.合并指定分支到當(dāng)前分支(2)
通常,合并分支時(shí)谐鼎,如果可能舰蟆,Git會(huì)用Fast forward模式,但這種模式下狸棍,刪除分支后身害,會(huì)丟掉分支信息。
如果要強(qiáng)制禁用Fast forward模式草戈,Git就會(huì)在merge時(shí)生成一個(gè)新的commit塌鸯,這樣,從分支歷史上就可以看出分支信息唐片。
git merge --no-ff -m "merge with no-ff" dev
因?yàn)楸敬魏喜⒁獎(jiǎng)?chuàng)建一個(gè)新的commit丙猬,所以加上-m參數(shù),把commit描述寫進(jìn)去费韭。
軟件開(kāi)發(fā)中茧球,bug就像家常便飯一樣。有了bug就需要修復(fù)揽思,在Git中袜腥,由于分支是如此的強(qiáng)大,所以钉汗,每個(gè)bug都可以通過(guò)一個(gè)新的臨時(shí)分支來(lái)修復(fù)羹令,修復(fù)后,合并分支损痰,然后將臨時(shí)分支刪除福侈。
當(dāng)你接到bug修復(fù)任務(wù)時(shí),你肯定得創(chuàng)建一個(gè)issue-101分支卢未,但是你正在分支dev的工作還沒(méi)完成肪凛,自然也就沒(méi)提交嘍堰汉。
幸好,Git提供了一個(gè)stash功能伟墙,可以把當(dāng)前工作現(xiàn)場(chǎng)“儲(chǔ)藏”起來(lái)翘鸭,修復(fù)bug后可恢復(fù)現(xiàn)場(chǎng)繼續(xù)工作:
儲(chǔ)藏
git stash
恢復(fù)
一是用git stash apply
恢復(fù),但是恢復(fù)后戳葵,stash內(nèi)容并不刪除就乓,你需要用git stash drop
來(lái)刪除;
另一種方式是用git stash pop
拱烁,恢復(fù)的同時(shí)把stash內(nèi)容也刪了.
如果你多次stash生蚁,可用git stash list
來(lái)查看并確定恢復(fù)那個(gè)工作現(xiàn)場(chǎng)。用命令git stash apply stash@{0}
恢復(fù)到指定現(xiàn)場(chǎng)戏自。
16.feature分支
開(kāi)發(fā)一個(gè)新feature邦投,最好新建一個(gè)分支;
如果要丟棄一個(gè)沒(méi)有被合并過(guò)的分支擅笔,可以通過(guò)git branch -D <name>
強(qiáng)行刪除志衣。
17.多人協(xié)作
多人協(xié)作的工作模式通常是這樣:
首先,可以試圖用git push origin branch-name
推送自己的修改剂娄;
如果推送失敗蠢涝,則因?yàn)檫h(yuǎn)程分支比你的本地更新玄呛,需要先用git pull
試圖合并阅懦;
如果合并有沖突,則解決沖突徘铝,并在本地提交耳胎;
沒(méi)有沖突或者解決掉沖突后,再用git push origin branch-name
推送就能成功惕它!
如果git pull
提示“no tracking information”怕午,則說(shuō)明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒(méi)有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name
淹魄。
這就是多人協(xié)作的工作模式郁惜,一旦熟悉了,就非常簡(jiǎn)單甲锡。
小結(jié):
查看遠(yuǎn)程庫(kù)信息兆蕉,使用git remote -v
;
本地新建的分支如果不推送到遠(yuǎn)程缤沦,對(duì)其他人就是不可見(jiàn)的虎韵;
從本地推送分支,使用git push origin branch-name
缸废,如果推送失敗后专,先用git pull抓取遠(yuǎn)程的新提交;
在本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用git checkout -b branch-name origin/branch-name
掉盅,本地和遠(yuǎn)程分支的名稱最好一致撵儿;
建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name
碟刺;
從遠(yuǎn)程抓取分支,使用git pull,如果有沖突逊抡,要先處理沖突。