首页 > 其他分享 >拉取所有分支的批处理

拉取所有分支的批处理

时间:2022-11-24 14:39:51浏览次数:35  
标签:git REMOTE 批处理 echo REMOTES branch LB 拉取 分支


理论上是直接git clone就可以获取所有,但是我公司项目却不是这样的,我也很郁闷了。

#!/bin/sh
main() {
REMOTES="$@";
echo $REMOTES;
if [ -z "$REMOTES" ]; then
REMOTES=$(git remote);
fi
REMOTES=$(echo "$REMOTES" | xargs -n1 echo)
CLB=$(git branch -l|awk '/^\*/{print $2}');
echo "$REMOTES" | while read REMOTE; do
git remote update $REMOTE
git remote show $REMOTE -n \
| awk '/merges with remote/{print $5" "$1}' \
| while read line; do
RB=$(echo "$line"|cut -f1 -d" ");
ARB="refs/remotes/$REMOTE/$RB";
LB=$(echo "$line"|cut -f2 -d" ");
ALB="refs/heads/$LB";
NBEHIND=$(( $(git rev-list --count $ALB..$ARB 2>/dev/null) +0));
NAHEAD=$(( $(git rev-list --count $ARB..$ALB 2>/dev/null) +0));
if [ "$NBEHIND" -gt 0 ]; then
if [ "$NAHEAD" -gt 0 ]; then
echo " branch $LB is $NBEHIND commit(s) behind and $NAHEAD commit(s) ahead of $REMOTE/$RB. could not be fast-forwarded";
elif [ "$LB" = "$CLB" ]; then
echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. fast-forward merge";
git merge -q $ARB;
else
echo " branch $LB was $NBEHIND commit(s) behind of $REMOTE/$RB. reseting local branch to remote";
git branch -l -f $LB -t $ARB >/dev/null;
fi
fi
done
done
}

main $@

window电脑新建文件为.sh弄到仓库目录执行也是可以的。

标签:git,REMOTE,批处理,echo,REMOTES,branch,LB,拉取,分支
From: https://blog.51cto.com/u_15458814/5883887

相关文章

  • 通过调用ffmpeg来将mp3和jpg合并为mp4视频-批处理。
     听歌练乐器的时候想同时看一下简谱,没找到好用的app,自己动手写个批处理。只要把找到的歌(mp3文件)和谱(jpg文件)改成同名,并执行下面批处理,就能自动合并为视频。音遍就歌,画......
  • 批处理修改IP和DNS
    由于特殊需要,我们的IP地址有时候是固定的,有时候是动态分配,一直用网上邻居右键修改其实很不方便,而且也会卡成电脑假死状态。于是我就想要写个批处理文件,放在桌面上,双击运行就......
  • C语言if分支结构
    文章目录​​一、关系运算符​​​​二、条件判断​​​​三、只使用if语句​​​​四、多个ifelse语句​​​​五、if语句的嵌套​​​​六、保持良好的编程习惯​​​​......
  • C语言switch分支结构
    文章目录​​一、ifelse的不足​​​​二、switch语句​​​​三、注意事项​​​​四、课后作业​​​​五、获取视频教程​​​​六、版权声明​​一、ifelse的不足C语......
  • Linux 4.6分支已到生命尽头 请尽快升级至Linux 4.7.1
    在Linux Kernel4.7首个维护版本发布的同时,GregKroah-Hartman同时也向社区发布了LinuxKernel4.6.7版本。作为Linux4.6分支的第7个维护版本,该分支也已经到了生命的......
  • 在非空 Git 仓库中创建一个全新的空分支
    出于各种原因,也许有的时候我们需要在一个代码仓库中创建一个全新的git分支,这个要怎么实现呢。解决方案就是依次运行下面这几条命令:#empty-branch是分支名字,可以替换成......
  • git 合并其他分支的指定版本
    需求:合并yuexin分支的指定版本代码到新建的yuexin/main分支1.查看当前开发分支历史提交版本gitlog2.找到想要被合并的目标版本对应SHA值3.新建分支gitbr......
  • Git的分支操作(4)
    Git的分支操作什么是分支在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,......
  • 记录下批处理bat脚本获取打包发布问题
    最近做了个Jenkins配合Gitlab自动部署Java项目到WindowsServer服务器。Jenkins和Gitlab在Linux下,好一顿折腾,先记录下脚本,其余后续补充吧。把Java项目作为服务https://g......
  • git 新建分支 合并分支
    合并分支日常开发dev分支,版本发布时,dev分支合并到master分支上。1、进入要合并的分支(如dev分支合并到master,先切换到master分支)gitcheckoutmastergitpull2、查看所有......