Git Cheatsheet ✨🗨️
Tags: git, github, softwaredevelopment, development
Published: 2024-03-19 08:27:30

Git is a version control system that tracks changes to files over time. It allows multiple people to collaborate on projects by managing their contributions and merging them seamlessly. Git stores these changes in a repository, enabling users to revert to previous states or branch out for experimentation.


## Setup 
Configuring user information used across all local repositories

`git config --global user.name “[firstname lastname]”`
set a name that is identifiable for credit when reviewing the version history
`git config --global user.email “[valid-email]”`
set an email address that will be associated with each history marker
`git config --global color.ui auto`
set automatic command line coloring for Git for easy reviewing.


## Setup and Init
Configuring user information, initializing and cloning repositories

`git init`
initialize an existing directory as a Git repository
`git clone [url]`
retrieve an entire repository from a hosted location via URL


## Share and Update
Retrieving updates from another repository and updating local repos

`git remote add [alias] [url]`
add a git URL as an alias
`git fetch [alias]`
fetch down all the branches from that Git remote
`git merge [alias]/[branch]`
merge a remote branch into your current branch to bring it up to date
`git push [alias] [branch]`
Transmit local branch commits to the remote repository branch
`git pull`
fetch and merge any commits from the tracking remote branch


## Stage and Snapshot
Working with snapshots and the Git staging area

`git status`
show modified files in the working directory, stage for your next commit
`git add [file]`
add a file as it looks now to your next commit (stage)
`git reset [file]`
unstaged a file while retaining the changes in the working directory
`git diff`
diff of what is changed but not staged
`git diff --staged`
diff of what is staged but not yet committed
`git commit -m “[descriptive message]”`
commit your staged content as a new commit snapshot


## Branch and Merge
Isolating work in branches, changing context, and integrating changes

`git branch`
list your branches. a * will appear next to the currently active branch
`git branch [branch-name]`
create a new branch at the current commit
`git checkout`
switch to another branch and check it out in your working directory
`git merge [branch]`
merge the specified branch’s history into the current one
`git log`
show all commits in the current branch’s history


## Inspect and Compare
Examining logs, diffs, and object information

`git log`
show the commit history for the currently active branch
`git log branchB..branchA`
show the commits on branchA that are not on branchB
`git log --follow [file]`
show the commits that changed file, even across renames
`git diff branchB...branchA`
show the diff between what is in branchA and what is not in branchB
`git show [SHA]`
show any object in Git in a human-readable format


## Rewrite History
Rewriting branches, updating commits, and clearing history

`git rebase [branch]`
apply any commits of the current branch ahead of the specified one
`git reset --hard [commit]`
clear staging area, rewrite the working tree from the specified commit


## Redo commits
Erase mistakes and craft replacement history

`git reset [commit]`
Undoes all commits after [commit], preserving changes locally
`git reset --hard [commit]`
Discards all history and changes back to the specified commit

---

### <u> Reference: </u>

- https://training.github.com/downloads/github-git-cheat-sheet.pdf

- https://education.github.com/git-cheat-sheet-education.pdf

---