美文网首页
拉取所有分支的批处理

拉取所有分支的批处理

作者: 吉凶以情迁 | 来源:发表于2018-10-23 09:16 被阅读0次

理论上是直接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 clone就可以获取所有,但是我公司项目却不是这样的,我也很郁闷了。 window电脑新建文件...

  • git操作

    git命令 @(Linux)[git] [TOC] 拉取远程分支 step1:查看所有远程分支 step2:拉取远...

  • git 命令相关

    1,查看所有远程分支:%git branch -r 2, 拉取远程分支并创建本地分支git checkout -...

  • 常用命令

    git book git fetch origin拉取远程所有分支 git ls-remote查看远程所有分支 g...

  • git 按需拉取

    普通的方式 拉取的是所有分支的代码: 基于远程分支(master)新建本地分支(master): git chec...

  • git分支合并

    添加文件 提交文件 拉取文件 提交到自己分支 切换分支 拉取分支上文件 需要合并分支 提交

  • git常用操作记录

    // 拉取远端dev分支 git checkout -b dev origin/dev // 拉取远端分支dev ...

  • Git使用分支管理策略及冲突处理

    一、拉取仓库代码 1、拉取master分支 2、拉取项目指定分支 二、忽略配置特殊文件 .gitignore 三、...

  • git sourcetree 基本使用

    Git sourcetree 基本使用 拉取新分支 选择目标分支,拉取新的本地分支 本地的新分支名称可以带路径,如...

  • 同步同事提交的git代码到本地

    git拉取远程分支文件 拉取远程分支 git fetch <远程主机名> <分支名> 取回更新并在本地创建新的分支...

网友评论

      本文标题:拉取所有分支的批处理

      本文链接:https://www.haomeiwen.com/subject/hldozftx.html