【问题标题】:Creating multiple git branches using a bashrc sh alias使用 bashrc sh 别名创建多个 git 分支
【发布时间】:2012-04-23 18:16:27
【问题描述】:

我正在尝试为我创建一个运行多个命令的别名。具体来说,该命令应该在多个目录中创建多个 git 分支(如果您知道其他方法可以做到这一点,那就太好了。)这是我正在做的事情:

alias branches="folder1; git checkout -b $1 ; folder2 ; git checkout -b $1; folder3; git checkout -b $1; folder4; git checkout -b $1"

请注意,folder(n) 表示一个 git repo(一个单独的项目),它本身就是一个我以前使用过的简单 cd 别名,所以没有问题。

我得到的错误:

bash: syntax error near unexpected token `;'

我这样做是因为当我处理影响多个项目的 featureA 时,比如重构,我想确保我始终在 featureA 分支中。

谢谢。

编辑:我想使用 sh 别名。编辑标题以反映这一事实。

【问题讨论】:

  • 您不能在别名中使用位置参数 ($1)。正如@Avi 演示的那样,使用一个函数。
  • 你确定吗?我刚刚尝试了一个 {alias test="echo $1"} 并且效果很好。
  • @why-el:不,它没有。由于您对字符串进行了双引号,因此 $1 在创建别名之前 进行了评估。通过运行alias test 进行检查。
  • 不,我的意思是如果我将该别名放在 Bashrc 中,它就可以工作。刚刚在终端中使用测试“字符串”进行了尝试。

标签: git bash branch alias


【解决方案1】:

这是 git 别名还是 sh 别名?

如果是 git 别名,您需要在代码开头添加 !(以便您的 shell 可以运行它)。

但从我读到的内容来看,您想要的不是 git 别名而是 shell 函数,它将进入每个文件夹并检查所述分支(顺便说一句,这根本不是一个好主意)。

【讨论】:

  • 我想要一个 sh 别名。然后我称为分支的简单别名无法执行该代码?
【解决方案2】:

看起来您不想要别名,而是想要一个 shell 函数:

function branches {
    cd folder1
    git checkout -b $1
    cd folder2
    git checkout -b $1
    cd folder3
    git checkout -b $1
    cd folder4
    git checkout -b $1
}

或者,更好的是,循环执行:

function branches {
    for folder in folder1 folder2 folder3 folder4 ; do
        cd $folder
        git checkout -b $1
    done
}

【讨论】:

  • 完美。这行得通。不过还有两个问题要问你:) 1. 知道为什么我的第一次尝试没有成功吗?和 2. 有关这些类型功能的任何 Internet 资源?我想学这个技能。
  • @why-el: 1. 可能是因为folder1 不是shell 命令——你打算cd folder1
  • 2. Advanced Bash Scripting Guide 很好,虽然很长。见tldp.org/LDP/abs/html/functions.html。如果您正在寻找较短的资源,请尝试使用谷歌搜索“bash 函数”或类似内容。
猜你喜欢
  • 2015-01-12
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 2012-12-31
  • 2020-01-26
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
相关资源
最近更新 更多