美文网首页Unity跨平台技术分享
使用命令快速重置更新git仓库

使用命令快速重置更新git仓库

作者: BowenK | 来源:发表于2017-11-29 19:48 被阅读38次

    最近需要使用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 '更新项目结束......'
    

    本文固定链接

    相关文章

      网友评论

        本文标题:使用命令快速重置更新git仓库

        本文链接:https://www.haomeiwen.com/subject/xgmpbxtx.html