瞬间爱上命令行:代码提交脚本
使用git的提交代码时,步骤繁琐:先add,后commit,再push:1
2
3
4git 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
4fatal: 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 分支名
,运行上述命令即可提交。