分支作用
在開(kāi)發(fā)過(guò)程中,項(xiàng)目往往由多人協(xié)同開(kāi)發(fā),那么將多人編寫(xiě)的代碼匯總到一起就成了一個(gè)困難且復(fù)雜的工作,另外項(xiàng)目也需要備份和版本迭代,因此不能只有一個(gè)版本。因此分支就成為了優(yōu)秀的解決方案。
分支相互獨(dú)立,不同部門(mén)在不同分支開(kāi)發(fā),分支由主分支構(gòu)建,分支代碼獨(dú)立運(yùn)行且無(wú)誤后融合到主分支,保證主分支都是穩(wěn)定可部署的代碼。分支的存在極大的提高了開(kāi)發(fā)效率。
分支一般分為主分支和其他分支,不同程序員在分支上編寫(xiě)代碼,無(wú)誤后融合到主分支(一般為master分支)是各個(gè)程序員的代碼都融合到主分支上。
分支也可以進(jìn)行版本迭代,開(kāi)發(fā)的第一版融合到master1主分支上,作為第一版,二次開(kāi)發(fā)時(shí)融合到master2上作為第二個(gè)版本,代碼也不會(huì)丟失。
Git分支管理
初始化倉(cāng)庫(kù)
分支依賴(lài)于倉(cāng)庫(kù),因此分支需要在git倉(cāng)庫(kù)構(gòu)建。git命令支持使用git init
初始化一個(gè)空的git倉(cāng)庫(kù)。
git init
git branch
git branch
命令是分支管理命令, 有如下功能:
- 查看分支
- 創(chuàng)建分支
- 刪除分支
- 重命名分支
- 設(shè)置上游分支
- 將分支推送到遠(yuǎn)程倉(cāng)庫(kù)
# 查看本地分支
git branch
默認(rèn)只列出本地分支,不顯示遠(yuǎn)程分支,并且在當(dāng)前分支前面使用 * 標(biāo)記
剛初始化的倉(cāng)庫(kù)是沒(méi)有分支的,如果復(fù)制項(xiàng)目到當(dāng)前目錄,并綁定遠(yuǎn)程倉(cāng)庫(kù),最后執(zhí)行git push origin master
命令就會(huì)自動(dòng)在本地和遠(yuǎn)程倉(cāng)庫(kù)生成master分支。(推薦)
當(dāng)然也可以直接在本地創(chuàng)建分支,git提供了git branch [branchName]
來(lái)興建一個(gè)分支。
出現(xiàn)上面錯(cuò)誤的原因是"庫(kù)是空的,無(wú)法創(chuàng)建主分支",需要添加內(nèi)容并提交到工作區(qū),也就是執(zhí)行如下命令:
git add .
git commit -m "xxx"
執(zhí)行命令后git倉(cāng)庫(kù)就有內(nèi)容了,并且git系統(tǒng)自動(dòng)以此內(nèi)容創(chuàng)建一個(gè)master
主分支
# 查看遠(yuǎn)程分支
git branch -r
git branch --remotes
# 查看所有分支包含遠(yuǎn)程和本地
git branch -a
git branch --all
# 查看分支提交的詳細(xì)信息
git branch -v
git branch --verbose
在查看遠(yuǎn)程倉(cāng)庫(kù)的分支時(shí)注意綁定遠(yuǎn)程分支倉(cāng)庫(kù)。
# 創(chuàng)建本地分支
git branch help
#git checkout -b 創(chuàng)建并切換到新的分支
git checkout -b <branch>
# 切換到指定分支
git checkout <branch>
git checkout -b <branch>
=git branch <branch>
+git checkout <branch>
# 將本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)(創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)分支)
git push origin <local_branch>:<remote_branch>
# 簡(jiǎn)寫(xiě)
git push -u origin <local_branch>
# 刪除一個(gè)名字為branchName的分支,如果該分支有提交未進(jìn)行合并,則會(huì)刪除失敗。
git branch -d <branchName>
# 強(qiáng)制刪除一個(gè)名字為branchName 的分支
git branch -D <branchName>
# 刪除遠(yuǎn)程分支
git push origin -d <branch>
git push origin :<branch>
# 重命名當(dāng)前分支
git branch -m <branch>
# 重命名指定分支
git branch -m <old-branch> <new-branch>
git checkout
git checkout
切換分支和創(chuàng)建分支的命令。git checkout命令可以切換通過(guò)git branch命令創(chuàng)建的分支。每個(gè)分支都是一個(gè)獨(dú)立的項(xiàng)目空間。
checkout一個(gè)分支,會(huì)更新當(dāng)前的工作空間中的文件,使其與檢出分支的commit版本狀況保持一致。這之后工作區(qū)中的所有變更都會(huì)被記錄在checkout出來(lái)的那個(gè)分支上。這一操作可以認(rèn)為是在挑選你希望修改的工作分支。
git checkout命令有時(shí)候會(huì)跟git clone命令相混淆。兩個(gè)命令中最為顯著的差別在于,git clone用于從遠(yuǎn)程倉(cāng)庫(kù)獲取代碼,而git checkout則用來(lái)在本地系統(tǒng)中業(yè)已存在的代碼庫(kù)中切換不同的版本。
# 切換本地分支
git checkout <branch>
# 切換遠(yuǎn)程分支
git checkout -t <origin/xxx>
在不同分支下改變目錄下的文件,提交到工作區(qū)的內(nèi)容時(shí)不一樣的。也就是說(shuō)當(dāng)切換分支后,就是一個(gè)獨(dú)立的空間,這個(gè)空間工作區(qū)的內(nèi)容由git add
和git commit
決定,最后git push
推送該分支的代碼。
分支項(xiàng)目拉取
在git管理的項(xiàng)目中提供了兩種方法拉取遠(yuǎn)程項(xiàng)目git clone
和git pull
兩個(gè)命令。在分支中git clone
和git pull
是不一樣的,前者是面向公開(kāi)項(xiàng)目的,g后者就是用戶(hù)本地和遠(yuǎn)程倉(cāng)庫(kù)傳輸?shù)摹?/p>
git clone
是作用于主分支,將主分支克隆到本地,這個(gè)過(guò)程無(wú)需密碼驗(yàn)證,任何開(kāi)發(fā)者都可以將遠(yuǎn)程倉(cāng)庫(kù)的主分支地址拉取到本地(只作用于主分支)。
git pull
可以在任意分支上從遠(yuǎn)程的任何分支拉取項(xiàng)目,此過(guò)程需要密碼驗(yàn)證。在管理本地分支項(xiàng)目與遠(yuǎn)程分支項(xiàng)目時(shí)都是使用該命令。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-734785.html
遠(yuǎn)程分支也是可以直接拉取到本地的,通過(guò)git fetch
命令。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-734785.html
# 在本地新建一個(gè)xiaoxu分支,并將遠(yuǎn)程origin倉(cāng)庫(kù)的master分支代碼下載到本地xiaoxu分支
git fetch origin master:xiaoxu
# 取回origin主機(jī)的master分支
git fetch origin master
# 將某個(gè)遠(yuǎn)程主機(jī)的更新,全部取回本地
git fetch <遠(yuǎn)程主機(jī)名>
# 取回特定分支的更新
git fetch <遠(yuǎn)程主機(jī)名> <分支名>
到了這里,關(guān)于Git分支篇git branch和git checkout的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!