Mastering Git: Cheatsheets, Commands, and Interview Prep
Tags: git, github, githubactions, tutorial
Published: 2024-04-27 06:39:55



_[GitHub](https://github.com/)_ has become an essential tool for developers worldwide, enabling seamless collaboration, version control, and code management. Whether you're a seasoned developer or just starting, mastering GitHub can give you a significant edge in your career. In this comprehensive blog post, we'll explore GitHub cheatsheets, command descriptions, and provide a curated list of interview questions to help you ace your next GitHub-related interview.


## Git vs GitHub

**Q. ARE THEY SAME?**

> A Big NO!
> Git and GitHub are different tools with distinct purposes, and it's important not to confuse them.

**Git** is a **distributed version control system** that manages and tracks changes in source code during software development. It allows developers to:

- Work on the same codebase simultaneously
- Track changes and revert to previous versions
- Collaborate effectively with team members

**GitHub** is a **web-based hosting service for Git repositories**. It provides:

- A central repository for storing Git repositories
- A user-friendly interface for managing repositories
- Tools for collaboration, such as pull requests and issue tracking

In essence, **Git** is the **version control system**, while **GitHub** is the **platform for hosting and collaborating on Git repositories**.

```
Git (Version Control System)
- Manages code changes
- Distributed version control

GitHub (Hosting and Collaboration)
- Hosts Git repositories
- Facilitates collaboration
- Pull requests, issue tracking, etc.
```

Using Git and GitHub together streamlines collaboration, version control, backup, and project management for software development teams.

## Git Cheatsheets

Cheatsheets are handy resources that provide a quick reference to commonly used commands and workflows. Here are some essential GitHub cheatsheets to bookmark:

1. **[Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf)**: This official cheatsheet covers basic Git commands, setup, and configuration.
2. **[GitHub Flow Cheat Sheet](https://github.com/MarcoBehler/github-flow-cheatsheet)**: A visual guide to the GitHub Flow, a lightweight, branch-based workflow.
3. **[Git Cheatsheet from Tower](https://www.git-tower.com/learn/cheat-sheets/git)**: A comprehensive cheatsheet covering various Git commands and scenarios.

## Git Command Descriptions

Understanding GitHub commands is crucial for efficient version control and collaboration. Here's a breakdown of some essential commands:

| Command | Description |
| --- | --- |
| `git init` | Initializes a new Git repository in the current directory. |
| `git clone` | Creates a local copy of a remote repository. |
| `git add` | Stages changes for the next commit. |
| `git commit` | Records staged changes to the repository. |
| `git push` | Uploads local commits to a remote repository. |
| `git pull` | Downloads commits, files, and updates from a remote repository. |
| `git branch` | Lists, creates, or deletes branches. |
| `git checkout` | Switches between branches or restores files from a specific commit. |
| `git merge` | Combines the changes from one branch into another. |
| `git log` | Shows the commit history for the current branch. |
| `git stash` | Temporarily stores changes that you don't want to commit immediately. |
| `git stash pop` | Applies the most recently stashed changes and removes them from the stash. |
| `git reset` | Undoes changes to the staging area or committed changes. |
| `git revert` | Reverts a specific commit by creating a new commit that undoes the changes introduced by the specified commit. |
| `git diff` | Shows the differences between commits, branches, or your working directory and the staging area. |
| `git status` | Displays the current state of your working directory and staging area, showing which files have been modified, added, or removed. |
| `git remote` | Manages the remote repository connections. |
| `git fetch` | Downloads objects and references from a remote repository without merging them into your local repository. |
| `git rebase` | Applies commits from one branch onto another branch, rewriting the commit history in the process. |
| `git tag` | Creates, lists, deletes, or verifies tags, which are references used to mark specific points in the commit history. |
| `git blame` | Shows who made each line change in a file and when the changes were made. |
| `git cherry-pick` | Applies specific commits from one branch to another branch. |
| `git clean` | Removes untracked files from the working directory. |
| `git reflog` | Shows a log of references and the commit history, providing a way to recover lost commits or branches. |

## Git & GitHub Interview Questions

Preparing for GitHub-related interviews can be daunting, but practicing with relevant questions can boost your confidence and preparedness. Here are some common GitHub interview questions:

1.**What is Git, and how is it different from GitHub?**

   

> Git is a distributed version control system that allows you to track changes in your code over time. It is a tool for managing and coordinating changes across multiple developers working on the same codebase. GitHub, on the other hand, is a web-based hosting service for Git repositories, providing a platform for collaboration, code review, issue tracking, and project management.

2.**Explain the GitHub Flow workflow.**

> The GitHub Flow is a lightweight, branch-based workflow that integrates seamlessly with GitHub. It involves creating a new branch for each feature or bug fix, making commits to that branch, opening a pull request for code review, and merging the branch into the main branch after the review and approval process.

3.**How do you resolve merge conflicts in GitHub?**

> Merge conflicts occur when two or more branches have made changes to the same lines of code. To resolve a merge conflict, you need to open the conflicted file(s) in a text editor, locate the conflict markers (`<<<<<<<`, `=======`, and `>>>>>>>`), and manually edit the file to keep the desired changes. After resolving the conflicts, you can add the updated files and commit the changes.

4.**What is a pull request, and how do you create one?**

   

> A pull request is a way to propose and collaborate on changes to a repository. To create a pull request, you first push your changes to a new branch in your forked repository, then navigate to the original repository on GitHub and create a new pull request. This allows other contributors to review your changes, provide feedback, and ultimately merge your branch into the main codebase.

5.**How do you revert a commit in GitHub?**

   

> To revert a commit in GitHub, you can use the `git revert` command followed by the commit hash you want to revert. This creates a new commit that undoes the changes introduced by the specified commit. Alternatively, you can use the GitHub interface to revert a commit by navigating to the commit, clicking the "Revert" button, and creating a new pull request with the reverted changes.

6.**What are branches in Git, and how do you create and manage them?**

  

>  Branches in Git represent independent lines of development. They allow you to work on new features, bug fixes, or experiments without affecting the main codebase. To create a new branch, you can use the `git branch <branch-name>` command, and then switch to that branch with `git checkout <branch-name>`. Managing branches involves merging changes back into the main branch, deleting obsolete branches, and maintaining a clear branching strategy.

7.**How do you fork a repository on GitHub?**

   

> Forking a repository on GitHub creates a personal copy of the original repository under your GitHub account. This allows you to freely experiment with changes without affecting the original project. To fork a repository, navigate to the repository on GitHub, click the "Fork" button in the top-right corner, and choose the account where you want to create the fork.

8.**What is the difference between `git pull` and `git fetch`?**

   

> `git pull` is a combination of `git fetch` and `git merge`. It fetches the latest changes from the remote repository and automatically merges them into your local branch. `git fetch`, on the other hand, only downloads the latest changes from the remote repository without merging them. This allows you to review the changes before merging them into your local branch.

9.**How do you squash multiple commits into a single commit in GitHub?**

  

>  To squash multiple commits into a single commit in GitHub, you can use the interactive rebase feature. First, you need to run `git rebase -i HEAD~n`, where `n` is the number of commits you want to squash. In the interactive rebase editor, change the word "pick" to "squash" for the commits you want to combine. After saving and exiting the editor, you'll be prompted to provide a new commit message for the squashed commit.

10.**What is a GitHub Action, and how can it be used in a project?**

   

>  GitHub Actions is a continuous integration and continuous deployment (CI/CD) platform provided by GitHub. It allows you to automate your software development workflows, such as building, testing, and deploying your code. You can define custom workflows using YAML files in your repository, triggered by events like pushes, pull requests, or scheduled tasks. GitHub Actions can be used for tasks like running tests, building and deploying applications, managing releases, and more.

Remember, mastering Git & GitHub is an ongoing process, and regular practice and exposure to real-world scenarios are key to becoming proficient. Stay curious, explore additional resources, and don't hesitate to reach out to the GitHub community for guidance and support.

Happy coding and collaborating!
[Nirmalya Mondal](https://nirmalyax.dev)