git自动push脚本

最近几天尝试各种git库管理方案,还有各种库调试。

突然感觉到git的push太过繁琐了,用 git add. 全加上不科学, 一个个加又太费劲,内容撸完了推送一下还要输入那么多字,还要分三步,即使部分步骤用 && \ 也要打很多字,还真不如换成shell推送。

多方查证实验,目前比较好用的方法是这样:
因为一般大家都会添加一些全局忽略,所以基本不需要 --exclude 了,直接把其他的也添加上--others,只不过执行命令的时候会提示,一些文件已经被徐略,如果要添加,使用 -f 添加。

push.sh

1
2
3
4
5
#! /bin/bash
git ls-files --modified --others|xargs git add
git commit -m"$1"
git push origin
echo "job done."

通过 git ls-files 列出需要添加的文件名,然后用 xargsgit add

然后以后push只需要:

./push "填写commit内容" Enter

个人需求比较简单,所以只是添加所有修改过的文件(--modified),和新添加未追踪的文件(--others),排除(--exclude)掉node_modules 和系统隐藏文件而已。

ls-file 使用说明 https://www.git-scm.com/docs/git-ls-files/1.7.0

update @ 2019年05月24日

用上面的方法,如果文件名中包含空格会报错,无法成功执行命令。
处理方法如下 :

1
git ls-files -z --modified --others|xargs -0 git add

git ls-files 使用 -z 参数使用null处理空格, xargs 使用 -0 参数处理。