Pipes in a Git alias?

GitBashUnix

Git Problem Overview


I work on feature branches that have annoying big names, so I often end up grepping my current branch name when I need to push up to the feature branch from my local feature branch, like so:

git branch | grep '*' | sed 's/* //' | xargs git push origin

This works fine. I want to make this an alias, so I did this in ~/.gitconfig:

[alias]
   pushcur = branch | grep '*' | sed 's/* //' | xargs git push origin

Now, when I run git pushcur, I get the following error:

usage: git branch [options] [-r | -a] [--merged | --no-merged]

Leading me to believe that the alias is not properly parsing the pipes. Is there something else I should do to achieve the desired alias?

Git Solutions


Solution 1 - Git

I don't think you can, but you can prefix it with an ! to treat the command as a new shell command

[alias]
    pushcur = ! git branch | grep '*'

Solution 2 - Git

I typically make small git- scripts and put them in a directory that's in my path (~/.local/bin). Check out git-extras for a bunch of good examples.

Solution 3 - Git

A simple workaround is to add it as shell alias.

Here is an example:

alias grf="git rebase -i $(git merge-base --fork-point master)"

(rebase on the fork commit of current branch and master interactively)

For bash, add it to ~/.bashrc, then you can simply use grf.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLee HamptonView Question on Stackoverflow
Solution 1 - GitMichael Krelin - hackerView Answer on Stackoverflow
Solution 2 - GitforivallView Answer on Stackoverflow
Solution 3 - GitLeonView Answer on Stackoverflow