Version control is integral in todays Software Engineering world. There are different version control software’s like Mercurial, Git, SVN. From my experience I’ve worked with Git, Mercurial and CVS. All these tools helps solve one major problem: Maintaining and Managing your development source code. All software companies use some kind of version control and it is essential to understand the concepts and learn how to wield this tool to our advantage.
Note: I’m writing this article to serve as a reference material for students who attend my Workshop on Git and GitHub on July 28, 2021. Other’s can use this article as a cheatsheet for Git commands. Assuming that whoever lands here knows the use and importance of version control, I’m not going to spend more time convincing why you should use a version control system, and dive straight into the content.\
Git is a version control system, it helps to track and manage our source code.
GitHub is a cloud based web-portal which lets us store our Git repositories.
GitLab, BitBucket are some other hosting services like GitHub that lets us manage our Git Repositories.
Step 1: Download and Install Git from the following URL: https://git-scm.com/downloads
After installing the Git in the local machine, initial configurations has to be completed so we can start using it.
Step 2: Open command line and run the following commands
git config --global user.name "[FullName]"
git config --global user.email "[Email]"
Now Git has been successfully configured, and it is ready to be used in the projects for Version control.
Step 1: Download and Install Git from the following URL: https://desktop.github.com/
Step 2: Login with your GitHub credentials in the GitHub Desktop to complete configuration.
Some people feel GitHub Desktop provides relatively better GUI experience than Git’s default GUI tool. (I prefer using Git Bash over GUI 😋.)
In simple terms, “Git Repository” is a Git enabled Directory/Folder. Git keeps track of changes in this repository. Any directory can be made into a Git repository by initializing Git in that path.
To initialize git, navigate to the directory in the command line and execute the following command:
Clone a Git repository
In case if the Git repository already exist in some central hosting server, and you need a copy of the repository to work locally, you can clone the repository in your end.
git clone [URL]
Replace [URL] with the URL of the remote repository.
git clone https://github.com/laxmena/100MLProjects.git will create a copy of my repository in your local system.
How do you find the URL of the repository? If you are using GitHub to host your Git repositories, check the screenshot below to find the URL of your repository.
“Commit” creates a snapshot. i.e. Your progress so far is saved and you can revisit this point anytime without having to worry about losing your progress.
Making a commit is a two step process. First you need to stage the changes that you need to commit, and next you commit your changes.
Step 1: Stage changes. Staging is done by using ‘git add’ command.
git add [File1, File2, ..]
or if you wish to add all your changes so far, you can use
git add -A
Other flags that you can use:
git add . : stages new files and modifications without deletions
git add -u : stages modifications and deletions without new files
Step 2: Commit your changes
git commit -m [Commit message within quotes]
git commit -m "Create new roles"
git status: This command shows “staged” modified files in the repository
git reset [File] : If you want to unstage a particular file, you can use this command to demote the status from staged.
git diff : Shows diff of the modified files(that are not staged).
git diff --staged : Shows diff of the modified files that are staged but not committed.
git diff <commit1> <commit2> : Shows difference between two commits
Know more about git diff here: https://git-scm.com/docs/git-diff
A Git Branch represents an independent line of development.
git branch : Lists available branches
git branch [branch-name] : Creates a new branch with the specified name
git branch -d [branch-name] : Delete the branch
git checkout [branch-name] : Switch to a different branch
git merge [branch-name] : Merges ”[branch-name]” branch with the current branch (combines changes between branches)
git tag - add tags to specific branches
git tag -a v1.0 : (adds a new tag, flag ‘a’ represents annotated)
git tag -d v1.0 :(deletes tag v1.0, flag ‘d’ represents delete)
git log : Displays info about the previous commits
git log --oneline : Displays SHA and Description in a single line
git log --stat : Displays modified files, and summary of changes in the files
git log -p : Display actual changes made the the files
git log -w : ignore whitespace changes
git log -p [SHA] : View a specific commit
git show: Display info about existing commit
git show [SHA] : Show a specific commit
git commit --amend -m "[Message goes here]" : Amends the previous commit with new message.
ls- List files in the current directory (Linux/Mac)
dir - List files in the current directory (Windows)
mkdir - Make new directory
cd- Change current working directory
rm- remove/delete files and directories
pwd- print working directory (Linux/Mac)
cwd- print current working directory (Windows)
mv- move file/director from one path to another
You can download the VS Code Extension GitLens and it can be very very useful.
You can find the extension here: https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens
We have been taught not to judge a book by its cover, but unfortunately many do that. You can make use of the Profile README feature that GitHub provides to make your best impression to those who view your GitHub profile.
I’ve previously written a step by step guide of how to setup GitHub profile README here:
Keep watching my website for more articles related to Software Engineering, Technology, Machine Learning, Books and other useful information. You can signup for my Bi-weekly newsletter to get notified about my recent articles. You can find the signup form at the end of this article.