bash - 将 git 分支更改为子目录
问题描述
我有几个带有 git 分支的子文件夹的根文件夹。我使用这些建议将 git 分支更改为每个子模块:
alias gch='git checkout'
gchb() { gch $(gbr -r | grep "$1" | awk '{print substr(""$1"",8,length)}'); }
如何在每个子目录中执行此命令?
解决方案
首先,不需要同时使用两者grep
,awk
在这种情况下:
gchb() {
gch $(gbr -r | awk '($0 ~ '"$1"'){print substr(""$1"",8,length)}');
}
你可能会使用类似的东西:
for subdir in "${DIR}"/*; do
[[ -d "${subdir}" ]] && gchb "${subdir}"
done
您可能还可以使用find
with-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中使用它:
find "${DIR}" -type d -a -maxdepth 1 -exec bash -c "source .gittutilsrc && gchb {}" \;
注意:-mexdepth 1
在这里使用是为了避免子子*文件夹中的递归。
推荐阅读
- vim - `source $MYVIMRC` 在我删除一些内容时不起作用,但在我添加一些内容时它确实起作用
- docker - 如何在 PyCharm IDE 中浏览 docker 容器?
- sql - 如何检查 SQL 游标是否指向 ile rpg 中文件的第一条记录?
- angular - 缩放客户端-JHipster
- html - 在元素的一半上设置背景
- javascript - JavaScript:如何访问 OS Windows 中的系统窗口
- java - Java正则表达式在拆分的url路径中查找所有单词
- django-rest-framework - django rest 框架 - 获取选择的 url
- java - 停止打印两次输出
- php - 带参数的 Laravel 电子邮件模板路由