本文实现主要用到的命令:

  1. GIT命令: git pull
  2. GIT命令: git log
  3. GIT命令: git diff
  4. 文件读取: head
  5. 文件写入: sed

我是在X度上搜不到完整的方案(单个命令的用法自行X度),结合多方面杂乱的搜索结果、自己Windows7环境实验得出的结论。

因此直接上我本地可执行的代码,后续如果有人感兴趣,可以再展开详细:

#!/bin/bash
#resetsqlDir=`pwd`
LOG_FILE=log_git_latest.txtif [[ ! -f $LOG_FILE ]]; thenecho 更新日志文件不存在!进行首次记录……echo "-------------`date +%Y-%m-%d` This is the beginning of the file.-------------" > $LOG_FILEfirst_time_latest=`git log --pretty=format:'%h %cd %cn %s 明细:%b' --date=format:'%Y-%m-%d_%H%M%S' -1`echo $first_time_latest# 往首行插入记录sed -i '1i'"$first_time_latest"'' $LOG_FILE
fiecho $sqlDir
echo 上次获取到最新的commit、时间:
# 读取首行记录
last_time_latest=`head -1 log_git_latest.txt`
echo $last_time_latestecho 开始获新...
git pull 1> /dev/nullecho 本次获取到最新的commit、时间:
this_time_latest=`git log --pretty=format:'%h %cd %cn %s 明细:%b' --date=format:'%Y-%m-%d_%H%M%S' -1`
echo $this_time_latestSQL_PACK_FILE=`date +%Y-%m-%d_%H%M%S`.tar.gz
echo 本次更新将打包生成 [ $SQL_PACK_FILE ],包含以下文件:
#git diff ${last_time_latest:0:7}..${this_time_latest:0:7} --name-only
git diff ${last_time_latest:0:7}..${this_time_latest:0:7} --name-only --diff-filter=ACMR | grep .sql  | xargs tar -zcvf $SQL_PACK_FILE# 往首行插入记录
sed -i '1i'"$this_time_latest"'  生成的SQL更新包:'"$SQL_PACK_FILE"'' $LOG_FILE

GIT的log、diff命令可能出现“中文文件名乱码”的问题,需要进行如下配置:

git config --global core.quotepath false          # 显示 status 编码
git config --global gui.encoding utf-8            # 图形界面编码
git config --global i18n.commit.encoding utf-8    # 提交信息编码
git config --global i18n.logoutputencoding utf-8  # 输出 log 编码

如果是Linux,因为 git log 默认使用 less 分页,所以需要对 less 命令进行 utf-8 编码:

export LESSCHARSET=utf-

效果图,加示意箭头

git 检查更新文件_Git通过差异比对快速打包待更新文件(SQL)相关推荐

  1. .net core 文件流保存图片_如何将图片打包成PDF文件进行保存?

    如何将图片打包成PDF文件进行保存?我们都知道PDF文件是一种电子文档发行和数字化信息传播的理想文档格式,支持跨平台传输.对普通读者而言,用PDF制作的电子书具有纸版书的质感和阅读效果,可以逼真地展现 ...

  2. win10 android 传多个文件夹,win10怎么使用ROBOCOPY快速复制多个文件夹

    robocopy是一款高级的复制工具,相信大家很少接触过,那么robocopy有什么作用呢?我们可以通过robocopy就可以同时复制多个文件,轻松实现多线程传输文件.那么win10如何使用ROBOC ...

  3. mac 命令行 解压7z文件_如何在Mac上快速压缩和解压文件?Mac上解压和压缩文件的方法...

    苹果mac电脑怎么压缩和解压文件?Mac电脑仅默认支持把文件压缩成zip格式,解压成zip.tar.gz,bz2等格式,有些操作需要安装第三方软件来完成,这篇文章为大家带来几种关于在Mac上解压和压缩 ...

  4. 如何批量在文件夹中建立php,怎样快速实现批量建立文件夹 电脑一次性快速批量新建多个文件夹的方法...

    今天给大家带来怎样快速实现批量建立文件夹,电脑一次性快速批量新建多个文件夹的方法,让您轻松解决问题. 如何快速实现批量建立文件夹方法 电脑如何一次性快速批量新建多个文件夹.我们在使用电脑的时候,总是会 ...

  5. 如何快速打包SOLIDWORKS工程文件

    在我们完成某个项目之后,我们的相关文件夹中往往会有很多项目相关文件(SOLIDWORKS零件.SOLIDWORKS装配体.SOLIDWORKS工程图.参考.设计表.设计活页夹内容.贴图.外观及布景以及 ...

  6. linux下快速打包/多线程压缩文件的方法

    文章目录 打包大量文件 2. 多线程压缩文件 2.1 与tar配合使用 2.2 更多用法 今日遇到一个问题,就是把一个远程主机生成的10万个图片文件(训练集)传到kaggle.所以第一个遇到的问题,就 ...

  7. 如何查找一个文件linux,linux系统上如何快速的查找一个文件?

    以前看到过一句话:linux的水平体现在快速查找文件上~~~ ,或许这句话言过其实 但是因为linux上一切皆文件,任何我们想做的事情都可以通过编辑文件来完成, 如服务器的配置,维护,一切的一切我们都 ...

  8. qt上传文件到iis文件服务器,一篇文章快速搞懂Qt文件读写操作

    导读:Qt当中使用QFile类对文件进行读写操作,对文本文件也可以与QTextStream一起使用,这样读写操作会更加简便.QFileInfo可以用来获取文件的信息.QDir可以用于对文件夹进行操作. ...

  9. linux比较10个文件是否一致,Linux中文件管理--cmp--比较两个文件是否有差异

    cmp命令用于比较两个文件是否有差异,当相互比较的两个文件完全一样时,则该命令不会显示任何信息.若发现有所差异,预设会标示出第一个不同之处的字符和列数编号.若不指定任何文件名称或是所给予的文件名为&q ...

最新文章

  1. 1130 Infix Expression
  2. c#中如何跨线程调用windows窗体控件?
  3. [汇编语言学习笔记][第二章寄存器]
  4. 分布式计算 MapReduce与yarn工作机制
  5. 收藏 | 一文读懂机器学习中的正则化
  6. python dictionary_Python 字典(Dictionary)
  7. 法院才是最童叟无欺的一元店
  8. 计算机辅助翻译与人工翻译论文,计算机辅助翻译:理念和工具[翻译研究新探论文献文集].pdf...
  9. 多线程的那点儿事(之多核编程)
  10. Spring RestController
  11. 30多套API接口,还怕满足不了你的量化交易需求?
  12. 如何在5分钟内发现 SQL 语言中的数据血缘
  13. YOLOV5 + 双目测距(python)
  14. 海外旅游最常用的100句英语口语
  15. php调用手写板,手写板使用起来方便、快捷 其原理你知道吗?
  16. 给大家推荐一下常用的镜像站
  17. 会声会影浪漫婚礼视频——美到想哭
  18. 一个小巧的WINDOWS垃圾清理工具
  19. selenium打开网页被检测,怎么屏蔽和绕过
  20. 所有浏览器无法播放声音

热门文章

  1. android标题显示栏菜单在标题之下,Android菜单项标题不显示
  2. java实现分页打印功能_web 页面分页打印的实现
  3. springfox源码_Spring boot整合Springfox在线生成restful的api doc
  4. APP打开直接显示图片,去掉中间的白屏时间
  5. python自动点击网页按钮_Python+Selenium使用(二)- 自动点击下一页
  6. 如何禁用ALT+CLT+DEL组合键
  7. 那个抗血栓机器人_礼来抗血栓药物普拉格雷(Effient)不及波利维(Plavix)
  8. Cannot assign to 'self' outside of a method in the init family
  9. Java编程——服务器设计方案之应用限流
  10. schedule vs scheduleAtFixedRate