博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git直接提交删除的文件方法(附脚本)
阅读量:6826 次
发布时间:2019-06-26

本文共 1232 字,大约阅读时间需要 4 分钟。

hot3.png

在git项目中使用外部命令删除文件后,不能直接通过 git add 加入到暂存区,也不能直接进行 git commit , 必须进入交互模式提交 git commit -a , 但是这样为自动化带来不少麻烦。想办法解决这个问题,如下:

#!/bin/bash# 环境 CentOS 7.2# 统一语言环境,方便后面的匹配export LANG=en_US.UTF-8# 标记个时间吧^_^DateTime=$(date +"%F %T")Timestamp=$(date +"%s")# 到对应项目的根目录Src=$1if [ -d $Src ] ; then    cd $Srcelse    echo "there is no such dir: $Src "    exit 1fi# 先将所有其他的修改提交到暂存区git add .# 将所有删除的文件提交到暂存区git status |sed -n '/Changes not staged for commit/,$p' |grep 'deleted:'  > /tmp/git-rm-$Timestamp.logNum=$(wc -l /tmp/git-rm-$Timestamp.log |awk '{print $1}')if [ $Num -ge 1 ]; then    cat /tmp/git-rm-$Timestamp.log |awk  '{ $1=""; $2=""; print $0}' |sed -e 's/^[ \t]*//g' -e 's/[ \t]*$//g' |xargs -i echo '"{}"' |xargs git rmfi# 提交所有修改(包括删除的文件)git commit -m "$DateTime  提交了所有修改的文件"

原创内容,转载请标明出处: [[[]()]()]()

enjoy it.

更新(20161002): 上面的想法挺傻的,其实git解决了这个问题,只需要在git add 的时候加上 --all 选项即可。 以上代码可更新为:

#!/bin/bash# 统一语言环境,方便后面的匹配export LANG=en_US.UTF-8# 标记个时间吧^_^DateTime=$(date +"%F %T")Timestamp=$(date +"%s")# 到对应项目的根目录Src=$1if [ -d $Src ] ; then    cd $Srcelse    echo "there is no such dir: $Src "    exit 1fi# 先将所有其他的修改提交到暂存区git add --all .# 提交所有修改(包括删除的文件)git commit -m "$DateTime  提交了所有修改的文件"

转载于:https://my.oschina.net/foreverich/blog/712444

你可能感兴趣的文章
exchange2013恢复数据库
查看>>
flume收集tomcat日志保存到本地目录
查看>>
常用ftp子命令的总结
查看>>
IOS 集成 ijkplayer遇到的问题
查看>>
正则表达式
查看>>
在 JS 中使用 fetch 更加高效地进行网络请求
查看>>
javascript 分页算法
查看>>
Windows 8 中取消的功能特性
查看>>
android手机root后的安全问题
查看>>
bat改ip
查看>>
SpringBoot之在Servlet2.5容器中部署war应用
查看>>
jackson 输出json到控制台
查看>>
项目申请文档提纲
查看>>
加密解密第二章:ollydbg用法
查看>>
百万PV网站架构
查看>>
N26-第四周作业
查看>>
svn服务器搭建
查看>>
在vmware安装Ubuntu桌面软件
查看>>
Ubuntu14.04使用Remastersys打包整个镜像制作iso
查看>>
MySQL之用户和权限管理
查看>>