前言
上一篇文章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 git@github.com: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/s..., 有什麼問題歡迎留言
日拱一兵 | 原創