Saving precious key presses with Git Aliases
Tags: git, cli, beginners, tutorial
Published: 2021-11-10 01:37:51

Git is probably one of the more powerful tools that a developer will use through the entirity of their career(s). 

But many tend to give up the power of the command line interface due to not wanting to type out their commands... every... single... time.

![Unimpressed Ryan Reynolds](https://c.tenor.com/_c41a7xo09AAAAAC/ryanreynolds.gif)

That's where the power of [git aliases](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases) come in.

Don't worry you don't need to read the entire manual, I'll break it down simply for you. 

> It's an alias of a git command or set of commands

![Standing Ovation](https://c.tenor.com/Sq7rY9NKKd4AAAAC/oscars-standing-ovation.gif) 

But seriously, in the long run aliases can save you those precious key strokes and help you get a little more comfortable in the command line.

---

### How do I create an alias? 
There's multiple ways to go about doing it, no way is better or worse than the other. 

If you're comfortable in a terminal I recommend getting used to the command line ,however, if you don't want to spend time writing out `git config --global alias.` you can just edit the global `.gitconfig`.

It's best you find and get familiar with where your global `.gitconfig` file is on your machine.

Unix typicaly resides inside the `~home/` directory. 

Windows will typically reside in your `C:\<username>` directory.

#### Individually (the hard way)

You can use the git command line interface to push an alias to your global config as follows.

```bash
➜  git-tutorial git:(master) git config --global alias.co checkout
```

If you were to open your global `.gitconfig` file now you will notice an `[alias]` section containing something along the lines of:

```bash
[alias]
    co = checkout
```

#### Editing your .gitconfig file (The easy way)


If you created an alias from the hard way section your `.gitconfig` will already contain an `[alias]` area, if you skipped that you will need to add it in.

```bash
[alias]
    co = checkout
```

The variable is name of our alias that it wants to equal. 

In this example, `co` is the same as `checkout`.

Simple saving our `.gitconfig` file our alias(es) will immediately be available to us in our terminal.

```bash
➜  git-tutorial git:(master) git co
fatal: You are on a branch yet to be born
```

### Powerful aliases

Each person is going to be different so aliases will vary. 

Personally I use them to not type long words as I am prone to typing before my brain fully tells my fingers where to go on the keyboard.

Here are some of mine:
```bash
[alias]
	b = branch
	co = checkout
	s = status
	br = branch
	ci = commit
	st = status
```
You'll notice that I can have multiple aliases for the same command. You can even have an alias call another alias.

Your aliases even have access to the flags of the thing they are referring to.

Knowing that we can build some fun alias commands:

```bash
	lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
	lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
	lg = !"git lg1"
```
Imagine having to type all that out... everytime. Now we can just type `git lg1` or `git lg` to call a big git command. 

Take note that `lg` doing `!"git <command>"` or `!"git lg1"`. The `!` is a character used to espress 'run the following command(s) to the shell'. 

**TL;DR:** `git lg` is just telling the shell to run `git lg1`.

![Fast Typing](https://c.tenor.com/tzFw_oW3F8wAAAAC/typing-fast.gif)
---

That's the beginnings of git aliases. If there's something you wish you could do shorten, git aliases are the way.

But just be careful... if you tell it do something like `push --force` in an alias... that's on you.

 ```bash
➜  git-tutorial git:(master) git config --global alias.yolo "push --force"
```
---

Do you already use aliases? If so, what are some of your favorites?