mac系统通过idea终端使用git

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下不支持,可以自己修改,或者自己添加。
相关推荐
Mac分享吧3 小时前
【iStat Menus for MacBook状态栏菜单系统监控工具--安装教程【简单操作,随时了解电脑情况】
macos·mac·istat menus·软件分享·系统数据监控
hbblzjy3 天前
Mac电脑中隐藏文件(即以 . 开头的文件/文件夹)的显示和隐藏的两种方法
macos·mac·隐藏文件
伊织code3 天前
[2024最新] macOS 发起 Bilibili 直播(不使用 OBS)
macos·mac·web·直播·b站·bilibili
Mac新人3 天前
Mac的极速文件搜索工具,高效管理文件
macos·mac
王拴柱4 天前
Mac如何实现最简单的随时监测实时运行状态的方法
macos·mac
Mac新人5 天前
优化Mac的鼠标使用体验超简单方法
macos·计算机外设·mac
追风林6 天前
mac m1 docker本地部署canal 监听mysql的binglog日志
java·docker·mac
Selina K6 天前
shell脚本知识点记录
笔记·shell
daqinzl6 天前
java获取机器ip、mac
java·mac·ip
Mac新人6 天前
一招解决Mac没有剪切板历史记录的问题
macos·mac