Git Tips to boost your performance

31 Advanced Git Tips

(Boost your Productivity)

Git is a powerful tool.

If you use Git best practices, you can manage your code more efficiently. And with these Git tips, you will be productive.

In addition to productivity, these Git power tips will help you to save your time. 

This post will take you to another level with Important Git tricks. And here, I'm sharing a list of 31 advanced git tips and tricks with you.

These Git tips will help you to learn : 

  • Few hidden secrets of Git
  • How you can do more in less time 
  • Cool things you can do with Git
  • Lots more

Let's dive in

Download Git Tips

Git Tips is a long post.


And if you need a pdf summary of all these Git tips for your reference, it is available to download free of cost a pdf.

Download Git Tips

Download 31 Advanced Git Tips

Boost Your Productivity

#1. Know Your .git folder

The .git folder is created automatically on Git init or git clone command. 

Git Tips - Know your .git folder

It contains all the required information about commits, hooks and remote repo, etc.

And if you delete this folder, your project will forget to live in a repo.

The .git is unique and a hidden folder. In case you want to see the content of the folder, you can view your hidden files.

Git Tips - View your .git folder

Technically, in Git, every branch is stored as a text file. And its content contains the commit hash.

#2. Parallel Programming in Git

You can check out two branches at the same time in Git for Parallel Programming. It's possible with worktrees. 

For example - You can fix a bug in a repo (in a branch), and at the same time, you can develop new features in the same repo (in another branch)

By default, you have the Main worktree, but you can create additional worktrees known as Linked worktree. 

Here are three crucial git commands for Git worktrees.

(i) View the list of worktrees

git commands

git worktree list

Git Worktrees list - Git Tips

(ii) Add a new worktree

git commands

git worktree add <your new work tree name>

Add New Worktree with Git Tips

(iii) Remove a worktree

git commands

git worktree remove <your worktree name>

Delete a worktree - Git Tips

#3. Delete Unwanted branches

You might have a few stale branches in your local repository. There is a possibility you have unwanted local branches that no longer exist in the remote.

And it is vital to stay up to date with your branches. So with the following command, you can see all your local branches that do not merge back to HEAD.

To delete branches on each fetch/pull, you can set up the following command configuration. 

git commands

git config --global fetch.prune true

And you can view your config at any time with the following command.

git commands

git config --list

Delete unwanted branches -  Git Tips

#4. Use .gitignore

It's a special file, and with its help, you can tell to Git all those files you want to ignore. So ignored files will not be a part of your repository.

You can avoid following types of files 

  • Files with sensitive information like configuration files, production passwords, etc.
  • Files with temporary information like log files 
  • Compiler code such as obj and dll files etc 

I always use a gitignore file. The .gitignore file is helpful to filter out unwanted files & directories.

Bottom line:  Do not ignore .gitignore file.

#5. Compress Your Code

You can compress your Git repository code from Git.

You might export specific changes or individual commits. 

 Also, you can zip your entire branch. In the following example, you will get a zip file for your master branch.

git commands

git archive --format zip --output master_branch.zip master

Git command ot compress your source code - Git Tips

And the Zip will be available in your repo folder.

#6. Undo Shared history

Sometimes you commit something wrong or broken. And you already pushed your changes to a shared repository. 

In that case, you can undo your commit with git revert. It will create a new commit. Its usage is simple as follow :

git commands

git revert <your commit hash>

#7. Find Broken Commits

To err is human. Any developer can introduce a bug (by mistake) and commit it to the repository. It might be hard to find that commit. 

And the best way to find the faulty commit with Git bisect command. 

In fact, with the Git bisect command, you can find out which commit has fixed a bug or introduce a bug.

There is a detailed tutorial about Git bisect on Git Commands.

#8. Visualizing Your Commit

You can visualize your commit at any time with the git bash tool. You can use the --graph option to view that graph.

There are few more Git tips about the git log command and this is the best one.

You will get the following view after running this command..

git commands

git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

Visualizing your Commits - Git tips

#9. Git plugins

Git is a free and open-source distributed version control system. So it's easy for you to extend its functionality by writing custom scripts. One of my favorite plugins is git-extras. 

It's easy to install and use git-extra. It offers helpful documentation and many useful commands and git tips.

Here are my favorite two :

git local-commits : git local-commits: List all those commits on your local branch, which are not pushed to the remote.

Git effort: It will show stats regarding the number of commits per file with active days.

Here is the screenshot of the git-extra plugin. It is showing commits per file with active days. 

View Commits per file and actice days - Git power tips

#10. Git Autocompletion

You can save a few keystrokes with git auto-completion. Let's say, for example, you want to type Git fetch. 

You can start typing the git f and hit tab. The autocomplete feature will show you all the possible commands starting from f, and as soon as you write "fet" and hit tab, it will complete the word for you.

And you can use auto-completion for anything - for long branch names, checkout branches, etc.

Git Autocompletion - Git Tips

#11. Rewrite Last commit

It is convenient to rewrite, especially when you commit something wrong or a typo in your commit message. 

You can use -v option.

git commands

git commit -v --amend

#12. Removed Untracked changes

Untracked files are those files that are not in your staging area.  (with the Git add command, you add files to your staging area) 

Git Staging Area

And sometimes, you do not want to add those files for many good reasons. In that case, you can get rid of those files easily with the git clean command.

git commands

git clean -f -d

#13. Common Git Guides

You can read all the available common git guides with the git help command.

git commands

git help -g

Command for common git guide

#14. Search in Git

You want to search for a few lines of code that you wrote. And your code is committed in the repo.  How will you explore? 

One of the easy ways to list all commits and then within each commit, search your string

git commands

git rev-list --all | xargs git grep -F '<Your search string>'

For example, Here I am searching a css element “ font-size: 52px;”

Search in Git with Git command

#15. Remove a file from the Git History

Use a . gitignore file for Git best practice.

The .gitignore file helps us in many ways, and one of the advantages is it ignores checking in sensitive files like your local app settings with API keys and their secrets. 

And many times, developers checked in sensitive information.

And no need to say that it's not a good idea to expose sensitive information to a shared public branch.

Here is an easy fix.

You can remove the file with sensitive information by searching in the entire git history with the following commands.

git commands

git filter-branch --index-filter 'git rm --cached --ignore-unmatch <your file name>' --prune-empty --tag-name-filter cat -- --all

#16. Optimize your Repo

Git garbage collector, as its name describes, helps to reclaim the memory occupied by objects that are no longer in use.

Many git commands may automatically run git gc.  And you can run this on-demand with the Git gc command. 

git commands

git gc --prune=now --aggressive

Git GC Command - Git power tips

You can use this if your team and you are heavily using the git pull/git push command, 

#17. Copy a commit

Merge is used for multiple commits and cherry-pick commands you can use for selective commits. 

With Cherry-pick, you can copy a commit from one branch to another branch. And you have to use the commit hash.

It is a handy command; its syntax is straight forward. 

git commands

git cherry-pick <commit-sha>

Cherry-picking a commit is not always a best practice; chances are you might duplicate a commit.

But in a few scenarios, it will be helpful, especially for bug fixing and in restoring lost commits.

#18. Backup untracked files

With the Git, it's easy, If you need the backup of your untrack files.

You can use the git command to create a zip archive. It will place the archive file in your home directory.

This command will take all of the untracked files (but  not ignored files) in your directory:

git commands

git ls-files --others --exclude-standard -z | xargs -0 tar rvf ~/backup-untracked.zip

#19. Get Repository Name

Sometimes it might not be very clear when you are working with multiple projects and in various repositories.

The following command will help you to know the repo name from your Git bash. 

git commands

basename `git rev-parse --show-toplevel`

Get Repo name with best Git tips

#20. Counts your commits

There is a git command to count the number of commits in a branch.

git commands

git rev-list --count <branch-name>

For example, in the following screenshot, the dev branch has 34 commits, and the master has only 32 commits. 

Sometimes it's good to know how many commits you or your coworker have done.

Count your Commits

#21. Open all conflicts

During the merge, you might get conflicts. And it's handy to see all the conflicted files at once in an editor.

git commands

git diff --name-only | uniq | xargs $EDITOR

#22. Autocorrect typos

Sometimes I make mistakes while typing. For example, most of the time, I use git stats ( instead of git status) 

But Git is smart. It gives a clue about the most similar command. 

You can set the autocorrect flag to the right, so instead of telling you to use the correct command, it will use the closest match to autocorrect.

git commands

git config --global help.autocorrect 1

Auto Corrrect with Git power tips

#23. Sort branches by date

You can sort the branches by their commit date. It is helpful when you are away from the project for some time. It is not a fancy thing, but it can help you on different occasions.

The syntax of the command is simple.

git commands

git branch --sort=-committerdate

#24. Git Message Template

The Git tips about message template is really important. As good commit message is also Git best practices.

Writing a useful commit message is a good practice. It always helps the team to understand what is the purpose of each commit. 

You can set up a commit message structure. Its two-step process 

  1. Update your git config to use a commit template 
git commands

git config commit.template ./gitmessage

  1. Create a git message template file (below is an example)

    Why:
    *
    # 50-character subject line

 And when you commit next time, you can use this template to commit.

#25. Update from Remote

You might need to overwrite your local changes at some time. It's easy to update from remote.

git commands

git fetch origin && git reset --hard origin/master && git clean -f -d

#26. Reset Author

If you are using your nickname in git config and Git commits, you want to change it.  It is super easy.

Let's update the author in the gitconfig file.

git commands

git config --global user.name "<name>"

Reset Author with Git Config Command

And now, you reset the author in the commit.

git commands

git commit --amend --reset-author --no-edit

reset the author in the commit - Git Tips

#27. Stash ( And No commit)

A stash is a temporary area where you can use it when you want to store the current state of the index temporarily.

I have also mentioned few Git tips in my another blog - Git commands. Here is another brief.

And the idea is you want to use it later on (without committing your changes)

(a) Create a stash

git commands

git stash <your stash name>

(b) Lish all stash

git commands

git stash list

(c) View the content of your stash

git commands

git stash show

(d) Apply the last stash

git commands

git stash pop

#28. Setting Up a Merge Tool

You can use the merge tool to set up your favorite editor.

Setting up a merge tool is easy. 

git commands

git config --global merge.tool <mergetool_path>

#29. Search Branches

You can search a commit within all branches.   Here is an easy way to explore with a commit hash.

git commands

git branch --contains <commit>

For example, the following commit is available in two branches dev and master. 

Search in Brancehs - Gt Tips

#30. Git Alias

This feature will make your git experience customized and straightforward. 

So if you do not want to write the complete command, you can set up your preferred alias and then use it.

The syntax is straightforward.

git commands

git config --global alias.<handle> <command>

In the following command, we are setting us git status command alias. 

git commands

git config --global alias.s status

 Power Git Tips with Git Alias

#31. Clone a Branch ( And not Repo)

With the clone command, you are copying the entire remote repo. But what about if you want to clone just a specific branch from a remote repository. 

The alternative is git remote add.

git commands

git init

git remote add -t <remoteBranchName> -f origin <remoteRepoUrlPath>

git checkout <localBranchName>

These powerful Git tips, will help you to boost your productivity.  

I have used these git tips not only to boost productivity but also these helped me to save many hours.

Let me know your thoughts about these Git tips.

Leave a Reply

Your email address will not be published. Required fields are marked

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}