mac系统通过idea终端使用git

一、引言

本文旨在解决使用idea过程中,提交和合并代码时idea卡顿和响应慢以及过程繁琐的问题。

1.1 文章背景

  • 结合我曾遇到的问题吧,当时因为一些小小的改动,需要频繁去将开发分支合并到test发版测试,过程繁琐不说,使用idea图形化界面还卡得要死;
  • 后续是使用终端写git指令,效果虽然好点,但是每次add commit push merge 还是很头疼;
  • 后来是写了一个shell脚本,把这些命令封装在一起,每次提交直接运行脚本,效果还可以;
  • 最后是直接通过别名的方式,直接在系统下配置别名,直接在终端使用别名,效果好多了。

1.2 文章目标

  • 在网上看到很多同行有这方面的困扰,希望能够帮助他们
  • 把我自己觉得能提升效率的方法或者方式,分享出来
  • 我觉得我提供的是解决问题的方案,实际上可以有很多扩展,我们可以做很多事
  • 并不是仅仅局限于idea,而是能够辐射到所有使用mac,windows,linux等开发环境的开发者。

二、解决方案

2.1

写一个脚本,命名为 .bashrc ,内容如下

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(没有该文件新建一个)中添加如下内容

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下不支持,可以自己修改,或者自己添加。
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐