Skip to content

Instantly share code, notes, and snippets.

@johnpolacek
Last active January 28, 2026 13:01
Show Gist options
  • Select an option

  • Save johnpolacek/69604a1f6861129ef088 to your computer and use it in GitHub Desktop.

Select an option

Save johnpolacek/69604a1f6861129ef088 to your computer and use it in GitHub Desktop.
My current .gitconfig aliases
[alias]
recent = "!git for-each-ref --sort=-committerdate refs/heads/ --format='%(committerdate:short) %(refname:short)' | head -n 10"
co = checkout
cob = checkout -b
coo = !git fetch && git checkout
br = branch
brd = branch -d
brD = branch -D
merged = branch --merged
st = status
aa = add -A .
cm = commit -m
aacm = !git add -A . && git commit
aacm = !git add -A . && git commit -m
cp = cherry-pick
amend = commit --amend -m
now = git commit --amend --no-edit --date="$(date)"
dev = !git checkout dev && git pull origin dev
staging = !git checkout staging && git pull origin staging
main = !git checkout main && git pull origin
master = !git checkout master && git pull origin
po = push origin
pu = !git push origin `git branch --show-current`
pod = push origin dev
pos = push origin staging
pom = push origin main
poh = push origin HEAD
pogm = !git push origin gh-pages && git checkout master && git pull origin master && git rebase gh-pages && git push origin master && git checkout gh-pages
pomg = !git push origin master && git checkout gh-pages && git pull origin gh-pages && git rebase master && git push origin gh-pages && git checkout master
plo = pull origin
plod = pull origin dev
plos = pull origin staging
plom = pull origin main
ploh = pull origin HEAD
unstage = reset --soft HEAD^
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
f = "!git ls-files | grep -i"
gr = grep -Ii
la = "!git config -l | grep alias | cut -c 7-"
@weibangtuo

Copy link
Copy Markdown

Share

pu = !git push origin `git branch --show-current`

Push current branch to origin with the same name.

@martinmana

Copy link
Copy Markdown

Hi!
I've been looking for days for a fetch+checkout (to the new branch) alias, couldn't find it. And I'm not experienced enough to write it myself.
All the time I'm doing

git fetch origin master:examplename
And then
git checkout examplename

Can any of you guys give me a hand?
Cheers

@weibangtuo

weibangtuo commented Apr 2, 2020

Copy link
Copy Markdown

@martinmana

coom = "!f() { git fetch origin master:\"$1\"; git checkout \"$1\";}; f"

usage: git coom examplename

@martinmana

martinmana commented Apr 2, 2020

Copy link
Copy Markdown

Thank you very much @weibangtuo . I would love to know all this stuff. That's amazing. I really appreciate this.
Again, I'm really new to all this world.
Is there any chance you could write exactly the command for me to create this alias? Like... exactly. I keep getting this
-bash: !f: event not found

Thank you in advance. Regards

@weibangtuo

weibangtuo commented Apr 2, 2020

Copy link
Copy Markdown

@martinmana
you can edit gitconfig file vi ~/.gitconfig and add line to [alias] section.

or command

git config --global alias.coom "\!f() { git fetch origin master:\"\$1\"; git checkout \"\$1\";}; f"

@johnpolacek

Copy link
Copy Markdown
Author

@martinmana

You could change the co to always do a full fetch first. I don't see what that would hurt.

co = fetch && checkout

@innyso

innyso commented Apr 18, 2020

Copy link
Copy Markdown

thank you for the great list of git alias!G

@jtomaszewski

Copy link
Copy Markdown

Any idea how to make those aliases to work with both master and main branch names? So that for example if main branch exists, pom pushes to main, if not, it pushes it to master.

@danielturus

Copy link
Copy Markdown

pu = !git push origin git branch --show-current

Thanks for this one!

@rantoniuk

Copy link
Copy Markdown

pu is simpler via git push -u origin HEAD :-)

@fan-tom

fan-tom commented Nov 24, 2020

Copy link
Copy Markdown
  update = "!fn() { \
    repo=${2:-origin}; \
    if [[ $(git rev-parse --abbrev-ref HEAD) = \"$1\" ]]; \
    then \
        git pull \"${repo}\"; \
    else \
        git fetch \"${repo}\" \"$1\":\"$1\"; \
    fi; \
    }; fn"

update master without checkout: git update master
update develop from upstream remote: get update develop upstream

@ryansully

Copy link
Copy Markdown

@jtomaszewski

Any idea how to make those aliases to work with both master and main branch names? So that for example if main branch exists, pom pushes to main, if not, it pushes it to master.

git symbolic-ref refs/heads/master refs/heads/main will alias master to main. Not quite the answer I think you were looking for, but it should work.

@jtomaszewski

Copy link
Copy Markdown

I have following alias now: main = !git symbolic-ref refs/remotes/origin/HEAD | cut -d'/' -f4

git main returns main or master or any other default branch name for the origin/HEAD.

Then I use it in my aliases like this:

  com = "!f(){ git checkout $(git main) $@;}; f"

Which for example is an alias for checking out the default branch.

@handletastic

Copy link
Copy Markdown

I have attempted to create a repository using curl and the RESTful Github API, The libcurl command works in the bash shell but not as an alias could somebody help me with this? Sorry in advance for necro'ing an old post but it is the most relevant to the work i am doing :)

create = !curl -H 'Authorization: token <My_Access_Token>' -d '{ "name": "<Repo_Name>", "private": false }' https://api.github.com/user/repos

Before anyone asks, Yes i have interchanged <My_Access_Token> with my actual developer token, same with <Repo_Name>

Look who I've found :O

@Franklin-Qi

Copy link
Copy Markdown

Thank you for share this.

@o6uoq

o6uoq commented Nov 9, 2022

Copy link
Copy Markdown

Use Oh My Zsh

@miohtama

miohtama commented Sep 29, 2024

Copy link
Copy Markdown

Another one, with arguments.

[alias]
# Add all files in staging + commit with message + push to remote
    acp = "!f() { git add -A ; git commit -m '$1'; git push; }; f"	

Example:

git acp "Fixing the bug"

@LuisDomiciano

Copy link
Copy Markdown

very useful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment