DEV Community

Aaron Ellington
Aaron Ellington

Posted on • Originally published at aaron.ellington.io on

15 4

5 Git Tips and Tricks

5 Git Tips and Tricks

Here are some of my favorite git tips and tricks that I either recently learned or that I use all the time.

1..git/safe/../../bin

Here is the article that I learned this trick from and it explains it better than I could: thoughtbot - git-safe.

One of the biggest benefits that see from this is using it to override what version of a command is used while working on the project.

Example: You have phpunit installed globally on your system but the project needs to use a specific version. Just add the specific version to the bin directory of your project, run mkdir .git/bin, and that's it! As long as you add .git/safe/../../bin to the beginning of your $PATH it will override other entries.

Another thing to note here is you can use it on other directories besides bin/. You could add something like .git/safe/../../vendor/.bin/ as well.

2. Aliases

While they are not much different than a shell alias, I do like git aliases more because they are nicely organized under the ~/.gitconfig file. Here are a few that I use on a daily basis:

[alias]
    newbranch = "!f() { git checkout -b $1 master && git push -u origin $1 ; }; f"
    acp = "!f() { git add --all && git commit -m \"$1\" && git push ; } ; f"
    wip = "!git acp 'wip'"
    undo = "!git reset HEAD^"
Enter fullscreen mode Exit fullscreen mode

I try not to go crazy with them since I can not rely on them always being there while accessing different machines.

3. Global .gitignore

Setting a global .gitignore can be really helpful. By default $HOME/.config/git/ignore is used. You will need to create it if it does not exist on your system. The location of the file can be changed in your ~/.gitconfig.

The file works the say way as normal `.gitignore files but for the whole system instead of the individual project.

The main reason I use it right now is those pesky .DS_Store files. I'd rather not have to add that to every single one of my projects.

Documentation on this feature and much more can be found here.

4. .git/info/exclude

Sometimes you have your own workflow that causes you to need to have git ignore certain files and it's not appropriate to add entries to the project .gitignore.

I ran into this situation recently. I'm was working on a project where everyone was using PHPStorm and I was the only one using VS Code.

I added my own .vscode/launch.json for debugging and I was not ready to add it to the project yet. I kept almost committing it along with my other changes, then I found .git/info/exclude. It's another file that works the same way as a global or local gitignore, but it's project-specific and not tracked by git. It was exactly what I needed but never knew it was there.

Documentation on this feature and much more can be found here.

5. Checkout Previous Branch

A simple but really useful shortcut is running git checkout - to switch back to the previously checked out branch. You can keep running it over and over to toggle between two branches.

Fun fact, this works with other commands like cd -!

Qodo Takeover

Introducing Qodo Gen 1.0: Transform Your Workflow with Agentic AI

Rather than just generating snippets, our agents understand your entire project context, can make decisions, use tools, and carry out tasks autonomously.

Read full post →

Top comments (4)

Collapse
 
polysign profile image
Georges Jentgen • Edited

I agree that DS_Store files are cumbersome and should be ignored in all your projects. But you cannot rely on EVERYONE having the same global gitignore file. Someone else will wrongly commit a DS_Store file into the repo at some point.

Collapse
 
aaronellington profile image
Aaron Ellington

That is a fair point, thanks for the feedback!

But it is still a helpful trick for my private repos.

Collapse
 
shivenigma profile image
Vignesh M

I never knew that - can work with git checkout, I have been using it with cd for years. Thank you.

Collapse
 
osde8info profile image
Clive Da

wow never knew about info/exclude

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay