前言
上一篇文章Git Worktree 高級使用 整體反應不錯,這完全是日常開發中可以用到的奇淫技巧。微服務環境下,通常我們都會有多個 repo,高級用法好歸好,但每個 repo 都按照高級用法進行配置,還是比較麻煩的,你看這不就有同學發聲了嘛
說者有心,聽者有意,那就寫個腳本吧
Git Worktree 腳本
個人不是很擅長寫 bash script,磕磕絆絆寫了一個 worktree.sh
,完全執行上一篇文章的整個過程
#!/bin/bash -e
repo=$1
dir="${repo##*/}"
dir="${dir%.*}"
echo $dir
branch=$2
defaultBranch="${branch:-main}"
mkdir -p $dir
cd $dir
git clone --bare $repo .bare
echo "gitdir: ./.bare" > .git
echo " fetch = +refs/heads/*:refs/remotes/origin/*" >> ./.bare/config
git worktree add $defaultBranch
這個 script 接收兩個參數
- 第一個參數是 repo,
https | ssh
兩種方式都可以 - 第二個參數是 branch,不同的 repo 默認的主分支命名可能不一樣,Github 現在將主分支命從 master 改爲
main
,所以這裏默認值就是main
該腳本默認創建 repo 同名文件夾
將 worktree.sh 保存在磁盤目錄的某個位置,並授權(最大權限)
chmod -R 777 worktree.sh
接下來就測試一下效果
假如默認主分支名是 develop
, 我們只需要添加一個參數就可以了:
../worktree.sh [email protected]:FraserYu/amend-crash-demo.git develop
每次找可執行文件的目錄很顯然不是一個好的方式,我們需要起個別名,配知道環境變量中,這樣方便我們全局使用,根據自己電腦情況打開 .zshrc
或 .bashprofile
文件(我用的前者)
在裏面創建一個別名 gwt
(感覺這個名字好高端):
alias gwt='/Users/rgyb/Documents/projects/personal/worktree.sh'
然後刷新一下該文件
source ~/.zshrc
再來看一下效果:
到這裏,使用 worktree 應該非常簡單了吧
總結
如果你有多分支切換的各種痛點,學會使用 git worktree,那些問題將不復存在。服務提供全套,腳本放在了
https://github.com/FraserYu/script.git, 有什麼問題歡迎留言