1. 程式人生 > >使用命令快速重置更新git倉庫

使用命令快速重置更新git倉庫

最近需要使用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 '更新專案結束......'