将 git 分支更改为子目录

  • 本文关键字:子目录 git 分支 bash git
  • 更新时间 :
  • 英文 :


我有一个根文件夹,其中包含几个带有 git 分支的子文件夹。我使用这些推荐将 git 分支更改为每个子模块:

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

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

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

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

您可能可以使用以下内容:

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

您可能还可以使用带有-exec选项的find来执行此类任务,例如:

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以避免子 *-文件夹中的递归性。

最新更新