# Git Terminology Table
[](https://mermaid.live/edit#pako:eNpVz70OwjAMBOBXsTwVCcTeAQnoyNQOLF6sxLQRzY9SZ0CIdyeAOjD5hk-n8xNNtIItjpnTBJeewrG5xnx3YYTOZTEa82MDux2MToGtrfEAp2ZQHj_mmIU3FE6rMNH7ej7o3Fyi4Rl6SXFx3x4K5xXeRM20T2Wev7hrevFR5V93q05lmX6lFHCLXrJnZ-vuJwUAQp3EC2Fbo-V8J6Twqo6LxuERDLaai2yxJMsqneP6rsf2xvMirzediFSy)
| Term | Description |
| ------------ |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Repository | A Git repository (or repo) is a storage location where your project files and the complete version history of those files are stored. It consists of a hidden `.git` folder that contains configuration files and the version history. |
| Commit | A commit is a snapshot of the changes made to your project. It saves the current state of your project files and includes metadata like the author, timestamp, and a unique identifier called a hash. |
| Stash | Stashes are temporary storage areas for changes that you don't want to commit yet. You can use them to save your work-in-progress changes and switch branches without losing your current changes. |
| Branch | A branch is a parallel line of development in a Git repository. It allows you to work on different features or bug fixes without affecting the main codebase. The default branch is usually called "main" or "master". |
| Checkout | Checking out in Git means switching your working directory to a specific commit, branch, or tag. It allows you to navigate through the version history or switch between branches. |
| Merge | Merging is the process of combining changes from one branch into another. Git will try to automatically resolve conflicts between branches, but sometimes manual intervention is needed to resolve conflicts. |
| Rebase | Rebasing is an alternative to merging that allows you to apply a series of commits from one branch onto another. It creates a linear history by replaying the changes on top of the target branch. |
| Clone | Cloning is the process of creating a local copy of a remote Git repository. It downloads the complete version history, branches, and configuration files to your local machine. |
| Fetch | Fetching in Git refers to downloading updates from a remote repository. It downloads new commits, branches, and tags without merging or modifying your local branches. |
| Pull | A pull operation is a combination of fetch and merge. It downloads updates from a remote repository and merges them into your local branch, updating your working directory. |
| Push | Pushing is the process of uploading your local commits to a remote repository. It updates the remote branch with your new commits, allowing others to access the latest changes. |
| Remote | A remote is a reference to another copy of the Git repository, usually on a remote server. Remotes are used for collaboration and allow you to fetch, pull, and push changes between repositories. |
| Fork | A fork is a copy of a repository that belongs to another user or organization. Forking allows you to make changes to a project without affecting the original repository, and you can later submit a pull request to contribute your changes. |
| Pull Request | A pull request (PR) is a request to merge your changes from a fork or branch into the target branch of another repository. It allows for code review and collaboration before the changes are merged. |