使用git的提交代码时,步骤繁琐:先add,后commit,再push:

1
2
3
4
git status
git add .
git commit -m "备注"
git push

完全可以用一个脚本减少这些重复操:

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
if [ "$1" == "" ]
then
set "默认提交"
fi
git status
git add .
git commit -m $1
git push
echo "==========提交成功=========="

保存为cmt.sh文件放在工程下即可,但这还远远不够,因为每次提交都要在commit时做个备注,所以该脚本使用时可直接在运行命令后添加备注,如:

1
sh cmt.sh 这是备注信息

这还不够

这样方便了很多,但毕竟公司不止一个工程,难道每个项目下都要添加该脚本?当然,还有更好的办法——用alias定义成一个可全局使用的命令:
原理可参考这篇文章:用alias自定义shell命令,但这里稍有不同的是,为了维护方便,没有把alias的命令写在自己的~/.zshrc 或~/.bashrc里,而是把该脚本放在本地某个文件下,用alias指向链接即可:

1
allies  cmt='/你的脚本路径/cmt.sh'

这样在终端直接运行命令cmt即可自动提交。

注意(1):

仅仅这样执行cmt会提示没有权限:

1
zsh: permission denied: /xx/xx/cmt.sh

这是因为cmt.sh默认脚本默认是没有权限直接运行的,执行ls -al可看到其权限信息为:-rw-r--r--即自己只有读r(4)写w(2)没有执行权限x(1),所以要用chmod命令修改权限为-rwxr--r--即744。所以执行命令赋予其可执行权限:

1
chmod 744 cmt.sh

这样在终端执行cmt可看到代码已经自动提交。

注意(2):

如果在分支上提交失败,并提示一下信息:

1
2
3
4
fatal: The current branch 分支名 has no upstream branch.
To push the current branch and set the remote as upstream, use

git push --set-upstream origin 分支名

那就执行:

1
git push --set-upstream origin 分支名

因为脚本里的push命令直接就是git push,而非git push origin 分支名,运行上述命令即可提交。