将git分支更改为子目录

时间:2018-06-22 08:25:15

标签: bash git

我的根文件夹中有几个带有git分支的子文件夹。我使用这些建议将git分支更改为每个子模块:

alias gch='git checkout'
gchb() { gch $(gbr -r | grep "$1" | awk '{print substr(""$1"",8,length)}'); }

如何在每个子目录中执行此命令?

1 个答案:

答案 0 :(得分:1)

首先,在这种情况下,无需同时使用grepawk

gchb() { 
  gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}'); 
}

您可能会使用类似以下的内容:

for subdir in "${DIR}"/*; do
  [[ -d "${subdir}" ]] && gchb "${subdir}"
done

您可能还可以将find-exec选项一起使用来执行此类任务,例如:

1)在单独的脚本中定义别名和功能(例如,将其称为.gittutilsrc),该脚本可以与source一起加载:

#!/bin/bash

alias gbr='git branch'
alias gch='git checkout'

gchb() { 
    gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}'); 
}

2)像这样使用它:

find "${DIR}" -type d -a -maxdepth 1 -exec bash -c "source .gittutilsrc && gchb {}" \;

注意:此处使用-mexdepth 1以避免子*子文件夹中的递归。