将系统命令链接到 git 个命令

Chaining system commands onto git commands

我正在尝试将 bash 中的系统命令链接到我的 git 命令上。

例如:git commit -m cat commit_message.txt.

我注意到我重复使用了完全相同的 4 个命令,我想创建一个别名:

git add -A && git commit -m cat ~/my_project/commit_message.txt && git push origin dev && git push heroku-staging master.

我喜欢在我的 commit_message.txt 文件中记录我对我的应用程序所做的更改,并在每次更改时更新它,所以如果我能读到这篇文章就太理想了每次我想提交更改时从终端登录。

我绝不是终端向导,所以我希望这是一个我还没有遇到过的简单解决方案。我搜索了很多,没有找到类似的用途。

要创建系统别名,您可以执行以下操作:

alias myName=myCommand

或者如果您只想要一个会话别名(仅在您的终端处于活动状态时可用),您可以这样做:

myName=myCommand 

要启动它,您可以执行 $myName

然后启动几个命令,你可以尝试使用管道:

command 1 | command 2 ...

您需要命令替换才能将一个命令的输出用作另一个命令的参数:

git commit -m "$(< commit_message.txt)"

您也可以使用 git commit -a 添加所有文件,因此无需调用 git add:

git commit -am "$(< commit_message.txt)"

我会为它创建一个函数:

do_git_stuff() {
  # Du stuff...
  : # The colon is here because a function cannot be empty. This can be removed when you
    # add some "real" code
}

将其捆绑在一起:

do_git_stuff() {
  git commit -am "$(< commit_message.txt)" \
    && git push origin dev \
    && git push heroku-staging master
}

什么是"$(< file.txt)"

< 运算符意味着您应该从 file.txt 获取标准输入。命令替换 ($(...)) 将 return 写入标准输出的内容。引号用于避免分词。

git commit 有一个 -F (--file) 可以完全满足您的需求,无需使用任何 shell 魔法:只需使用 git commit -F commit_message.txt.

写个脚本就可以了。

为您的可执行文件创建 $HOME/bin 目录:

mkdir -p ~/bin

将目录添加到 ~/.bashrc 中的 $PATH

export PATH=$PATH:$HOME/bin

更新当前终端会话中的环境:

source ~/.bashrc

创建脚本:

git_commit_file="$HOME/bin/git-commit"
cat > "$git_commit_file" <<'EOS'
#!/bin/bash -
message_file=""
# Add your commands here ...
EOS
chmod +x $git_commit_file

现在您可以 运行 git-commit message.txt.

顺便说一句,创建别名就像在 ~/.bashrc 中添加一个 alias name=command 一样简单,例如:

alias ls='ls --color=auto'

但我建议写一个脚本。