保姆級服務,一鍵 Git Worktree,這樣滿意嗎?

日拱一兵發表於2021-12-03

前言

上一篇文章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 接收兩個引數

  1. 第一個引數是 repohttps | ssh 兩種方式都可以
  2. 第二個引數是 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..., 有什麼問題歡迎留言

日拱一兵 | 原創

相關文章