If you are a software developer you must be aware of the most popular version control system used
git. I use git CLI for my day-to-day developer tasks, few prefer GUI clients such as
Sourcetree over CLI.
In this post, I'm going to explain to you the useful commands that I've been using for years and have benefited a lot to be productive.
Let's get started,
Let us say you have created a
fix-payment-bill-issue branch from the
master branch to fix a bug and want to switch to the last branch you were in. This will be useful when you don't remember the branch name that you have checked out last time.
$ git checkout -
This will be useful to know whether your changes were merged with the targeted branch.
$ git branch --merged <targeted-branch>
Copy a file from another branch without switching the branch, make sure that the file is committed in another branch before copying it.
$ git checkout <target-branch> -- <complete/path/to/file.js>
Search git log with a particular text string, it lists all the commits matching the string
$ git log -S'<search-string>'
Add the modified and uncommitted files to the previous commit without changing the commit message.
$ git commit -a --amend -C HEAD
$ git remote prune origin $ git fetch -p
git provides a feature called
aliases, which helps you to define aliases for the list of commands you use more frequently and help you get the work done faster instead of typing out the whole commands in the command line.
- Print the last 15 commits with less info
$ git config --global alias.l15=log --oneline -15
--localoption instead of
--globalto apply these aliases to the individual repo.
- Fetch the changes from the remote, it removes any remote-tracking references that no longer exist on the remote.
$ git config --global alias.f=fetch -p
- List all the modified files in the current branch, it will give you a holistic picture of which files are committed before pushing to the remote repo.
$ git config --global alias.list-files=show --pretty="" --name-only HEAD
- Sort all the branches that you have created in descending order with author name and other details. Refer documentation to customize the fields you want to display.
$ git config --global alias.sort-branch=!"git for-each-ref -- sort=-committerdate refs/heads --format='%(HEAD)%(refname:short)|%(committerdate:relative)|%(subject)'|column -ts'|'"
If you delete the cloned copy after a feature/bug is completed and clone the fresh copy each time you work on a new feature/bug, the above alias is of no use. Prefer using the single cloned copy, create as many features, or bug fix branches in the same local copy so that it is easy to look back on history to see which fix/feature went when.
- Other useful aliases
# pull changes from master $ git config --global alias.pom=pull origin master/main # Rebase with master $ git config --global alias.rbm=rebase master # To get the list of all the global configs for the machine # Change it to --local to see a local configuration $ git config --global alias.config-list=config --global --list $ git config --global alias.cl=checkout -
- Use the created alias as follows,
gitcommand before the alias name is mandatory
$ git f
- If you are on
Linuxdistribution, you can combine more than one command with short-circuiting to execute the commands sequentially.
$ git cm && git f && git pom && git cl && git rbm
Above command checks out to the master branch from the current branch, then fetches the remote changes, then pulls the changes from master and merges with the master, then checkout to the last branch point you were in, and finally releases the master changes with the current branch.
I recommend you to type the complete commands until you are familiar with them so that you won't forget them because you have aliases defined.
Hope this will help you learn a few git tips and tricks and increases your productivity over time.
Please leave a comment if you want me to cover the basics of git or any other topic related to git. Follow me for more technical content related to JS, React, NodeJS, and other libraries or tools.