4.2 KiB
4.2 KiB
GitHub Repository Cheatsheet
Quick Reference Guide for Git and GitHub Workflows
| Command | Description | Example | Notes |
|---|---|---|---|
| Repository Setup | |||
git init |
Initialize a new local repository | git init my-project |
Creates a new .git directory |
git clone [url] |
Clone a repository from remote | git clone https://github.com/user/repo.git |
Downloads full history |
git remote add origin [url] |
Connect local repo to remote | git remote add origin https://github.com/user/repo.git |
Sets up "origin" remote |
git remote -v |
List remote connections | git remote -v |
Shows fetch/push URLs |
| Basic Workflow | |||
git status |
Check repository status | git status |
Shows modified/staged files |
git add [file] |
Stage changes | git add index.html or git add . |
Prepares files for commit |
git commit -m "[message]" |
Commit staged changes | git commit -m "Fix navigation bug" |
Creates a commit snapshot |
git pull |
Fetch and merge remote changes | git pull origin main |
Updates local branch |
git push |
Push commits to remote | git push origin main |
Uploads local commits |
| Branching | |||
git branch |
List local branches | git branch |
Current branch has asterisk |
git branch [name] |
Create new branch | git branch feature-login |
Creates branch at current commit |
git checkout [branch] |
Switch branches | git checkout feature-login |
Updates working directory |
git checkout -b [name] |
Create and checkout branch | git checkout -b feature-login |
Combines branch + checkout |
git merge [branch] |
Merge branch into current | git merge feature-login |
Integrates branch changes |
git branch -d [name] |
Delete branch | git branch -d feature-login |
Removes merged branch |
git branch -D [name] |
Force delete branch | git branch -D feature-login |
Removes unmerged branch |
| Branching Strategies | |||
| Git Flow | Main/Develop with feature branches | git checkout -b feature/login develop |
Complex but structured |
| GitHub Flow | Single main with feature branches | git checkout -b feature-login main |
Simpler, PR-based |
| Trunk-Based | Short-lived branches off main | git checkout -b fix-404-error main |
Quick integration cycles |
| Pull Request Workflow | |||
| Create PR | Via GitHub UI | Click "New pull request" on repo page | Compare branches |
| Review PR | Via GitHub UI | Add comments, request changes | Code review process |
| Merge PR | Via GitHub UI | Click "Merge pull request" | Can squash or rebase |
git fetch origin pull/ID/head:BRANCHNAME |
Get PR locally | git fetch origin pull/123/head:pr-123 |
For local PR testing |
| History & Changes | |||
git log |
View commit history | git log --oneline |
Shows commit list |
git diff |
Show unstaged changes | git diff |
Compare working to staged |
git diff --staged |
Show staged changes | git diff --staged |
Compare staged to last commit |
git reset HEAD [file] |
Unstage changes | git reset HEAD index.html |
Keeps file changes |
git checkout -- [file] |
Discard changes | git checkout -- index.html |
Loses uncommitted changes |
| Advanced Commands | |||
git stash |
Stash uncommitted changes | git stash save "WIP homepage" |
Temporarily stores changes |
git stash pop |
Apply stashed changes | git stash pop |
Reapplies and drops stash |
git rebase [branch] |
Reapply commits on branch | git rebase main |
Rewrites commit history |
git tag [name] |
Create a tag | git tag v1.0.0 |
Marks specific commit |
git cherry-pick [commit] |
Apply commit to current branch | git cherry-pick abc123 |
Takes single commit |
Common Branching Strategies
-
Git Flow
main- production-ready codedevelop- integration branch for featuresfeature/*- new featuresrelease/*- prepare for releasehotfix/*- urgent production fixes
-
GitHub Flow
main- always deployable- feature branches - all work happens here
- pull requests - for code review and discussion
- deploy after merge to main
-
Trunk-Based Development
main- primary branch- short-lived feature branches
- frequent integration to main
- feature flags for incomplete work