git分支/标签操作
git分支類似于某一個(gè)模塊,等到所有模塊開發(fā)完畢時(shí),最后聚合在一起形成一個(gè)項(xiàng)目。而分支之間一般是不會(huì)受影響的。
git 分支的基本操作:
merge和rebase
merge和rebase都有合并分支的作用,但是二者又有一些區(qū)別。
例如現(xiàn)在有一個(gè)分支A,現(xiàn)在要把A分支合并到master分支,可以如下操作:
git checkout master
git merge A
先切換到master分支,在進(jìn)行合并。
利用rebase也一樣能完成同樣的功能。
git checkout master
git rebase A
執(zhí)行完畢也一樣完成了分支的合并。
他們的區(qū)別參見:https://blog.csdn.net/liuxiaoheng1992/article/details/79108233
解決分支合并時(shí)的沖突
有時(shí)候分支在合并的時(shí)候會(huì)出現(xiàn)沖突,這個(gè)時(shí)候需要先解決沖突然后在合并。解決沖突就是手動(dòng)編輯我們需要的內(nèi)容。當(dāng)不存在沖突時(shí)在合并即可。
當(dāng)Git無法自動(dòng)合并分支時(shí),就必須首先解決沖突。解決沖突后,再提交,合并完成。解決沖突就是把Git合并失敗的文件手動(dòng)編輯為我們希望的內(nèi)容,再提交。
git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并的情況。
通常一般在合并分支時(shí)git采用的是Fast-forward模式,即快速合并分支,但這種模式下,刪除分支后,會(huì)丟掉分支信息。
如果要強(qiáng)制禁用Fast forward模式,Git就會(huì)在merge時(shí)生成一個(gè)新的commit,這樣,從分支歷史上就可以看出分支信息。
git merge --no-ff -m "merge with no-ff" dev 注意:--on-ff表示禁用fast-forward模式,因?yàn)闀?huì)生成一個(gè)新的commit所以需要把描述信息-m加上。
合并分支時(shí),加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward合并就看不出來曾經(jīng)做過合并。
git的分支特別強(qiáng)大,一般master主分支都是比較穩(wěn)定的,開發(fā)的話都是在dev分支上進(jìn)行,當(dāng)每一個(gè)功能模塊開發(fā)完成過后只需要將它合并到dev中即可,如果沒有問題了可以將dev合并到master分支上。
當(dāng)需要緊急修復(fù)bug的時(shí)候,而你正在開發(fā)新的功能,功能還沒有開發(fā)完成,但是有bug需要立馬處理,這時(shí)怎么辦呢? 別擔(dān)心,你只管切換分支到需要修改bug的分支去修復(fù)bug就好,其他的工作交給stash來完成。
stash命令:用于暫時(shí)存儲(chǔ)你沒有完成的工作,相當(dāng)于一個(gè)管家,讓他先幫你把沒有完成的工作先保管起來,等你bug修復(fù)完成了回來繼續(xù)做原來沒有做完的工作。
執(zhí)行g(shù)it stash,就把沒有完成的工作暫時(shí)存儲(chǔ)起來了,在執(zhí)行g(shù)it status會(huì)發(fā)現(xiàn)工作區(qū)很干凈。
想要看暫存區(qū)里面有多少工作沒有完成可以輸入git stash list 查看列表。
當(dāng)你把bug修復(fù)完成了,想要繼續(xù)先前的工作,有兩種方式恢復(fù)。
方式一:git stash apply,執(zhí)行完成后你以前暫存的文件就已經(jīng)恢復(fù)了,像什么都沒有發(fā)生一樣。緊接著就要?jiǎng)h除暫存區(qū)記錄,git stash drop這樣就把記錄刪除了。
方式二:git stash pop,它與apply的區(qū)別是他不但幫你恢復(fù)了暫存文件,而且還幫你刪除了暫存區(qū)記錄。
drop 只是刪除一條記錄,可以跟參數(shù)stash_id刪除指定的文件,不指定的話刪除最近的文件,而想要清空的話,可以使用git stash clear。表示將暫存區(qū)的所有記錄全部清空。
當(dāng)暫存區(qū)有很多條記錄時(shí),你可指定恢復(fù)那一條內(nèi)容:git stash apply stash@{0}
如下圖所示:
多人協(xié)作時(shí)對(duì)遠(yuǎn)程倉庫的操作
當(dāng)你從遠(yuǎn)程倉庫克隆時(shí),實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin。
fetch表示可以抓取的倉庫,push表示可以提交的倉庫。
一般通常情況下,都是先pull在push。
多人協(xié)作的工作模式通常是這樣:
首先,可以試圖用git push origin 推送自己的修改;
如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;
如果合并有沖突,則解決沖突,并在本地提交;
沒有沖突或者解決掉沖突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream-to=origin/branchname 創(chuàng)建鏈接關(guān)系。
例如git branch --set-upstream-to=origin/dev dev,創(chuàng)建一個(gè)dev分支并且和遠(yuǎn)程dev分支建立連接關(guān)系。
關(guān)于分支沖突,以及分支的處理可以參見:https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320
git的標(biāo)簽相關(guān)操作
git中的標(biāo)簽和分支差不多的,它也是指向的是某一次commit提交,標(biāo)簽的好處就是可以讓你迅速回到某一個(gè)版本,標(biāo)簽也就是用來標(biāo)記版本信息的,例如當(dāng)前版本是v1.0,那么就在master上打一個(gè)標(biāo)簽。打標(biāo)簽需要切換到對(duì)應(yīng)的分支。默認(rèn)的標(biāo)簽是打在最近最新的一次commit上,如果某一次commit之后沒有打標(biāo)簽,只需要通過日志找到commit_id即可。
在git中標(biāo)簽有兩種:輕量標(biāo)簽和附注標(biāo)簽。一個(gè)輕量標(biāo)簽很像一個(gè)不會(huì)改變的分支 - 它只是一個(gè)特定提交的引用。然而,附注標(biāo)簽是存儲(chǔ)在 Git 數(shù)據(jù)庫中的一個(gè)完整對(duì)象。 它們是可以被校驗(yàn)的;其中包含打標(biāo)簽者的名字、電子郵件地址、日期時(shí)間;還有一個(gè)標(biāo)簽信息;并且可以使用 GNU Privacy Guard (GPG)簽名與驗(yàn)證。 通常建議創(chuàng)建附注標(biāo)簽,這樣你可以擁有以上所有信息;但是如果你只是想用一個(gè)臨時(shí)的標(biāo)簽,或者因?yàn)槟承┰虿幌胍4婺切┬畔?#xff0c;輕量標(biāo)簽也是可用的。
git tag -d tag_name
git push origin :refs/tags/tag_name
以上就是git 分支和標(biāo)簽的基本操作
轉(zhuǎn)載于:https://www.cnblogs.com/jasonboren/p/11094977.html
總結(jié)
以上是生活随笔為你收集整理的git分支/标签操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echarts 样式 配置 vue
- 下一篇: svnserve.conf - snvs