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