保姆級服務,一鍵 Git Worktree
本文轉載自微信公眾號「日拱一兵」,作者tan日拱一兵。轉載本文請聯(lián)系日拱一兵公眾號。
前言
上一篇文章Git Worktree 高級使用 整體反應不錯,這完全是日常開發(fā)中可以用到的奇淫技巧。微服務環(huán)境下,通常我們都會有多個 repo,高級用法好歸好,但每個 repo 都按照高級用法進行配置,還是比較麻煩的,你看這不就有同學發(fā)聲了嘛
說者有心,聽者有意,那就寫個腳本吧
Git Worktree 腳本
個人不是很擅長寫 bash script,磕磕絆絆寫了一個 worktree.sh,完全執(zhí)行上一篇文章的整個過程
- #!/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 接收兩個參數(shù)
第一個參數(shù)是 repo,https | ssh 兩種方式都可以
第二個參數(shù)是 branch,不同的 repo 默認的主分支命名可能不一樣,Github 現(xiàn)在將主分支命從 master 改為 main,所以這里默認值就是 main
該腳本默認創(chuàng)建 repo 同名文件夾
將 worktree.sh 保存在磁盤目錄的某個位置,并授權(最大權限)
- chmod -R 777 worktree.sh
接下來就測試一下效果
假如默認主分支名是 develop, 我們只需要添加一個參數(shù)就可以了:
../worktree.sh git@github.com:FraserYu/amend-crash-demo.git develop
每次找可執(zhí)行文件的目錄很顯然不是一個好的方式,我們需要起個別名,配知道環(huán)境變量中,這樣方便我們全局使用,根據(jù)自己電腦情況打開 .zshrc 或 .bashprofile 文件(我用的前者)
在里面創(chuàng)建一個別名 gwt(感覺這個名字好高端):
- ../worktree.sh git@github.com:FraserYu/amend-crash-demo.git develop
然后刷新一下該文件
- source ~/.zshrc
再來看一下效果:
到這里,使用 worktree 應該非常簡單了吧
總結
如果你有多分支切換的各種痛點,學會使用 git worktree,那些問題將不復存在。服務提供全套,腳本放在了
https://github.com/FraserYu/script.git, 有什么問題歡迎留言,那位童鞋,還有什么問題嗎?