如何使用一个.gitconfig别名调用多个git命令

时间:2019-02-20 16:57:26

标签: bash git

这是我目前在.gitconfig中的别名,它们工作得很好。但是,我希望有一个别名可以同时使用所有这三个别名。

我想要在终端上显示的示例:

git x my_commit_message

.gitconfig的伪代码:

[alias]
         x = add -A <then do> commit -m <use variable from command line> push

我将push设置为default = current,所以单独使用push即可。

[push]
    default = current

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

如果要组合添加,提交和推送,则需要一个bash函数。 Git的添加和提交可以与git -am "msg"结合使用,但是推送只能作为附加命令来完成。因此,只需定义如下的bash函数即可:

gacp() {
  git add -A &&
  git commit -m "${1?'Missing commit message'}" &&
  git push
}

这首先通过执行git add -A,然后成功完成 ,然后执行命令git commit -m,并显示必需的消息,然后执行 if 成功,然后执行git push

重要的是,使后一个命令依赖于前一个命令的成功执行,以避免下游混乱。换句话说,除非commit成功,否则您真的不希望add进行更改,除非commit成功,您才真正不希望推送最新的提交。

您可以这样使用它:

gacp "Latest changes"

答案 1 :(得分:1)

您需要使用shell函数才能在git别名中执行多个命令。

  1. 首先,从!开始,以便Git将其作为shell命令运行。
  2. 编写您的函数,例如:f() { git add -A && git commit -m "$1" && git push }
  3. 在函数声明后立即执行。

您应该编写类似的内容:

[alias]
        x = "!f() { git add -A && git commit -m \"$1\" && git push } f"

请注意:

  • $1将由命令行中的变量替换,
  • &&仅在上一个命令成功执行后才会执行下一个命令。