通过设置git alias来创建自定义命令
当使用的命令行工具不是git的时候,添加!来声明
例如: git config --global alias.pushopen '!bash git-open.sh'
在~/.bashrc 文件里面声明环境变量:
# User configuration @~/.bashrc
export PATH=~/bin:"$PATH"
复制代码
创建~/bin文件夹。
创建 shell 脚本文件
编写一个自定义提交的shell脚本(git-open.sh):
- #!/bin/bash
-
- gitlab=http://gitlab.personal.io
-
- git push $@
-
- remote='origin'
-
- if [[ ! -z $1 ]] && [[ ! "$1" =~ "-" ]];then
- br=$1
- fi
-
- address=$(git remote -v | grep $remote | awk -F' ' 'NR==1{print $2}' | awk -F'/' '{print "/"$4"/"$5}')
- drs=${address:0:-4}
- commit=$(git log -1 | awk 'NR==1{print $2}')
-
- echo "$gitlab$drs"/commit/"$commit"
复制代码
保存之后执行
git pushopen 时则会自动在命令行打印出最新提交的commit链接。
编写另一个自定义提交的shell脚本(git-clear.sh)
- #!/bin/bash
-
- arg=${1:-"-d"}
- br=${2:-"fixbug"}
-
- if [[ $arg != "-d" ]] && [[ $arg != '-D' ]]
- then
- arg='-d'
- br=$1
- fi
-
- git branch | grep $br | xargs git branch $arg
复制代码
保存后执行 git clear xxx(不传该参数默认为fixbug) 就可以自动删除 xxx 相关的分支了。
最近又觉得一个切换分支的操作不错(git-co.sh):
```
#!/bin/bash
if [[ -z $1 ]]
then
echo plz input branch name
else
if [[ -z $2 ]]
then
if [[ $1 == - ]]
then git checkout $1
else
br=$(git branch -a | grep $1 | awk -F ' ' 'NR==1{print $1}')
if [[ -z $br ]]
then echo not match branch name with: $1
else git checkout $br
fi
fi
else
git checkout $*
fi
fi
```
设置好之后切换分支就可以模糊切换了