【效率提升】git一鍵克隆、更新、切換分支
背景
目前公司採用微服務架構的方式,拆分十幾個甚至更多的服務,此時由於服務數量的增加,對專案的管理變得更加麻煩,空閒之餘研究了幾個小工具(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地址如下
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檔案內容示例如下
用途: 當版本迭代時,如從X10至X11版本時,需要切換專案的分支,可通過該工具,批量快速切換。
總結
這幾個指令碼的實質還是通過bat指令碼批量執行git的命令語句。