{"id":313,"date":"2026-10-13T13:01:14","date_gmt":"2026-10-13T13:01:14","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2012\/04\/11\/bash-aliases-for-git\/"},"modified":"2026-10-13T13:01:14","modified_gmt":"2026-10-13T13:01:14","slug":"bash-aliases-for-git","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/bash-aliases-for-git\/","title":{"rendered":"Bash Git Aliases: A Practical Command Set for Faster Daily Git Work"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Originally published on 2012-04-11; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you run Git commands all day, short Bash aliases can remove repetitive typing and speed up routine actions like status checks, staging, commits, and pushes. This guide gives you a corrected alias set for <code>~\/.bashrc<\/code>, explains how it differs from Git-native aliases, and shows a safe workflow for adding and validating aliases.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2012\/04\/bash-aliases-for-git.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2012\/04\/bash-aliases-for-git.png\" alt=\"Bash aliases for Git\" width=\"600\" height=\"400\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What these aliases are (and are not)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The original post lists <strong>Bash aliases<\/strong>, not Git configuration aliases. That means they are interpreted by your shell and typically stored in <code>~\/.bashrc<\/code> (or another shell startup file).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Important correction: in Bash, alias syntax should <strong>not<\/strong> include spaces around <code>=<\/code>. For example, use <code>alias g='git status'<\/code>, not <code>alias g = \"git status\"<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bash aliases vs Git aliases<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Option<\/th><th>Defined in<\/th><th>How you run it<\/th><th>Best for<\/th><\/tr><\/thead><tbody><tr><td>Bash alias<\/td><td>Shell config (for example <code>~\/.bashrc<\/code>)<\/td><td><code>g<\/code>, <code>ga<\/code>, <code>gps<\/code><\/td><td>Very short commands in interactive shell sessions<\/td><\/tr><tr><td>Git alias<\/td><td>Git config (for example <code>~\/.gitconfig<\/code>)<\/td><td><code>git st<\/code>, <code>git co<\/code><\/td><td>Git-specific shortcuts that travel with Git config<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Drop-in Bash alias set for common Git commands<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is a corrected version of the original alias collection, ready to paste into <code>~\/.bashrc<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">alias g=<span class=\"hljs-string\">'git status'<\/span>\nalias ga=<span class=\"hljs-string\">'git add'<\/span>\nalias gaa=<span class=\"hljs-string\">'git add .'<\/span>\nalias gc=<span class=\"hljs-string\">'git commit -m'<\/span>\nalias gca=<span class=\"hljs-string\">'git commit -am'<\/span>\nalias gb=<span class=\"hljs-string\">'git branch'<\/span>\nalias gbd=<span class=\"hljs-string\">'git branch -d'<\/span>\nalias gco=<span class=\"hljs-string\">'git checkout'<\/span>\nalias gcob=<span class=\"hljs-string\">'git checkout -b'<\/span>\nalias gm=<span class=\"hljs-string\">'git merge'<\/span>\nalias gr=<span class=\"hljs-string\">'git rebase'<\/span>\nalias gl=<span class=\"hljs-string\">'git log'<\/span>\nalias gs=<span class=\"hljs-string\">'git show'<\/span>\nalias gd=<span class=\"hljs-string\">'git diff'<\/span>\nalias gbl=<span class=\"hljs-string\">'git blame'<\/span>\nalias gps=<span class=\"hljs-string\">'git push'<\/span>\nalias gpl=<span class=\"hljs-string\">'git pull'<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Install and reload safely<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Back up your current Bash config before editing.<\/li><li>Add the aliases to <code>~\/.bashrc<\/code>.<\/li><li>Reload your shell configuration.<\/li><li>Run a quick smoke test.<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php language-bash\">cp ~\/.bashrc ~\/.bashrc.bak.$(date +%Y%m%d)\n\n<span class=\"hljs-comment\"># Edit ~\/.bashrc in your preferred editor, then reload:<\/span>\nsource ~\/.bashrc\n\n<span class=\"hljs-comment\"># Quick checks:<\/span>\ntype g\ntype ga\ng<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Daily Git workflow with aliases<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Edit files] --> B[Run g for status]\n    B --> C[Stage with ga or gaa]\n    C --> D[Commit with gc message]\n    D --> E[Push with gps]\n    E --> F[Sync with team]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Alias reference<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Alias<\/th><th>Expands to<\/th><th>Typical use<\/th><\/tr><\/thead><tbody><tr><td><code>g<\/code><\/td><td><code>git status<\/code><\/td><td>Check current repo state<\/td><\/tr><tr><td><code>ga<\/code><\/td><td><code>git add<\/code><\/td><td>Stage specific files<\/td><\/tr><tr><td><code>gaa<\/code><\/td><td><code>git add .<\/code><\/td><td>Stage all changes in current directory tree<\/td><\/tr><tr><td><code>gc<\/code><\/td><td><code>git commit -m<\/code><\/td><td>Create commit with inline message<\/td><\/tr><tr><td><code>gca<\/code><\/td><td><code>git commit -am<\/code><\/td><td>Commit tracked-file changes quickly<\/td><\/tr><tr><td><code>gb<\/code><\/td><td><code>git branch<\/code><\/td><td>List\/manage branches<\/td><\/tr><tr><td><code>gbd<\/code><\/td><td><code>git branch -d<\/code><\/td><td>Delete merged branch<\/td><\/tr><tr><td><code>gco<\/code><\/td><td><code>git checkout<\/code><\/td><td>Switch branch or restore path behavior via checkout<\/td><\/tr><tr><td><code>gcob<\/code><\/td><td><code>git checkout -b<\/code><\/td><td>Create and switch to new branch<\/td><\/tr><tr><td><code>gm<\/code><\/td><td><code>git merge<\/code><\/td><td>Merge branch history<\/td><\/tr><tr><td><code>gr<\/code><\/td><td><code>git rebase<\/code><\/td><td>Rebase local work<\/td><\/tr><tr><td><code>gl<\/code><\/td><td><code>git log<\/code><\/td><td>Inspect commit history<\/td><\/tr><tr><td><code>gs<\/code><\/td><td><code>git show<\/code><\/td><td>Show commit details<\/td><\/tr><tr><td><code>gd<\/code><\/td><td><code>git diff<\/code><\/td><td>Inspect unstaged or staged changes (with options)<\/td><\/tr><tr><td><code>gbl<\/code><\/td><td><code>git blame<\/code><\/td><td>Trace line-level authorship<\/td><\/tr><tr><td><code>gps<\/code><\/td><td><code>git push<\/code><\/td><td>Push branch to remote<\/td><\/tr><tr><td><code>gpl<\/code><\/td><td><code>git pull<\/code><\/td><td>Fetch and integrate remote changes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">If you prefer Git-native aliases<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Git-native aliases are configured in Git instead of Bash. They are invoked as <code>git &lt;alias&gt;<\/code>.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css language-bash\"><span class=\"hljs-selector-tag\">git<\/span> <span class=\"hljs-selector-tag\">config<\/span> <span class=\"hljs-selector-tag\">--global<\/span> <span class=\"hljs-selector-tag\">alias<\/span><span class=\"hljs-selector-class\">.st<\/span> <span class=\"hljs-selector-tag\">status<\/span>\n<span class=\"hljs-selector-tag\">git<\/span> <span class=\"hljs-selector-tag\">config<\/span> <span class=\"hljs-selector-tag\">--global<\/span> <span class=\"hljs-selector-tag\">alias<\/span><span class=\"hljs-selector-class\">.co<\/span> <span class=\"hljs-selector-tag\">checkout<\/span>\n<span class=\"hljs-selector-tag\">git<\/span> <span class=\"hljs-selector-tag\">config<\/span> <span class=\"hljs-selector-tag\">--global<\/span> <span class=\"hljs-selector-tag\">alias<\/span><span class=\"hljs-selector-class\">.br<\/span> <span class=\"hljs-selector-tag\">branch<\/span>\n<span class=\"hljs-selector-tag\">git<\/span> <span class=\"hljs-selector-tag\">config<\/span> <span class=\"hljs-selector-tag\">--global<\/span> <span class=\"hljs-selector-tag\">alias<\/span><span class=\"hljs-selector-class\">.ci<\/span> <span class=\"hljs-selector-tag\">commit<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls and best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Do not use spaces around <code>=<\/code> in Bash alias definitions.<\/li><li>Remember that <code>gca<\/code> (<code>git commit -am<\/code>) does not include new untracked files.<\/li><li>Quote commit messages when using <code>gc<\/code>, for example: <code>gc \"fix login timeout\"<\/code>.<\/li><li>Keep a backup of <code>~\/.bashrc<\/code> before bulk edits.<\/li><li>For teams, document your alias set so onboarding is consistent.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Note: the original page also contained a YouTube gallery embed that currently reports an API key restriction error. Direct link preserved from the source: <a href=\"https:\/\/www.youtube.com\/watch?v=ZCfrNvu6nMc\">https:\/\/www.youtube.com\/watch?v=ZCfrNvu6nMc<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Set up a clean, copy-paste-ready Bash alias collection for common Git commands, then learn when Bash aliases are better than Git\u2019s built-in aliases. This guide also covers safe installation, workflow usage, and common mistakes to avoid.<\/p>\n","protected":false},"author":1,"featured_media":3842,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[38],"tags":[2566,137,2567,2568,2570,2572,160,2569,2571],"class_list":["post-313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git","tag-aliases","tag-bash","tag-bash-alias","tag-bash-aliases-for-git","tag-bash-git-aliases","tag-bash-git-aliases-reference","tag-git","tag-git-aliases","tag-git-bash-aliases"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=313"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/313\/revisions"}],"predecessor-version":[{"id":79177,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/313\/revisions\/79177"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/3842"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}