前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git常用操作及自动拉取资料

git常用操作及自动拉取资料

原创
作者头像
力力RiversFlow
修改2020-12-09 09:52:32
2.4K0
修改2020-12-09 09:52:32
举报
文章被收录于专栏:游戏研发游戏研发

现在越来越多项目使用git, 本文记录git常用操作及在linux里自动拉取相应的资料, 再通过samba系统提供给其它人员使用

一. git拉取分支,以拉取redis分支2.2为例子

  1. 创建新文件并初始化git: git init
  2. 与origin master建立连接: git remote add origin https://github.com/redis/redis.git
  3. 把redis 分支2.2拉到本地 git fetch origin 2.2
  4. 在本地创建分支2.2 git checkout -b 2.2
  5. 把分支2.2上的内容都拉取到本地,如需拉取指定文件,请先参考拉取指定文件部分内容进行设置 git pull origin 2.2
  6. lfs文件拉取: git lfs pull 注:lfs没有安装,需安装:git lfs install

二. 拉取指定文件

1.git pull 指定文件或文件夹:默认git pull会拉取整个库,如果需要拉取指定文件或文件夹,

1.1. 设置core.sparsecheckout 为true 即

git config core.sparsecheckout true

1.2. 在.git/info/sparse-checkout文件中(如果没有则创建)添加需拉取的文件或文件夹

echo src>>.git/info/sparse-checkout

2.git 拉取指定lfs文件:如只想拉取images 文件夹,而不想获取 videos 文件夹

2.1. 拉取指定目录下的LFS对象

git config lfs.fetchinclude 'images/**'

2.2. 排除指定目录下的LFS对象

git config lfs.fetchexclude 'videos/**'

三. 提交git修改

1.将xx文件添加到暂存区:git add xx

注: 提交所有改动: git add -A .

  1. 提交: git commit -m "注释"
  2. 提交到2.2分支: git push origin 2.2

四. git常用命令

  1. 查看当前状态: git status
  2. 查看提交日志: git log
  3. 查看具体提交日志: git lop -p
  4. 对比不同: git diff
  5. 查看远程分支: git branch -a
  6. 查看远程仓库地址: git remote -v
  7. 检查下本地分支是否创建成功: git branch

五. 自动拉取

1.拉取脚本

1.1. 配置文件:td_update_config.txt

#n表示等待n秒后进行更新,n 必须大于等于0,小于0时不进行更新,时间误差为一分钟

wait_second=n

1.2. 如果git文件名为汉字,为了使用脚本处理,可以添加软链接

ln -s /data/xxx /data/Ln/TrunkDataTable

1.3. 更新脚本:td_update.sh

代码语言:txt
复制
#!/bin/sh

#提取这次更新的相应日志到td_git.log 
function getGitLog()
{
    cat /tmp/git_log.tmp.log | while read line
    do
        line_num=${#line}
        if [[ $line_num > 0 ]];then
            para_0=`echo $line | cut -d ':' -f 1`
            if [[ $para_0 == "Date" ]];then
                para_1=`echo $line | cut -d ':' -f 2`
                para_1_=`echo $para_1|awk '{sub("^ *", "");print}'`
                para_2=`echo $line | cut -d ':' -f 3`
                para_3=`echo $line | cut -d ':' -f 4`
                para="\""$para_1_":"$para_2":"$para_3"\""
                #仅提取这个时间后的提交记录
                echo "git log --after=$para>td_git.log">/tmp/get_git_log.sh
                chmod +x /tmp/get_git_log.sh
                /tmp/get_git_log.sh
                break
            fi
        fi
    done
}

#会在crontab里调用,路径使用绝对路径. 自己用时需换成自己的路径
cd /data/Ln/TrunkDataTable

#获取td_update_config.txt配置的等待更新时间,单位为秒
for line in `cat ./td_update_config.txt`
do
    line_num=${#line}
    if [[ $line_num > 0 ]];then
        para_0=`echo $line | cut -d '=' -f 1`
        para_1=`echo $line | cut -d '=' -f 2`
        if [[ $para_0 == "wait_second" ]];then
            wait_second=$para_1
        fi
    fi
done

#只有等待时间大于0时才执行更新操作
if [[ $wait_second -gt 0 ]];then
    #等待相应的时间,单位秒
    sleep $wait_second

    #提取当前版本相应的日志
    git log -p -1>/tmp/git_log.tmp.log
    
    #进行更新
    git pull
    git lfs pull

    #提取相应日志到git日志
    getGitLog

    #记录本次更新到历次更新日志
    curr_time=`date '+%Y-%m-%d %H:%M:%S'`
    cd /data/Ln/TrunkDataTable
    sed -i 's|'"${wait_second}"'|-1|' ./td_update_config.txt 
    echo $curr_time" update wait_second="$wait_second>>/data/Ln/TrunkDataTable/td_update.log
fi 

1.4. 历次更新日志:td_update.log

1.5. 本次git更新日志:td_git.log

2.定时检查执行:用crontab里进行设置

2.1.编辑crontab: crontab -e

2.2.添加每分钟自动执行脚本:

*/1 * * * * /data/Ln/TrunkDataTable/td_update.sh &

六. 主要参考:

  1. https://blog.csdn.net/carfge/article/details/79691360
  2. https://blog.csdn.net/lijing742180/article/details/84637029
  3. https://zzz.buzz/zh/2016/04/19/the-guide-to-git-lfs/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档