[SourceTree]一次取回所有 Repository 內的最新資料

透過 Script 搭配 GIT 的指令,一次更新所有的 Repository,免去一個一個去更新

最近要管理的專案越來越多,有些時候一兩天沒有看,同仁們就對程式有不少的異動,因此就需要將每個 Repository 給更新,順便 Review 一下看大家修改了那些程式碼。

但每次開啟 SourceTree,就要花好幾個步驟才能一個一個去更新,因此想說看是否有偷懶的方式來簡化,剛好看到網路上有人透過 Bash Script 來做一些處理,因此就依樣畫葫蘆,將指令給修改一下,這樣以後只要點擊 Script,就可以一次把所有目錄下的 Repository 給更新,對我這種懶人來說這就方便取多了。

程式碼如下所示,我將該檔案命名為 update_git_repos.sh

#!/bin/bash

# store the current dir
CUR_DIR=$(pwd)

# Let the person running the script know what's going on.
echo "Pulling in latest changes for all repositories..."

# Find all git repositories and update it to the master latest revision
for i in $(find . -name ".git" | cut -c 3-); do
    echo "";
    echo $i;

    # We have to go to the .git parent directory to call the pull command
    cd "$i";
    cd ..;

    CUR_BRANCH=`git branch | grep '*'| tr '* ' ' '`
	
    # finally pull
    git branch | tr '*' ' ' | while read -r branch ; do git checkout $branch ; git fetch --all; git pull --all; done
	
    git checkout $CUR_BRANCH

    # lets get back to the CUR_DIR
    cd $CUR_DIR
done

echo "Complete!"

這樣以後要更新,我只要點擊這個 Script,就會將目前目錄下,所有的 git 的 Repository 都更新。

有需要的朋友可以參考看看囉。