【效率提升】git一鍵克隆、更新、切換分支

語言: CN / TW / HK

背景

目前公司採用微服務架構的方式,拆分十幾個甚至更多的服務,此時由於服務數量的增加,對專案的管理變得更加麻煩,空閒之餘研究了幾個小工具(bat指令碼),希望對大家有所幫助。

1.1. git批量克隆

1、將cloneList.txt和git_clone_batch.bat兩個檔案,放到用於存放專案的根目錄。

2、在cloneList.txt檔案中維護需要批量克隆的http地址,每行一個專案地址。註釋用#開頭。

3、雙擊執行git_clone_batch.bat,則會進行批量克隆專案,若專案已存在,命令會提示已存在該專案,會繼續執行下一條命令。

cloneList.txt檔案內容示例如下

```js

若不指定分支,則下載該專案的預設分支

"git專案的http地址"

下載指定分支的程式碼

-b "分支名" "git專案的http地址"

``` git專案的http地址如下

image.png

git_clone_batch.bat指令碼內容如下

js ::for loop test chcp 65001 @echo off for /f delims^=^ eol^=^# %%c in (cloneList.txt) do git clone %%c pause 用途:在給新人開通專案許可權後,可提供給新人使用,可快速下載所有對應的專案。

1.2 git批量更新

1、將git_pull_batch.bat檔案,放到用於存在專案的更目錄,雙擊執行,則會對該目錄下所有專案執行git pull 操作。

備註:使用前應先確認專案是否有未提交的程式碼,避免存在衝突的情況。

git_pull_batch.bat檔案的內容如下

```js @echo off chcp 65001 for /d %%i in () do ( if not %%i==[Filter] ( if exist "%~dp0%%i.svn\" ( echo 正在更新svn專案 %%i @cd %cd%\%%i && @svn update ) else if exist "%~dp0%%i.git\" ( echo 正在更新git專案 %%i @cd %cd%\%%i && @git pull ) else ( echo. echo -- 進入資料夾 %%i cd "%~dp0%%i\ for /d %%j in () do ( if not %%j==[Filter] ( if exist "%~dp0%%i\%%j.svn\" ( echo 正在更新svn專案 %%j @cd %~dp0%%i\%%j && @svn update ) else if exist "%~dp0%%i\%%j.git\" ( echo 正在更新git專案 %%j @cd %~dp0%%i\%%j && @git pull ) ) ) ) ) )

pause

```

1.3 git批量切分支

1、將switchList.txt和batch_switch.bat兩個檔案,放到用於存放專案的根目錄。

2、在switchList.txt檔案中維護相關資料,每行的文字內容為專案+目標分支,以空格為間隔。

3、雙擊執行batch_switch.bat,則會切換存在於switchList.txt檔案中的專案的分支,根目錄中若不存在其檔案中的描述的專案名,則會跳過處理。

batch_switch.bat檔案的內容如下 ```js @echo off chcp 65001 for /f delims^=^ eol^=^# %%c in (switchList.txt) do ( for /f "tokens=1,2" %%a in ("%%c") do ( set d=%%a&set t=%%b if exist %%a (echo 專案:%%a 分支將準備切換至 %%b cd %%a git fetch git checkout %%b git pull cd ../ ) ) )

pause ```

switchList.txt檔案的內容格式如下 js "專案名" "目標分支" "專案名" "目標分支" switchList.txt檔案內容示例如下

checkout說明.png 用途: 當版本迭代時,如從X10至X11版本時,需要切換專案的分支,可通過該工具,批量快速切換。

總結

這幾個指令碼的實質還是通過bat指令碼批量執行git的命令語句。