For working professionals
For fresh graduates
More
Did You Know: In 2024, approx 87.2% of developers globally use Git, making it the most widely used version control system.
If you're wondering, "What is Git?" it's a powerful tool that helps manage code changes, track history, and collaborate with others. Git empowers developers by offering a flexible, distributed approach to version control, enabling seamless collaboration, faster iteration, and complete control over project history. From handling simple tasks to complex workflows, Git is essential in any modern development environment.
This blog will guide you through the fundamentals of Git, covering commands, repositories, branches, and the overall workflow. You’ll learn practical skills to streamline your development process and collaborate more efficiently.
The full form of Git is "Global Information Tracker." It is a distributed version control system that allows developers to manage their code. It tracks changes in files, allowing multiple people to work on a project simultaneously without losing any data.
With Git, each user has a complete history of the project on their local machine, meaning they don’t rely on a central server for version control. In simple terms, it enables smooth collaboration, even across different time zones.
Its distributed nature, efficiency, and support for branching make it an indispensable tool for both solo and team-based projects.
To dive deeper into Git’s functionality, let's look at some key features:
Understanding the power behind Git requires knowing why it has become a standard in software development. So, let’s explore the reasons why Git is so important.
When you learn what is Git, it’s important to recognize that it offers an unmatched level of control and ease in software development. If you are working on a project with others or even on your own, Git will help you stay organized and productive.
Here are some critical reasons why Git is essential in the software development:
Git enables multiple developers to work on different parts of a project simultaneously without conflicts. Developers can create branches for separate features and merge them later. In case of merge conflicts, Git clearly identifies differences, allowing developers to resolve issues before merging changes into the main branch.
Git allows easy rollback to previous versions, making it simple to fix bugs by reverting to a stable state. It also tracks each change in detail, so developers can identify the root of issues and improve code quality over time.
Git’s detailed commit history ensures all changes are traceable. Each commit includes metadata, like author, timestamp, and message, providing a clear, consistent record of the code's evolution. This traceability ensures code reliability and helps maintain project integrity.
With a basic understanding of Git, let’s now compare it with other version control systems to see how it stands out.
Git stands apart from other version control systems (VCS) due to its distributed nature. Unlike centralized VCS like Subversion (SVN), Git allows each user to have a complete local copy of the project repository. Git’s distributed nature ensures that work can continue offline, making it ideal for remote development.
When comparing Git with other systems, consider the following differences:
With Git’s version control capabilities, you understand the importance of practical tools in software development. Now, take your skills further with upGrad’s Master’s in AI and ML Course, where you'll master both foundational and advanced AI technologies through 60+ real world case studies. Enroll now!
Git's popularity stems from its scalability, handling everything from small apps to large enterprise systems. Let's explore its benefits in software development.
The adoption of Git in software development brings numerous advantages that significantly enhance productivity and efficiency. From preventing data loss to promoting faster code deployment, Git’s advantages are broad and indispensable.
As you move forward in your journey of learning what is Git, understanding its tangible advantages is essential for recognizing why developers worldwide trust this tool.
Here are some practical advantages Git provides in practical development scenarios:
Advantage | Description | Example Use Case |
Faster Operations | Git performs actions locally, speeding up tasks like commits and checkouts. | A developer quickly switches between different branches for testing. |
Enhanced Collaboration | Multiple developers can work on branches independently. | Teams working on a large feature without affecting each other’s code. |
Data Integrity | Git uses a hashing algorithm to protect data from unauthorized changes. | Developers can ensure that the project history is intact even during large refactors. |
Better Backup | Developers have a full copy of the repository on their local machines. | In case of server failure, a developer retrieves project files from their local Git copy. |
Also Read: What is Github? and How to Use it?
Having covered what is Git, let’s explore its most important features.
Git’s key features, including distributed version control, branching, data integrity, and speed, provide developers with powerful tools to manage complex projects. These features enhance collaboration, streamline workflows, and ensure code integrity in modern software development.
One of the most powerful features of Git is its distributed nature. Unlike centralized version control systems, each developer using Git has their own local copy of the entire repository. This allows developers to work offline and independently, as they have access to the full history of the project right on their local machine.
The key benefit of this distributed structure is its reliability and flexibility. When you ask “What is Git?” understanding its distributed version control system is crucial. It ensures that each developer’s work remains secure, even if the central server fails. Every user has a complete history of the project on their machine, which makes data loss less likely.
Here’s why distributed version control is essential:
As Git is a distributed system, it is important to see how it handles branching and merging. Let’s explore how Git excels in this area.
Git allows developers to create separate branches, each representing a distinct line of development. Branches are crucial for managing tasks like adding features, fixing bugs, or preparing releases without affecting the main codebase. This isolation reduces the risk of conflicts and errors.
Branching is key to effective collaboration, enabling multiple developers to work on different tasks simultaneously. For instance, one developer can work on a new login system while another focuses on payment integration. Once their tasks are completed, they can merge their changes back into the main branch, keeping the codebase organized and conflict-free.
When you learn “What is Git,” you realize that these capabilities significantly improve collaboration and productivity in software projects.
Here are the main advantages of branching and merging in Git:
Now, let's move on to discuss how Git’s performance is optimized by being lightweight and fast.
Git is designed to be extremely fast and efficient, making it ideal for both small and large projects. The system operates locally, which significantly boosts performance. Git commands are executed almost instantly, even when working with large repositories.
When asking "What is the full form of Git?" understanding its speed and efficiency is essential. Git is optimized to handle massive amounts of data and complex codebases without sacrificing speed. As projects grow, Git ensures that performance remains consistent.
Here are some reasons why Git is both lightweight and fast:
Next, let's explore how Git ensures data integrity and security in software projects.
Git guarantees data integrity by using cryptographic hashing algorithms. Every change made in Git is recorded with a unique identifier, ensuring that no data is tampered with or corrupted. This is crucial for maintaining the accuracy and trustworthiness of a project’s history.
Understanding the importance of data integrity is key to answering "What is Git." It ensures that developers can track every change with certainty. Git's robust design helps maintain the security of your project files throughout development.
Here’s how Git ensures data integrity and security:
Also Read: A beginner's guide to GitHub
Let’s now look at another important feature: the staging area in Git.
The staging area in Git is where changes are prepared before they are committed to the repository. It acts as a buffer, allowing you to review changes before finalizing them. This gives you more control over your project, as you can decide which changes should be committed and which should not.
The staging area is essential to understanding "What is Git" because it ensures that only intentional changes are added to the project history. You can add specific files or changes to the staging area, leaving other modifications untouched.
Key points about the staging area:
Now, let’s explore how Git is open source and free, which makes it even more accessible for developers.
Git is an open-source tool, meaning it’s free to use and its source code is available for anyone to inspect and modify. This openness fosters a large community of contributors who continuously improve Git and create plugins and integrations.
When you look at “What is Git,” its open-source nature allows developers to freely access and use the tool without any licensing costs. It has become the standard in version control systems due to this accessibility and the collaborative nature of its development.
Advantages of Git being open-source:
Finally, Git integrates seamlessly with popular platforms like GitHub, GitLab, and Bitbucket. Let's explore this compatibility.
Git is compatible with platforms like GitHub, GitLab, and Bitbucket, which allow for cloud-based repository management. These platforms provide additional features like issue tracking, continuous integration, and collaboration tools that enhance Git's capabilities.
These platforms are built specifically to work with Git, enabling developers to store their code online and collaborate with other developers. With GitHub, GitLab, and Bitbucket, developers can push and pull code, track issues, and manage pull requests efficiently.
Key benefits of Git compatibility with these platforms:
Want to become an expert in Git and version control? Sign up for upGrad’s Online Software Development Courses and gain hands-on experience with the tools that power modern software development. Start learning today!
Also Read: What is the Difference Between GitHub and GitLab?
With these features in mind, let's dive into how Git works in practice through its workflow.
Git workflow covers the steps of managing changes in a repository, from editing files in the working directory to committing, pushing, and pulling changes. Understanding these processes is crucial for effectively using Git in both individual and collaborative environments.
The working directory is where you make changes to your project files. It is the local directory on your computer where you work on your project’s source code. Changes made here are not yet tracked by Git. This is where you write new code, modify existing files, or delete unnecessary ones before you add them to the staging area.
When you ask “What is Git?” the working directory is one of the first steps in the workflow. It serves as the starting point for your edits. The changes in the working directory are local, meaning they are not yet reflected in Git’s tracking system.
Key features of the working directory:
Once changes are made in the working directory, they need to be moved to the staging area. Let’s discuss the staging area next.
The staging area is where you prepare your changes before committing them to the local repository. It acts as a checkpoint where you decide which changes should be included in the commit. Git doesn’t automatically commit all the changes in the working directory; instead, you select the changes you want to include in your commit by adding them to the staging area.
Knowing how to stage changes is crucial when learning Git commands. For instance, when you run git add <file>, it moves your file from the working directory to the staging area.
Important aspects of the staging area:
After staging, the next step is committing. Let’s move on to understanding how the local repository fits into the Git workflow.
The local repository is where Git stores the history of your project. After you stage changes, you commit them to the local repository. This creates a snapshot of your files at that point in time. The local repository contains all the commits that represent the history of your project, and it is saved on your local machine.
Committing is a fundamental part of learning Git commands. When you run git commit -m "message", you are saving the staged changes into your local repository, and Git records this in its history.
Key aspects of the local repository:
Once the changes are committed locally, they are ready to be pushed to a remote repository. Let’s look at how remote repositories fit into the Git workflow.
A remote repository is a version of your project hosted on a server or a cloud platform like GitHub, GitLab, or Bitbucket. This is where you share your changes with others. The remote repository contains the latest version of the project that can be accessed by collaborators, and it acts as the central point of collaboration.
To upload your local commits to the remote repository, you use the git push command. This ensures that your changes are available to other team members who are working on the project.
Here’s what you should know about remote repositories:
Next, let’s explore the commands that help you commit, push, and pull changes in the Git workflow.
These three fundamental Git commands form the backbone of the Git workflow. Understanding how to commit, push, and pull changes will enable you to work efficiently with Git.
The process of committing, pushing, and pulling is straightforward but crucial for collaborative development.
Looking to improve your collaboration and coding workflows? upGrad’s Job-linked Full Stack Development Bootcamp will teach you how to leverage OpenAI, GitHub Copilot, Bolt AI, Playwright, and more for seamless development processes. Start learning today!
Also Read: How to Become a Software Engineer in India: A 2025 Guide to Success
To better understand Git, let’s examine the key commands used in its workflow.
Git commands allow developers to configure, manage repositories, work with branches, and commit and push changes. These commands are the backbone of Git’s functionality, enabling developers to perform key tasks such as initializing a repository, creating branches, and synchronizing with remote repositories.
Git configuration commands are essential for setting up and customizing your Git environment. These commands allow you to define user information, set up repositories, and customize how Git behaves on your machine. Configuring Git correctly is important for efficient usage, as it ensures all your actions are properly tracked.
The first command you need to know in this category is git config. Let’s look at it in detail.
The git config command is used to set Git settings such as your username, email, and default editor. This is important for tracking who is making changes to the project and ensuring that your commits are correctly attributed to you.
Before making any commits, you’ll need to configure your username and email. These settings can be applied globally (for all repositories) or locally (for a specific repository).
Common git config uses include:
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
These settings ensure that all your commits are properly attributed to your identity.
git config --global core.editor "nano"
git config --global core.editor "vim" # For vim
git config --global core.editor "atom --wait" # For Atom
git config --global core.editor "code --wait" # For VS Code
By customizing these settings, you ensure that your Git environment aligns with your preferences, making your development process smoother and more efficient.
Now that you’ve configured your Git environment, you may need help understanding Git commands. The next command helps you with that.
The git help command provides access to Git’s built-in manual, offering interactive and detailed information about any Git command. This is especially useful for beginners or developers who want to learn about the syntax, flags, options, and usage of specific commands directly from the terminal.
Here’s how to use git help:
For example:
git help commitThis will bring up an interactive, detailed guide on the git commit command, explaining how it works, what options you can use, and best practices.
Once you’ve configured Git and learned how to access help, the next step is working with repositories. Let’s explore Git repository commands.
Git repository commands are used to initialize, clone, and manage repositories. These are crucial for setting up your project and ensuring you can work with other team members by accessing repositories remotely.
Now, let's look at the commands you need to manage your repositories.
The git init command is used to create a new Git repository. When you run this command, Git initializes a .git directory, which contains all the necessary files for version control. This is the first step in creating a new Git project.
For example,
if you want to create a new repository, run:
git init
When you create a repository with git init, it starts tracking changes in that directory. The next command, git clone, is used when you need to clone an existing repository.
The git clone command creates a local copy of a repository from a remote server. It is often used to collaborate with others on existing projects. After cloning, you can make changes locally and push them back to the remote repository.
For example, to clone a repository from GitHub, run:
git clone https://github.com/username/repository.git
Now that you know how to manage repositories, it’s time to explore branching. Git branching commands help you create and manage branches in your repository.
For advanced workflows or troubleshooting, Git offers several powerful commands. While this blog doesn't delve into them in-depth, understanding these commands can provide significant value.
For more details on these advanced commands, check out Git's official documentation or explore tutorials that focus on advanced Git workflows.
Git branching commands are essential for working with different versions of your project. Branches allow you to work on new features, bug fixes, or experiments without affecting the main project.
Understanding how to create and switch between branches is key to mastering Git. Let’s dive into the relevant commands.
The git branch command is used to create new branches or list existing ones. This command is crucial when you want to organize your work into separate features or fixes.
For example, to create a new branch, you can use:
git branch new-feature
git branch
Now that you know how to create branches, let’s see how to switch between them.
The git checkout command allows you to switch between branches. This command is essential when you want to move to a different branch to work on a new feature or bug fix.
For example, to switch to a branch called new-feature, use:
git checkout new-feature
git checkout -b new-feature
Also Read: Git Checkout: Restoring Files And Advanced Usage
Once you’ve worked on a branch and are ready to integrate changes, you need to merge the branches. Let’s look at the merge command.
The git merge command is used to combine changes from one branch into another. It is commonly used to bring the changes from a feature branch into the main branch, like main or master.
For example, if you are on the main branch and want to merge changes from the new-feature branch, you can run:
git merge new-feature
Once you've created your branch and made the necessary changes, the next step is to commit those changes and push them to a remote repository.
Git commit and push commands allow you to save your changes to your local repository and share them with others by pushing them to a remote repository. These are essential for tracking changes and collaborating effectively.
Let’s take a closer look at the key commands.
The git add command stages your changes for the next commit. Before you commit changes, you must add them to the staging area. This tells Git which changes to include in the commit.
For example,
git add filename.txt
git add .
Next, after staging the files, you can commit them to your local repository.
The git commit command saves your staged changes to your local repository. Each commit creates a snapshot of your changes, and it includes a message describing what was changed.
For example, to commit your changes, use:
git commit -m "Added new feature"
After committing, you need to push the changes to the remote repository.
The git push command is used to upload your local commits to a remote repository. This is crucial for sharing your work with collaborators.
For example, to push your changes to the main branch, run:
git push origin main
Also Read: Top 28 Git Commands for Developers in 2025
Here is an overview of some useful commands with example usage:
Command | Description | Example Usage |
git config | Configure Git settings like user name and email. | git config --global user.name "Your Name" |
git help | Display help for a specific Git command. | git help commit |
git init | Initialize a new Git repository. | git init |
git clone | Clone an existing repository. | git clone |
git branch | Create a new branch or list branches. | git branch new-feature |
git checkout | Switch between branches or create a new branch. | git checkout new-feature |
git merge | Merge changes from one branch into another. | git merge new-feature |
git add | Stage files for commit. | git add . |
git commit | Save changes to the local repository. | git commit -m "Message" |
git push | Push commits to a remote repository. | git push origin main |
Start your software development journey with upGrad's Fundamentals of Cloud Computing course. See how Git and GitHub are used to build and manage cloud-based applications. Enroll for free today!
After learning basic Git commands, let's explore how branching works in Git to manage your workflow.
Git branches allow developers to work on separate versions of a project without affecting the main codebase. This section covers how to create, merge, and delete branches, and how to resolve conflicts when working with branches in collaborative environments.
Git branches are powerful tools that allow you to work on multiple versions of a project simultaneously. A branch is essentially a pointer to a specific commit in the repository’s history, and it lets you isolate changes until they are ready to be merged back into the main project. Branches help developers to experiment with new features or fix bugs without affecting the main codebase.
When you ask “What is Git?” understanding branches is key to understanding how Git helps streamline development workflows. Git branching enables flexibility and safety, allowing changes to be made in parallel without risking the stability of the main codebase.
Here are the main concepts of Git branches:
Once you understand what branches are, you will likely need to create or delete them. Let’s explore how to create and delete branches in Git.
Creating and deleting branches is an essential part of Git’s branching functionality. Understanding how to create a branch is key to working on isolated features or fixes. Similarly, deleting branches helps keep the project clean and organized when they are no longer needed.
If you are wondering "How to create branch in Git," here are the steps:
To create a new branch in Git, use the git branch command.
For example, to create a branch called new-feature, run:git branch new-feature
You can combine creating and switching to a branch in a single command:git checkout -b new-feature
After finishing work on a branch, you may want to delete it. Use the git branch -d command to delete a branch safely. For example:git branch -d new-feature
Now that you know how to create and delete branches, the next step is to understand how to merge and rebase branches. Let’s dive into that.
Merging and rebasing are essential processes in Git for combining changes from different branches. These operations help integrate work done in isolated branches back into the main project.
The git merge command is used to combine changes from one branch into another.
For example,
if you want to merge the new-feature branch into main, run:git checkout main
git merge new-feature
Rebasing is another method of integrating changes from one branch into another. It is often used to maintain a cleaner, linear project history.
To rebase the new-feature branch onto the latest main, run:git checkout new-feature
git rebase main
Merging and rebasing are both powerful tools, but the choice of which to use depends on the project’s needs and team preferences. Next, let’s explore how to resolve conflicts when merging or rebasing branches.
Conflicts may arise when merging or rebasing branches if Git is unable to automatically reconcile differences between files. Resolving conflicts is a key skill for developers working with Git. Understanding how to identify and fix conflicts will help keep your workflow smooth.
When a conflict occurs, Git will mark the conflicting sections of the file and stop the merge or rebase process.
For example,
after running git merge, Git may display something like: Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Open the conflicted file and look for conflict markers, such as: <<<<<<< HEAD
[Your code]
=======
[Their code]
>>>>>>> branch-name
You will need to manually edit the file to resolve the differences. After resolving the conflicts, mark the file as resolved by staging it with: git add file.txt
Completing the Merge: Once all conflicts are resolved and the changes are staged, complete the merge with:git commit
If you’re working with a rebase, use the following to continue after resolving conflicts:
git rebase --continue
Command | Description | Example Usage |
git branch | Create or list branches in a repository. | git branch new-feature |
git checkout | Switch between branches. | git checkout new-feature |
git checkout -b | Create and switch to a new branch. | git checkout -b new-feature |
git merge | Merge changes from one branch into another. | git merge new-feature |
git rebase | Rebase the current branch onto another branch. | git rebase main |
git branch -d | Delete a branch after it has been merged. | git branch -d new-feature |
git branch -D | Force delete a branch. | git branch -D new-feature |
git add | Stage resolved conflicts. | git add file.txt |
git commit | Commit the merge or rebase changes after resolving conflicts. | git commit |
git rebase --continue | Continue the rebase after resolving conflicts. | git rebase --continue |
Understanding Git branches lays the foundation for appreciating GitHub's collaborative features.
GitHub enhances Git by offering a cloud-based platform for hosting repositories, enabling collaboration, and automating workflows with GitHub Actions. It provides a robust environment for version control, code sharing, and continuous integration, making it a vital tool for developers.
GitHub provides a cloud-based hosting platform for Git repositories. It allows you to store and manage your code online, making it accessible from anywhere. With GitHub, you can back up your local repositories, ensure version control, and securely store your projects. This platform plays a crucial role in modern development workflows, especially for collaboration and sharing code.
When you ask, “What is Git?” integrating it with GitHub offers a more powerful solution. GitHub enhances Git by providing an easy-to-use interface and features like issue tracking, pull requests, and more. By using Git and GitHub together, you gain both the local version control of Git and the remote capabilities of GitHub.
Here are the key features of GitHub as a hosting platform:
Now that you understand GitHub’s role as a hosting platform, the next step is looking at how GitHub fosters collaboration and code sharing.
GitHub is specifically designed to promote collaboration and code sharing. It facilitates easy access to repositories, allowing developers to contribute to each other’s projects. Whether you are working on open-source software or collaborating within a team, GitHub’s features make teamwork smooth and efficient.
Knowing how Git commands work with GitHub is key to unlocking GitHub’s full potential. By pushing changes to GitHub and collaborating with others, you can keep everyone in sync and contribute to shared codebases.
Key collaboration features on GitHub include:
By understanding how GitHub facilitates collaboration, you will be able to work on projects with others seamlessly. Now, let’s take a closer look at GitHub Actions and how it automates workflows.
GitHub Actions is a powerful feature that automates workflows within GitHub repositories. It enables you to set up continuous integration/continuous deployment (CI/CD) pipelines, automate testing, and deploy code. GitHub Actions can significantly enhance your development workflow by saving time and reducing the potential for human error.
If you are familiar with Git commands, integrating them with GitHub Actions enables you to automate tasks such as code linting, building, and testing every time you push a change. This automation improves efficiency and ensures that the code is always tested and ready for deployment.
Here are some key ways GitHub Actions can be used for automation:
Also Read: How to Use GitHub: A Beginner's Guide to Getting Started and Exploring Its Benefits in 2025
As software development progresses, GitHub Actions will support increasingly complex workflows, becoming an integral part of CI/CD pipelines for both small and large projects.
To wrap up, Git combined with GitHub offers unmatched advantages for efficient collaboration and version control. Understanding Git commands, repositories, branches, and workflows equips you with the tools needed to work efficiently in both solo and team-based environments.
To solidify your understanding and ensure you can apply these concepts confidently, consider practicing these Git commands and workflows. Apply them to personal projects or contribute to open-source repositories to gain hands-on experience.
For personalized guidance on mastering Git and enhancing your development career, schedule a 1:1 counseling session with upGrad experts or visit nearby upGrad offline center to further enhance your software development skills.
Take the next step today!
Git's name was coined by its creator, Linus Torvalds. "Git" is a British slang term meaning "fool" or "stupid," and Torvalds humorously named it that, as he initially thought the tool would not be successful. Git is also an acronym for "Global Information Tracker."
The first branch in Git is typically the master branch (now often renamed to main for inclusivity). It is the default branch created when a new Git repository is initialized and serves as the primary branch for stable code in many projects.
Git is widely used in software development, enabling version control across industries such as web development, data science, and mobile app development. It helps developers track changes, collaborate, and manage codebases efficiently, especially in teams and open-source projects.
To create a branch in Git, use git branch <branch-name>. To switch between branches, use git checkout <branch-name>. To merge changes from one branch to another, use git merge <branch-name>. You can delete branches using git branch -d <branch-name> after merging.
Git is a distributed version control system that tracks changes in code. Basic Git commands include git init (initialize a repository), git add (stage changes), git commit (save changes), and git push (upload changes to a remote repository).
Git is a version control system used to track changes in code, while GitHub is a cloud-based platform that hosts Git repositories. GitHub adds features like collaboration, code review, issue tracking, and CI/CD pipelines, enhancing the Git workflow for developers and teams.
Yes, Git can be used independently of GitHub. While GitHub is a popular platform for remote Git repository hosting, Git allows developers to work with local repositories without relying on any external hosting platform. You can also use alternatives like GitLab or Bitbucket.
No, Git itself doesn’t require programming knowledge. It is a tool used to manage and track changes in code. While you use Git commands to manage repositories, it doesn’t require coding expertise. However, knowledge of programming helps understand how Git is used in development workflows.
To delete a branch in Git, use git branch -d <branch-name> for a safe deletion, which ensures the branch has been merged. If you want to force delete a branch, use git branch -D <branch-name>. This removes the branch locally but does not affect the remote version.
Git for beginners involves understanding its core concepts like commits, branches, and repositories. You should start with basic commands like git init, git add, and git commit. Git helps beginners track code changes and collaborate with others effectively, even with minimal programming experience.
Git is primarily written in C, which makes it a highly efficient and fast tool for version control. Some parts of Git are also written in other languages like Perl and Shell scripting for specific functionalities, but C is the backbone of its performance and speed.
Author
Talk to our experts. We are available 7 days a week, 9 AM to 12 AM (midnight)
Indian Nationals
1800 210 2020
Foreign Nationals
+918068792934
1.The above statistics depend on various factors and individual results may vary. Past performance is no guarantee of future results.
2.The student assumes full responsibility for all expenses associated with visas, travel, & related costs. upGrad does not provide any a.