我正在尝试使许多GIT存储库与我们的同步。当这些项目来来去去时,我决定创建一个单独的脚本,我用CronTab调用它来预成型脚本。
我确实亲自尝试过,它确实有效,但对于其他存储库,它没有。
我的Bash脚本:
external_repos=( "OurName.projectx" "OurName.anotherproject" "OurName.thirdproject" "OurName.stackexchange" )
for i in "${external_repos[@]}"
do
echo "Handling" $i
TEMP=`echo $i | cut -d "." -f 2`
TEMP="${TEMP^}"
REPO="EXTERNAL-REPO-$TEMP"
# printf "Temp : %sn" $TEMP
# printf "Repo : %sn" $REPO
if [ -d "$i" ]; then
pushd $i
git pull external_developer develop && git push origin master
popd
else
git clone https://extern_u:$3cret@bitbucket.org/external/$i.git
pushd $i
git remote rename origin external_developer
git remote add origin http://APIUser:P@s$w0rd@repo.ourdomain.com/scm/git/$REPO
git push origin master
popd
fi
done
一切都很顺利,直到最后一刻。。克隆是有效的。远程重命名有效远程添加有效,但git推送给我一个错误:
error: src refspec master does not match any.
error: failed to push some refs to 'http:http://APIUser:P@s$w0rd@repo.ourdomain.com/scm/git/EXTERNAL-REPO-Projectx'
这个错误意味着主机不存在外部权限?但据我所知,它确实存在。我还读到:Git将现有回购推送到一个新的、不同的远程回购服务器?和在新存储库上推送原始主机错误
在这之后,我对git做了更多的研究,我发现externals使用了一个名为develop的分支,main只是用于初始提交。
我是不是犯了一些巨大的Git错误?我该如何解决这个问题,或者有更好的方法来同步两个git吗?
在我忘记之前:我试着添加所有内容,之前也尝试过提交。
因此,我读到:src-refspec-master在git中推送提交时不匹配和git:error:src refspec-master与任何都不匹配
问题已解决,外部方没有主分支。只是一个发展中的分支。
external_repos=( "OurName.projectx" "OurName.anotherproject" "OurName.thirdproject" "OurName.stackexchange" )
for i in "${external_repos[@]}"
do
echo "Handling" $i
TEMP=`echo $i | cut -d "." -f 2`
TEMP="${TEMP^}"
REPO="EXTERNAL-REPO-$TEMP"
# printf "Temp : %sn" $TEMP
# printf "Repo : %sn" $REPO
if [ -d "$i" ]; then
pushd $i
git pull external_developer develop && git push origin develop
popd
else
git clone https://extern_u:$3cret@bitbucket.org/external/$i.git
pushd $i
git remote rename origin external_developer
git remote add origin http://APIUser:P@s$w0rd@repo.ourdomain.com/scm/git/$REPO
git push origin develop
popd
fi
done