使用命令快速重置更新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 '更新项目结束......'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值