0
我寫如下一個小bash腳本:的Git/bash的更新當地的分支機構
#if you add a project you must use the format git clone https://<username>:<passsord>@github.com/ZiathLtd/<project-name>.git
#projects[1]=samples
#projects[2]=TubePicker
#projects[3]=FloydDriver
#projects[4]=Handheld
projects[1]=handheldserver
#projects[6]=ziathscripts
#projects[7]=handheldscripts
basedir="/mnt/raid/git"
for i in ${projects[@]}; do
echo 'updating' ${i}
cd ${basedir}/${i}
for b in `git branch -r | grep -v -- '->'`; do
echo working on ${b}
git rev-parse --verify ${b}
if [ $? -ne 0 ]
then
echo 'new branch'
git branch --track ${b##origin/} $b;
fi
done
#git fetch --all
#git pull --all
done
基本上,它應該給我那些n要具有本地分支機構的項目;然而,當我執行這個腳本(分支假新聞2不存在本地唯一遠程)我得到以下幾點:
[email protected]:/etc/git-fetch# ./git-fetch.sh
updating handheldserver
working on origin/converttospringbootproject
5eee6f6d65feb2f49f4f7a4edecc37a17081dfae
working on origin/fake-news
95e840807a2c7d125c053a6a06bb1e9c7fd11b78
working on origin/fake-news2
95e840807a2c7d125c053a6a06bb1e9c7fd11b78
working on origin/fake-news3
497ecdc1e31f312884fe9666ef3408f3bd8083c8
working on origin/master
1a541521941687ae27bccfa412c4372db9afeaea
working on origin/maven-spring-boot-plugin
46e25767e41a639c6cc7760fe4a2249d01a00060
注意,對於假新聞2哈希是一樣的假新聞 - 它是就像打電話給假新聞2使用假新聞標籤一樣(我希望你喜歡我用於虛擬分支的名字的諷刺!)。然而,當在命令行中運行,我得到以下幾點:
[email protected]:/mnt/raid/git/handheldserver# git rev-parse --verify fake-news
95e840807a2c7d125c053a6a06bb1e9c7fd11b78
[email protected]:/mnt/raid/git/handheldserver# echo $?
0
[email protected]:/mnt/raid/git/handheldserver# git rev-parse --verify fake-news2
fatal: Needed a single revision
[email protected]:/mnt/raid/git/handheldserver# echo $?
128
這是您希望爲假新聞2不具有本地分支什麼。它看起來好像是git在循環中做了一些奇怪的事情,或者我正在運行的命令在回顯中獲取$ {b}的正確變量,而不是在命令上。
我完全卡住了,所以我希望別人來過這裏。請注意,我嘗試了其他git命令來檢查本地分支(如show-ref)的存在,但它們似乎都做同樣的事情。
感謝,在您的幫助
謝謝;這正是我的同事一看到它就制定出來的!當我累了時,我的工作不好!謝謝回答。 –