使用命令快速重置更新git倉庫
阿新 • • 發佈:2019-01-01
最近需要使用python做unity自動更新打包操作,因為我們的專案資源都是使用git倉庫做版本控制管理,所以在做自動更新打包操作的時候,首先就是先重置更新本地的倉庫並且同步git上的最新版本資源。
本來我想只要每次打包的時候,使用命令去拉取git最新的版本就可以了,但是如果你本地的版本跟git上的版本差異比較大,或者有衝突的時候就會更新失敗,這時候就不能直接使用 git pull 去拉取了,而是要先重置強制捨棄掉本地的所有修改,再然後去拉取git上的最新資源。根據這個想法我寫了一個指令碼
#!/bin/sh
# 指令碼目錄 先把專案更新下來
DIR="$( cd "$( dirname "${BASH_SOURCE[0 ]}" )" && pwd )"
PROJECT=$1 #專案的git名字
PRO_BRANCH=$2 #專案分支
BASE_GIT_URL="http://10.1.0.103:3000/global"
#專案git地址
PRO_GIT_URL="${BASE_GIT_URL}/${PROJECT}.git"
#你的專案路徑
DIR_PROJ="${DIR}/Build/${PROJECT}/workspace"
echo '更新專案開始......'
if [ ! -x "$DIR_PROJ/.git" ]; then
if [ -x "$DIR_PROJ" ]; then
echo '$DIR_PROJ已經存在,先刪除'
rm -r "$DIR_PROJ"
fi
echo "git控制不存在,checkount.....${PRO_GIT_URL}"
git clone $PRO_GIT_URL "${DIR_PROJ}"
cd "${DIR_PROJ}"
echo "${DIR_PROJ}"
git checkout "origin/${PRO_BRANCH}"
else
echo 'git控制已經存在, 更新資源'
cd "${DIR_PROJ}"
#git reset --hard
git checkout . && git clean -df
git pull
git checkout "origin/${PRO_BRANCH} "
fi
echo '更新專案結束......'
在測試的時候發現了一個新的問題就是當專案存在的時候去執行shell指令碼更新的時候,報了一個錯誤,讓我制定分支去更新具體報錯
更新專案開始......
git控制已經存在, 更新資源
HEAD is now at 9ab776d bowenk bowenk
You are not currently on a branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
HEAD is now at 9ab776d... bowenk bowenk
更新專案結束......
所以後面去網上找了個方法試下點選這裡去看看吧
網上很多人都是說用這個方法可以,但是我不知道我哪裡寫錯了就是不行,既然這樣我就用了個很醜的方法,既然讓我指定個分支去讓就指定吧,master分支是肯定會存在的,所以為我直接 git checkout master 然後再git pull 。
測試了下 每次都會更新到最新的資源,而且還不會報錯了,最後貼上完整的shell指令碼,希望大家多多指教。
#!/bin/sh
# 指令碼目錄 先把專案更新下來
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# STYLE_NAME=$1 #型別名字
PROJECT=$1 #專案的git名字
PRO_BRANCH=$2 #專案分支
BASE_GIT_URL="http://10.1.0.103:3000/global"
#專案git地址
PRO_GIT_URL="${BASE_GIT_URL}/${PROJECT}.git"
#你的專案路徑
DIR_PROJ="${DIR}/Build/${PROJECT}/workspace"
echo '更新專案開始......'
if [ ! -x "$DIR_PROJ/.git" ]; then
if [ -x "$DIR_PROJ" ]; then
echo '$DIR_PROJ已經存在,先刪除'
rm -r "$DIR_PROJ"
fi
echo "git控制不存在,checkount.....${PRO_GIT_URL}"
git clone $PRO_GIT_URL "${DIR_PROJ}"
cd "${DIR_PROJ}"
git checkout "origin/${PRO_BRANCH}"
else
echo 'git控制已經存在, 更新資源'
cd "${DIR_PROJ}"
git reset --hard
git checkout . && git clean -df
git checkout master
git pull
git checkout "origin/${PRO_BRANCH}"
fi
echo '更新專案結束......'