mac系统通过idea终端使用git
一、引言
本文旨在解决使用idea过程中,提交和合并代码时idea卡顿和响应慢以及过程繁琐的问题。
1.1 文章背景
- 结合我曾遇到的问题吧,当时因为一些小小的改动,需要频繁去将开发分支合并到test发版测试,过程繁琐不说,使用idea图形化界面还卡得要死;
- 后续是使用终端写git指令,效果虽然好点,但是每次add commit push merge 还是很头疼;
- 后来是写了一个shell脚本,把这些命令封装在一起,每次提交直接运行脚本,效果还可以;
- 最后是直接通过别名的方式,直接在系统下配置别名,直接在终端使用别名,效果好多了。
1.2 文章目标
- 在网上看到很多同行有这方面的困扰,希望能够帮助他们
- 把我自己觉得能提升效率的方法或者方式,分享出来
- 我觉得我提供的是解决问题的方案,实际上可以有很多扩展,我们可以做很多事
- 并不是仅仅局限于idea,而是能够辐射到所有使用mac,windows,linux等开发环境的开发者。
二、解决方案
2.1
写一个脚本,命名为 .bashrc ,内容如下
shell
alias gs="git status" # to see changes that have been staged and which haven't
alias ga="git add . " # add
alias gb="git branch" # branches
alias gf="git fetch origin --recurse-submodules=no --progress --prune" # git fetch
alias gbr="git branch -r" # remote branches
alias gcu="git rev-parse --abbrev-ref HEAD" # current branch
alias gac="git add . && git commit -m" # to stage and commit changes
#git push and pull
alias gp="git push" # + remote & branch names
alias gpl="git pull" # + remote & branch names
# Pushing/pulling to origin remote
alias gpo="git push origin" # + branch name
alias gcb="git checkout -b" # To create a new branch and checkout into it
alias gcm="git checkout master"
alias gcmp="git checkout master && git pull"
alias gct="git checkout test"
alias gctp="git checkout test && git pull"
alias gcp="git checkout pre"
alias gcpp="git checkout pre && git pull"
alias gcd="git checkout dev"
alias gcdp="git checkout dev $$ git pull"
alias gl="git log"
alias g="git"
alias gd="git branch -d"
alias mc="mvn clean"
alias mci="mvn clean -U install -Dmaven.test.skip=true "
alias mcc="mvn clean -U compile -Dmaven.test.skip=true "
alias md="mvn -Dfile.encoding=UTF-8 smart-doc:rpc-html "
alias mr="mvn spring-boot:run"
# pull add commit push
gacp(){ git pull && git add . && git commit -m "$1" && git push;}
gmttp(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git checkout test && git pull && git merge "$currentbranch" && git push && git checkout "$currentbranch";
}
gmttpi(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git checkout test && git pull && git merge "$currentbranch" && git push && mci && git checkout "$currentbranch";
}
gmtpp(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git checkout pre && git pull && git merge "$currentbranch" && git push && git checkout "$currentbranch";
}
gmttp2(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git checkout "$1" && git pull && git merge "$currentbranch" && git push && git checkout "$currentbranch";
}
# 合并代码,不切换回来
gm(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git pull && git add -A && git commit -m $1
git push && git checkout $2 && git pull
git merge "$currentbranch" && git push
}
# 合并代码 切换回来
gmc(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git pull
git add -A
git commit -m $1
git push
git checkout $2
git pull
git merge "$currentbranch"
git push
git checkout "$currentbranch"
}
# push新分支
gpNew(){
currentbranch=$(git rev-parse --abbrev-ref HEAD)
git push --progress --porcelain origin refs/heads/$currentbranch:refs/heads/$currentbranch --set-upstream
}
gdRemote(){
git push --progress --porcelain origin :$1
}
gc(){
git checkout $1 && git pull
}
# 切换分支 ,存在分支,直接切换,不存在时从master拉取新分支并提交
gcSafe(){
git checkout $1
if [ $? -eq 0 ] ; then
echo "$1 分支存在,切换成功。"
git pull
else
echo "$1 分支不存在,开始新建"
sourceBranch=master
if [ -n "$2" ]; then
sourceBranch=$2
fi
git checkout -b $1 origin/$sourceBranch^0 --
echo "从 $sourceBranch 拉取远程分支 $1 成功"
git push --progress --porcelain origin refs/heads/$1:refs/heads/$1 --set-upstream
echo "push 成功!"
fi
}
# 编辑本文件
eb(){
echo "开始编辑.bashrc文件==="
open ~/.bashrc
}
# 加载本文件
rb(){
source ~/.bash_profile
echo "执行成功!"
}
# 给文件设置最高权限
c7(){
chmod 777 $1
}
#去桌面
god(){
cd ~/Desktop
}
2.2
将文件复制到用户目录(~)下,然后在~/.bash_profile(没有该文件新建一个)中添加如下内容
shell
source ~/.bashrc
终端中执行 source ~/.bash_profile
2.3 使用,举几个简单的例子
在idea中,打开终端,输入命令:
- gmc 提交代码 test,表示的意思就是在当前分支提交代码,切换到test分支,然后合并到test并提交,最后切换回来当前分支继续开发;
- gcSafe feat_20240101,表示如果存在feat_20240101分支,切换到feat_20240101分支,如果不存在,从master拉取feat_20240101分支;
- gc test ,表示切换到test分支,test分支不存在不切换;
- eb 打开并编辑.bashrc文件;
- rb 重新加载.bashrc文件;
- gbr 显示远程分支;
- gb 显示本地分支;
- gdRemote test ,删除远程分支test;
- gd test,删除本地分支test;
- mci,mc,mvn命令,可以自己查看一下,我这里就不解释了。
2.4 关于扩展
实际能使用的功能是非常多的,我这里只是简单的举例,可以自己扩展,希望能帮到你。
三 后记
关于windows 中的使用实际也很简单:
- 创建.bashrc文件,把文件丢到用户目录下;
- 打开idea,打开设置搜索terminal,点开shell path,选择git路径,然后确定;
- 就可以在idea终端使用以上命令了
- 当然,上面的.bashrc文件,是在mac系统下写的,可能有些指令在win下不支持,可以自己修改,或者自己添加。