git worktree與分支依賴隔離的使用場(chǎng)景分析
git worktree介紹
git worktree
是 Git 命令,用于管理多分支工作區(qū)。
使用場(chǎng)景:
- 同時(shí)維護(hù)不同分支,隔離分支依賴差異:從原有項(xiàng)目開(kāi)辟一個(gè)分支作為另一個(gè)新項(xiàng)目,當(dāng)兩個(gè)項(xiàng)目依賴差距越來(lái)越大時(shí),每次切換分支后都需要重新安裝依賴。通過(guò)
git worktree
可以隔離兩個(gè)分支的依賴,并且兩個(gè)分支可以互相merge、cherry-pick。 - 多個(gè)分支同步開(kāi)發(fā):允許在同一存儲(chǔ)庫(kù)中的不同分支上同時(shí)進(jìn)行工作,而不需要頻繁切換分支,這對(duì)于需要同時(shí)處理多個(gè)功能或修復(fù)多個(gè) bug 的情況非常有用。
- 進(jìn)行實(shí)驗(yàn)性更改:在不影響主工作目錄的情況下,嘗試進(jìn)行實(shí)驗(yàn)性的更改或調(diào)試。
- 同時(shí)進(jìn)行長(zhǎng)期和短期任務(wù):有助于同時(shí)處理長(zhǎng)期開(kāi)發(fā)任務(wù)和短期修復(fù)任務(wù),而無(wú)需相互影響或混淆。
以下是 git worktree
的子命令:
add
:在當(dāng)前分支下創(chuàng)建一個(gè)新工作區(qū)。remove
:刪除一個(gè)已添加的工作區(qū)。list
:顯示所有已添加的工作區(qū)。lock
:鎖定工作區(qū)以防止在合并或其他操作時(shí)被意外刪除。unlock
:手動(dòng)取消工作區(qū)的鎖定。
git worktree add <path> [(-b | -B) <new-branch>]
在當(dāng)前分支下創(chuàng)建一個(gè)新工作區(qū),效果類似于git clone
,但新舊工作區(qū)屬于同一個(gè)倉(cāng)庫(kù),可以正常add、commit、merge
等操作。
<path>
:要?jiǎng)?chuàng)建的新工作區(qū)的路徑,一般建立在當(dāng)前目錄的上一層,如../newpath
。<new-branch>
:要在哪個(gè)分支上創(chuàng)建工作區(qū)。如果未指定<new-branch>
,則表示基于當(dāng)前分支HEAD創(chuàng)建新分支<path>
。-b
表示基于當(dāng)前分支HEAD創(chuàng)建新分支<new-branch>
,-B
表示強(qiáng)制創(chuàng)建。
注意:
- 原始倉(cāng)庫(kù)默認(rèn)是一個(gè)工作區(qū),關(guān)聯(lián)當(dāng)前
checkout
的分支! - 只能創(chuàng)建未被關(guān)聯(lián)的分支,或者通過(guò)
-b
指令創(chuàng)建新分支! - 可以理解為一個(gè)工作區(qū)一個(gè)HEAD,但是不能多個(gè)HEAD指向同一個(gè)分支。
# 基于HEAD創(chuàng)建工作區(qū)../brance1,分支為brance1 # 相當(dāng)于 git worktree add ../brance1 -b brance1 git worktree add ../brance1
# 關(guān)聯(lián)branch2創(chuàng)建工作區(qū)../brance1,分支為brance2 git worktree add ../brance1 branch2
# 基于HEAD創(chuàng)建工作區(qū)../brance1,分支為brance2 git worktree add ../brance1 -b brance2
git worktree remove <worktree>
移除worktree有兩種方式。
- 方式一:
# 移除指定工作區(qū)<worktree> git worktree remove <worktree>
- 方式二:直接刪除工作區(qū)對(duì)應(yīng)的文件夾,然后執(zhí)行
# 清除worktree記錄 git worktree prune
注意:刪除工作區(qū),關(guān)聯(lián)的分支并不會(huì)被刪除哦!
git worktree list
顯示所有已添加的工作區(qū)。
git worktree list # 顯示完整的hash值 git worktree list --porcelain
git worktree lock <worktree>
用于鎖定工作區(qū)<worktree>
,以防止在合并或其他操作時(shí)被意外刪除。
git worktree unlock <worktree>
解鎖工作區(qū)<worktree>
。
git worktree處理分支依賴沖突
背景
現(xiàn)在遠(yuǎn)程倉(cāng)庫(kù)有一個(gè)項(xiàng)目gitworktree,存在兩個(gè)分支vue
和react
,兩個(gè)分支作為兩個(gè)項(xiàng)目并行開(kāi)發(fā),且兩分支下的依賴存在差異。
步驟
1、 將gitworktree目錄下所有內(nèi)容遷移到新的文件夾gitworktree/project1,方便在一個(gè)文件夾下管理。
2、 在目錄gitworktree/project1下,執(zhí)行git worktree add ../vue vue
。執(zhí)行完后可以發(fā)現(xiàn)gitworktree目錄下存在兩個(gè)文件夾,分別是project1 和 vue。
3、 在目錄gitworktree/project1下,執(zhí)行git worktree add ../react react
。執(zhí)行完后可以發(fā)現(xiàn)gitworktree目錄下存在三個(gè)文件夾,分別是project1 、 vue 和 react。
這時(shí)候就可以愉快的玩耍了,可以像往常一樣add、commit、merge
,甚至cherry-pick
!兩個(gè)分支vue
和 react
已經(jīng)隔離開(kāi)了,且依賴互不影響。
與往常不同的是,vue
和react
之間不能互相切換分支,只需要打開(kāi)對(duì)應(yīng)工作區(qū)即可進(jìn)入對(duì)應(yīng)的分支。
到此這篇關(guān)于git worktree與分支依賴隔離的文章就介紹到這了,更多相關(guān)git worktree與分支依賴隔離內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Git如何實(shí)現(xiàn)撤銷(xiāo)提交(命令行+IDEA)
- git提交報(bào)錯(cuò)pre -commit hook failed (add --no-verify)問(wèn)題及解決
- git提交出現(xiàn)commit提醒信息界面怎樣退出
- git合并部分提交的實(shí)現(xiàn)
- git如何將master分支上的代碼合并到自己新建的分支上
- gitlab分支合并沖突的處理過(guò)程
- git分支或指定文件回退到指定版本命令詳解
- GitLab在IDEA中回滾主分支問(wèn)題
- git流水線(Pipeline)導(dǎo)致分支(Branch)無(wú)法合并問(wèn)題及解決
- git如何合并某個(gè)分支的某次提交(cherry-pick)
- git如何從某個(gè)分支的指定歷史版本中創(chuàng)建新分支
- Git提交到錯(cuò)誤分支如何解決
相關(guān)文章
基于IntelliJ IDEA/Android Studio插件開(kāi)發(fā)指南(推薦)
Android Studio是基于Intellij IDEA開(kāi)發(fā)的,所以開(kāi)發(fā)Android Studio的插件,其實(shí)就是開(kāi)發(fā)IDEA的插件。根據(jù)官方推薦,使用IDEA IDE來(lái)開(kāi)發(fā)IDEA插件,本文給大家介紹插件開(kāi)發(fā)的基本流程,感興趣的朋友一起看看吧2021-10-10idea對(duì)CPU的占用率過(guò)大問(wèn)題的解決方法
本文主要介紹了idea對(duì)CPU的占用率過(guò)大問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03VsCode中ctrl+s后會(huì)在當(dāng)前目錄下自動(dòng)生成dist目錄的方法
這篇文章主要介紹了VsCode中ctrl+s后會(huì)在當(dāng)前目錄下自動(dòng)生成dist目錄,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09教你如何在WordPress發(fā)布文章時(shí)自定義文章作者名稱
這篇文章主要介紹了如何在WordPress發(fā)布文章時(shí)自定義文章作者名稱2021-09-09