If you are a part of a professional software development setting, you would know how things work when it comes to writing code. There are usually different teams that write code – the development environment could have a team of developers that are sitting in the same location working closely with a team that is collaborating with them remotely from another part of the globe.
Both these teams write their code and contribute to a central codebase. This is where version control systems or VCSs come into play. They manage codebase that collects code from different sources.
Check out our free courses to get an edge over the competition.
What is a version control system?
A version control system is a single point of reference for the contribution and management of all the stages and releases of a product, and it does this job without the need for having multiple files or folders. VCSs take out the issues that usually arise during the development phase, and streamline the entire process by not making developers trade files or folders.
Developers instead have a single source that they need to communicate with. It is this source that sees all the changes in the code. All the files are saved in this location. We have two types of VCSs that developers make use of around the world depending on their needs. These VCSs are
Check out upGrad’s Java Bootcamp.
Centralized version control systems: These VCSs make use of a centralized repository where the project or codebase exists. This centralized project consists of all the files that are contributed by the developers of a team. If any developer wants to make changes to the project or the files stored in it, they need access to enter this repository.
Distributed version control systems: In these VCSs, things are a lot more flexible than their centralized counterparts. Mercurial and Git are the most common examples of distributed VCSs. In this system, every developer has its own local repository that not only has the code written by them and the changes that they made to it over a period of time but also their releases as well as those of other developers.
Check out upGrad’s Full Stack Development Bootcamp (JS/MERN)
What is git?
In simple words, git is a distributed version control system that is available for free. It is an open-source VCS that can handle both small and large projects with greater speed and efficiency than its counterparts. It is the most preferred distributed version control system out of all the available ones.
How does git work?
Git doesn’t work in the same way that most of the other version control systems do. Unlike other VCSs that calculate differences in files and sums these differences up to arrive at the saved version, git uses snapshots of your files system to do the job. Whenever you commit changes to the files or save the changed state of the project, you will have git taking a snapshot of the system and then saving it as a reference.
Files that don’t undergo any change will have their previous snapshot stored as a reference. Git provides developers a string of commands to help them perform different tasks. We will discuss top 30 git commands that are most commonly used by open source developers.
Explore our Popular Software Engineering Courses
When you are using git, you will have your files in any of these three states – modified, staged, or committed. Let’s discuss what these states actually mean.
Your files are in the modified state when you are making changes to them in your local repository; however, these are still not stored. In the staged state, the changes you made to the files are saved. Finally, in the commit state, the modified and saved files are stored in your project or codebase.
Now, there is something very important about git that you need to thoroughly understand. There are two types of the repository that you can run with git. Your laptop or desktop that you are working on has your local repository, which is also referred to as the working directory. Then a remote repository exists on the cloud.
So the question is how do you use these two repository types with git? The local repository comes with all the necessary features but is only available to be used on your desktop or laptop. What do you need to do when you have to share the files with others in your team? Use Gitlab or GitHub to create your code’s remote repository.
Then you can simply use that repository to upload your files or code. Now everyone that has access to your repository can download the files to their local laptop or desktop and make their contributions.
Top Features of GIT: Understanding the Benefits of GIT through the Following Features
GIT is popularly known as the distributed version control system, which assists developers in collaborating on any software project. Before learning the top git commands, discover the top features of GIT from the following.
It’s speedier, so it saves time
The performance of GIT is faster, so it makes more effective use of time and allows for faster development.
Easy to use and seamless to learn
GIT is seamless and easy, so mastering basic commands does not take time. Take the example of GIT clone command, GIT add, or GIT commit: all these are simple to learn.
One more reason why GIT is seamless to learn is that there is excellent documentation you can find on it.
Undo mistakes in no time
One of the most amazing benefits of the version control system is that it has the ability to revert to prior actions. In short, it can easily track down where and how you went wrong. With GIT, you will find an undo command, which simplifies fixing any kind of issues and errors. Take the example of the Reflog command, which allows you to restore the deleted commits.
Simplify collaborative work
GIT simplifies the process of working with other developers, given that this system includes seamless options for resolving conflicts which would arise from two individuals working on a single file. In addition, it also merges the changes implemented by two or more individuals.
Collaborating with remote repositories
Did you know there are hosting platforms that provide GIT repositories as a single service? GitLab, GitHub, or Bitbucket: anything you name it, and you will find it simpler to work on these platforms in collaboration with different developers.
The biggest advantage is any member can download or upload the changes made to the project. It is usually more inexpensive than the traditional service. These aforementioned platforms provide you with both free and paid plans based on your requirements and needs.
Work when offline
Who said remote repositories do not allow you to work offline? GIT gives you the ability to work on the local repositories without connecting to a central repository. Doesn’t that give you the utmost flexibility to work anywhere, anytime?
Note that GIT consists of a distributed file system, which means every file copy mirrors the repository. So, even if any issue with the server corrupts the repository, it isn’t difficult for the local copy to offer the complete backup. On that note, GIT gains a considerable advantage compared to centralized version control systems.
Seamless code review with the pull requests
Suppose you have started working on a code branch. And you have added a new feature, which you will merge into the central branch.
As soon as the feature is ready, you will have to create the pull request that works as the formal request for adding the feature. So, the developer will get its request and review the code before discussing things about improvements or changes. In such times, pull requests are the best way because they ensure code reviews.
A big community
Since GIT comprises a large community, a large group of individuals are there behind working on its improvement. Developers aim to make the support system outstanding by constantly working on reporting bugs, security issues or resolving errors.
In-Demand Software Development Skills
All these commands that we will be discussing in this section have a big role to play in making the software development process a lot easier for developers. We will mention the most useful of those commands.
1. Configure details: This can be used to configure your profile. Use git config command for this purpose. You can set up your name and email ID using this command. You are allowed to configure these details on two basis – project or global. Use the below command for locl repository.
git config user.name “Bill Tench”
git config user.email firstname.lastname@example.org
Use global config command for global set up
git config — global user.name “Bill Tench”
git config — global user.email “email@example.com
2. Initialize repositories: A repository is a type of directory for your projects. It has a lot of information, including source files, tags, heads, sub-directories, and other things. Use the git init command to initialize a repository. This command is one of the most used commands out of all the others. After the initialization of a repository, you can start adding files to it and start modifying them.
3. Add files: Git makes adding files a very task. Use the git to add a command to add all your modified files or directories to the repository. Let’s see how it works.
git add file
This command will have all the files from the working directory and add it to the repository. You can add specific files using this command. Now if you want to add PHP files, you can use the command mentioned below.
git add *.php
These files will then be marked for staging.
4. Verify files that are added: Files that have been recently added can be verified with the git status command. You can view new files or the ones that have undergone modification using this command. You can run the git status command for viewing the details. Once you use this command, you will see all those files that are set for the staged state in the next commit.
5. Commit repository changes: As discussed earlier, every time you commit a change, s snapshot of the codebase is taken. This is how git tracks changes and delivers version control. The command used for this function is git commit.
As soon as you run this command, you will be asked to provide some information. It could be anything like adding a small detail. The default Linux editor that was set up during installation will be invoked. Use git commit –m “First Commit” command to stop his indiscretion from taking place.
6. Display logs: If you want to see what changes you have made to the repository, you need to check the logs. Make use of the git log command to get this done. This will display generalized information on the commits you have made. Use git log –file command sees what changes you have made to a particular file. You can use other options as well to check the logs for other details.
7. Verify git branches: A branch shows an independent phase of development in a project. To view the current branch, you can use the git branch command. With this command, you will be able to see the branch you are currently working on. The active branch will have an asterisk sign against it in the output to differentiate it from other branches.
8. Reset branches: It is very to reset the working directory or repository you are currently on to a different state. You can use the git reset command to perform this function. You can perform a soft or hard reset of the current branch using the below-mentioned commands:
git reset –soft
git reset –hard
9. Add new branches: If you want independently work on new features, you can add new branches to make the job easy. Use the git branch command for this. Add the branch name for identification.
git branch feature-work
To make sure that the branch was added successfully, use the git branch command again. If the addition was successful, it will display the new branch with the name of feature-work. You need to remember that you can add only one new branch with the same name. If you do so, it will result in a fatal error. So try using different names for adding new branches.
Explore Our Software Development Free Courses
|Blockchain Technology||React for Beginners||Core Java Basics|
10. Switch between branches: You can use the git checkout command to switch between different branches with your project. This command is also used by developers quite commonly during software development. Here is an example
git checkout feature-work
With this command, you will be notified of a successful switch. To make sure that the switch really happened, use the git branch command that we discussed earlier.
11. Display version: Use the git –version command to view the git version installed on your machine.
12. Consult manual page: Use the man git and man git commit commands to see manuals for sub-commands.
13. Manage git configuration: You can use the git config command to set, replace, or query different configuration options.
14. Summarize log info: Use the git shortlog command for this purpose.
15. View modifications for each commit: You can use git what changed the command to see the changes that each commit brought to your project.
16. Validate object database: Use git fsck command to find bad or missing objects in the object database.
17. List unpacked objects: Use the count-objects command to display the total number of unpacked objects as well as the disk space they are taking.
18. Pack objects that aren’t already packed: You can use the git repack command for this purpose.
19. Manage working trees: Use the git worktree command to display a working tree, remove a working tree, add a working tree, and prune a working tree respectively.
20. Look for patterns: Use the git grep command to make development easy by looking out for specific pattern in your repositories.
21. Display remote repositories: Use the git remote command to perform this function
22. Push updates: You can use the git push command to add your updates to the remote repository.
23. Pull new updates: You can use the git pull command to update the local version of your project with the modifications made by other developers.
24. Clone repositories: Use the git clone <Git : URL> command to perform this function.
25. Stash working directory: You can use git stash command for this purpose.
26. Revert existing commits: Use the git revert command to revert commands that are no longer useful.
27. Merge two branches: Merge two development branches into a single unified branch with the git merge command.
28. Check differences between files, commits, and tress: You can use the git diff command to perform this function.
29. Add tags to projects: Mark important events in your project with the git tag command.
30. Fetch remote data: Use the git fetch origin command to perform this function.
Also Read: Top Full Stack Developer Tools
If you’re interested to learn more about Github commands, full stack software, check out upGrad & IIIT-B’s PG Diploma in Full-stack Software Development which is designed for working professionals and offers 500+ hours of rigorous training, 9+ projects and assignments, IIIT-B Alumni status, practical hands-on capstone projects & job assistance with top firms.
What does git reset do? What are soft and hard resets in git?
Git reset is a command that is used to undo changes. The command consists of three parts namely- commit tree, staging index, and working directory. Git reset uses the head ref pointer and current branch reference pointer. Git reset moves both the pointers to the specified commit. The soft and hard resets are used to modify the staging index and commit-tree. Soft reset only uncommits the changes and the staging index is left unaltered while the hard reset uncommits, unstages, and deletes the changes made permanently. This is the reason why hard reset is considered to be the most dangerous reset to perform.
What is git stash and what are its uses?
Stashing is a technique used to save uncommitted changes. Sometimes, we might want to save some changes mid-way of the project and work on them later on. This is when the git stash command is used. The command used for stashing a particular file is “git stash push filename”. The command “git stash pop” is used to return to the working directory and to re-apply the previous commits. A stash is stored locally. Git provides various commands for the user to view the list of stashed files, drop them, clear them and make branch changes as well.
What does packing and unpacking of objects mean?
Packing objects is a way in which similar objects are compressed using delta compression schemes to occupy lesser disk space. It is similar to creating a compressed zip file and extracting them later when we want to use it. Packing is the most efficient and archival format to transfer objects between repositories. It also maintains a pack index file that stores pointers to the object locations and provides fast access to objects. Unpacking of objects refers to extracting the contents of the packed file and expanding the objects into a “one file one object” format. This is similar to extracting files from a zip file before using them.