Ultimate Git Cheat Sheet: A Quick Reference Guide for Git Commands and Workflows
Tags: webdev, programming, tutorial, git
Published: 2023-08-24 13:24:51

## What is Git?

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lw0cukbeyp8s9qvdp8ig.jpeg)
**Git** is a distributed _**version control system (VCS)**_ used in software development to track changes in source code. It enables multiple developers to collaborate on projects efficiently by maintaining a history of code changes, managing different versions of the codebase, and facilitating seamless merging of contributions. With features like branching, merging, and remote repositories, Git empowers teams to work concurrently on projects, keep track of changes, and ensure the integrity of the codebase throughout its lifecycle. It's a fundamental tool for modern software development, fostering collaboration, code management, and version control.



## Key features of Git include:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nofpm50hmot5a2a365xx.jpeg)
**Distributed System:** Git is a distributed VCS, meaning that each developer has their own local copy of the entire project repository, including its history. This allows developers to work offline and later sync their changes with others.

**Branching and Merging:** Git allows developers to create multiple branches to work on different features or fixes independently. These branches can be merged back into the main codebase when the work is complete.

**History Tracking:** Git tracks every change made to the codebase, including who made the change and when. This history is maintained throughout the life of the project.

**Collaboration:** Git enables multiple developers to work on the same project simultaneously without interfering with each other's work. Changes can be merged together to create a unified codebase.

**Versioning:** Git provides a way to manage different versions of a project's code. Developers can easily switch between different versions of the codebase.

**Staging Area:** Git uses a staging area to allow developers to choose which changes to include in the next commit. This provides fine-grained control over the commit process.

**Efficient Data Storage:** Git uses a clever algorithm to store changes efficiently. This minimizes the amount of disk space required and ensures that each change is tracked separately.

**Remote Repositories:** Git allows developers to work with remote repositories hosted on platforms like GitHub, GitLab, or Bitbucket. Changes can be pushed to and pulled from these remote repositories to collaborate with others.

**Merge Conflict Resolution:** When multiple developers make conflicting changes to the same part of the code, Git helps resolve these conflicts by highlighting the differences and allowing developers to choose the correct version.

**Open Source and Community:** Git is an open-source project with a strong community of contributors. This has led to a wealth of resources, tutorials, and tools available for learning and using Git effectively.



## Check out this cheat sheet
for quick reference on all your Git commands. Whether you're a beginner or an experienced coder, these tips will help streamline your version control workflow. 

From commits to branches, navigating repositories just got a whole lot easier. 

*Setup and Configuration:*

   `git config --global user.name "Your Name"`
   `git config --global user.email "youremail@example.com"`

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hw9iqhrd8uea186slxii.jpeg)

*Creating Repositories:*
  
 `git init`: Initialize a new repository

 `git clone <repository URL>`: Clone a remote repository to your local machine


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qniuqbfyljhrp8xud3gs.jpeg)

*Basic Commands:*

   `git add <file>`: Add a file to the staging area

   `git commit -m "Commit message"`: Commit changes with a message

   `git status`: View the status of files in the working directory

 `git diff`: Show changes between working directory and last commit


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ea9cg8d62wcvnhfn07ig.jpeg)

*Branches:*

 `git branch`: List all branches in the repository

 `git branch <branch name>`: Create a new branch

 `git checkout <branch name>`: Switch to a different branch

`git merge <branch name>`: Merge changes from a branch into the current branch

 `git pull`: Fetch and merge changes from a remote repository

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/npmdr770017afokq3zoz.jpeg)

*Remote Repositories:*

 `git remote -v`: List remote repositories

 `git remote add <name> <repository URL>`: Add a new remote repository

 `git push <remote> <branch>`: Push changes to a remote repository

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2wj07twod0jqmqu7upa8.jpeg)

*Undoing Changes:*

 `git reset <file>`: Unstage changes in a file

`git checkout -- <file>`: Discard changes in a file

`git revert <commit>`: Create a new commit that undoes a previous commit

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fgssi92c0ewrfz8h4mi1.jpeg)

 *History and Logs:*

 `git log`: Show commit history

 `git log --oneline`: Compact commit history

 `git log --graph`: Show commit history with a graphical representation


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/83x582ui4vw2ypnr9d2c.jpeg)

*Tagging:*

 `git tag <tag name>`: Create a lightweight tag at the current commit

 `git tag -a <tag name> -m "Tag message"`: Create an annotated tag with a message


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o4k3t0oda9edqkmfm59b.jpeg)

*Collaboration:*

 `git fetch`: Download objects and refs from another repository

 `git push <remote> --tags`: Push tags to a remote repository


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uxne12tht84flnj5d9g3.jpeg)