Git is the most popular source control system with an incredible 93.87% of adoption by developers (according to ). It's a really powerful system with lots of hidden features not known by most of us developers. StackOverflow's 2022 Survey In this post, I'll show some of these features that will make your work easier when using Git. 1 - Remove remote-deleted branches on fetch Excerpt from : Git documentation Git has a default disposition of keeping data unless it’s explicitly thrown away; this extends to holding onto local references to branches on remotes that have themselves deleted those branches. If left to accumulate, these stale references might make performance worse on big and busy repos that have a lot of branch churn, and e.g. make the output of commands like git branch -a --contains <commit> needlessly verbose, as well as impacting anything else that’ll work with the complete set of known references. To remove local branches that have no remote-tracking references while fetching all branches, instead of using the parameter, use the parameter: --all --prune git fetch --prune git fetch --prune Documentation 2 - Merge/Rebase without checking out the target branch When making a merge or a rebase, it's common to see people do the following: git checkout branch-to-merge-from git pull git checkout my-working-branch git merge branch-to-merge-from Git branches are just references to a commit. When we make a fetch, the remote branches are created locally with a prefix, so there is no need to check out the before merging. origin/ branch-to-merge-from ℹ️ The remote branch prefix depends on the remote name, but the default is . origin The following works without having to checkout and pull in the local branch : branch-to-merge-from git fetch --prune git merge origin/branch-to-merge-from git Remote Branch Documentation 3 - Trigger the CI/CD pipeline with a blank commit If you are working with a CI/CD pipeline (and you should be), sometimes you need to trigger the pipeline without making changes to the code. Instead of changing files adding empty lines at the end, or creating unnecessary logs, we can create an empty commit: git commit --allow-empty -m 'Empty commit' git push git commit --allow-empty Documentation 4 - View a file in another branch When working on a feature, we often need to check a file in another branch, for example, in the production branch (main). Some Git services offer a web interface that makes it easier to look for files in specific branches, but if you don't have this option, Git can show the file in the command line without having to switch branches, using the command followed by the branch name and the path to the file. show git show main:src/Program.cs As with other Git commands, we can pass any commit or reference, instead of the branch name: # Show the program.cs file in the previous commit git show HEAD~1:src/Program.cs git show Documentation 5 - Checkout the previously used branch To switch back to the previously checked-out branch, just pass as the branch parameter: - git checkout develop git checkout main git checkout - #Checkout the develop branch 6 - Searching in Git If you want to search for a string in your repository, use the command. git grep To look for the string in all commits, provide the list of commits to using the command as shown below: git grep git rev-list --all # Search for the word "git" in all files of all commits git rev-list --all | xargs git grep "git" git grep Documentation 7 - Showing the commit log as a graph Git can show the commit logs in the form of a graph in the command line. For this, use the parameter of the command. --graph git log ℹ️ Pass the parameter to show the commit hash and commit message in one line, and make it easier to read the graph. --oneline git log --graph --oneline Git can also show the commit history of a specific file: git log --graph --oneline systemcontext.md git log --graph Documentation Also published here. Like this post? Follow me: Feedly RSS Linkedin Twitter Mastodon