将系统命令链接到git命令

时间:2016-05-08 17:44:32

标签: git bash shell terminal alias

我试图将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文件中记录我对我的应用所做的更改,并在每次更改时更新它,所以如果我能从中读取此日志,那么它是理想的每当我想要改变时终端。

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

4 个答案:

答案 0 :(得分:4)

git commit有一个-F--file)可以完全按照您的意愿行事,而不使用任何shell魔法:只需使用git commit -F commit_message.txt

答案 1 :(得分: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获取stdin。命令替换($(...))将返回写入stdout的内容。引号用于避免单词拆分。

答案 2 :(得分:1)

你可以写一个剧本。

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

mkdir -p ~/bin

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

export PATH=$PATH:$HOME/bin

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

source ~/.bashrc

创建脚本:

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

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

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

alias ls='ls --color=auto'

但我建议写一个剧本。

答案 3 :(得分:0)

创建一个系统别名,你可以这样做:

@After
public void executedAfterEach() throws Exception {
    // dispose of dependent Windows...
    EventQueue.invokeAndWait( new Runnable(){
        @Override
        public void run() {
            if( app.mainFrame != null ){
                for( Window window : app.mainFrame.getOwnedWindows() ){
                    if( window.isVisible() ){
                        System.out.println( String.format( "# disposing of %s", window.getClass() ));
                        window.dispose();
                    }
                }
            }
        }
    });
}

或者如果您只想要一个会话别名(仅在终端活动期间可用),您可以执行以下操作:

alias myName=myCommand

要启动它,您可以执行myName=myCommand

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

$myName