git如何切换分支_拜托,不要再问我Git分支如何使用
今天來講講我使用Git分支的一些經驗,記錄一下,希望對大家有幫助。
闡述
在平常開發中,一般都會對應三種環境,本地環境、測試環境、線上環境。開發的基本流程都是先在本地環境開發好,再把代碼發布到測試環境測試,最后再發布到線上環境。
對于代碼,我們使用Git分支進行管理,一般而言會對應兩個分支,master和dev。
master分支主要用于線上發布使用,dev分支用于平常的開發和測試。除此之外,我們也可以創建多個分支,比如給某次的迭代開發創建一個分支、針對一次代碼優化創建一個分支,或者針對一次Bug修復,我們可以新建個分支。
Git的分支創建速度非常快,它不像svn等集中式版本控制系統,每次創建需要cp代碼,而是直接改變指針指向即可。比如當前指針指向master,我們基于master最近一次的提交創建個dev分支出來,其實就是創建了個指針指向dev分支而已。在切換和合并分支的時候,也都是改變指針指向,速度非常快。
總之,Git提倡多使用分支,我們不需要吝嗇使用它。
下面就來講講分支相關命令以及我使用分支的一些經驗。
創建分支
創建分支: git branch 分支名 切換分支: git checkout 分支名 查看所有分支: git brach -a 分支合并: git merge 分支名 (把分支合并到當前分支)刪除分支
隨著需求的迭代,倉庫中創建的分支可能會越來越多,這個時候我們需要刪除一些已經merge的分支,Git提倡分支用完即刪除的做法。
以下是有關刪除分支的命令。
首先使用git branch -a查看當前所有分支。 刪除本地分支:git branch -d 分支1[,分支名2,分支名3...] 刪除遠程分支: git push origin --delete 分支名1[,分支命2,分支名...]緩存分支修改
有時候,我們可能會同時在幾個分支上進行開發,在切換分支的時,如果當前分支有修改,這個時候功能還沒有全部開發完成,你并不想馬上提交到版本庫的話,
我們可以使用Git提供的緩存修改的命令,把這部分修改暫時緩存起來,切換回這個分支的時候,再把它取出來。
緩存修改命令:git stash【注:這個命令會把提交到暫存區,就是使用git add提交之后的代碼緩存起來,對未經Git管控的文件修改并不做緩存】
從緩存中恢復修改并刪除緩存內容: git stash pop 查看緩存列表:git stash list最小修改提交
之前碰到過一個問題,在一次開發中,我和一個同學分別負責項目不同的模塊實現,我們都基于master分支創建出一個新分支供于自己提交,也就是說在各自的分支上,我們都看不到對方的修改。
本來兩個分支開發的功能基本互不影響,但期間我修改到了框架的一個公共方法,這個同學也需要調用這個方法,而且他的代碼需要先上線,這個時候怎么辦呢?
一種方式是在確認我自己代碼上線無影響的情況下,和這個同學的代碼一起上線,但這樣不保險,并不能保證以后出現這種情況都能一起上線。
另外一種方式,可以用Git提供的最小修改提交命令git cherry-pick。把我修改公共方法這塊給單獨提交一個commit,通過git cherry-pick命令給合并到這個同學的分支上,然后讓他發布上線就好。
命令:git cherry-pick commit-id踩過的坑
我開始接觸Git時,分支會不小心從dev分支上創建出來,在合并到master分支后,發現有很多不屬于自己修改的文件,一些文件并不能一起合并。造成的后果就是,必須要回滾代碼。
dev分支是供測試環境發布的分支,大家平時都在上面干活,合并代碼比較隨意,跟master分支版本的代碼差異會比較大。創建分支時應該基于master最新提交上,即當前分支需要切換到master,執行git pull命令,再使用git branch創建分支。
一個比較好的習慣是,在合并到master分支時,對比自己分支和master分支的差異,確認是否屬于自己提交的修改。我們可以借助于IDE提供的分支對比功能,可以非常直觀的看出差異。
在不確認自己的分支到底是從哪個分支上切換出來的時,我們可以用`git reflog show 分支名`命令,來查看這個分支的演變歷史。它可以告訴你是分支從哪里創建出來的,還有合并和提交的記錄,對追蹤問題特別有幫助。
有關沖突解決
在合并分支時,可能會碰見讓人抓狂的文件沖突,這個時候Git會提示,必須要解決沖突才能進行合并。引起沖突的原因一般都是兩個分支同時修改了某個文件相同位置的內容,解決沖突就是把Git合并失敗的文件手動編輯為我們希望的內容,再提交。
以上,就是我使用Git分支的一些經驗,個人觀點,僅供參考。
總結
以上是生活随笔為你收集整理的git如何切换分支_拜托,不要再问我Git分支如何使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs 创建一个静态资源服务器 +
- 下一篇: JavaScript+ Canvas开发