Add a comprehensive Git cheatsheet
Provides a detailed reference for Git commands including repository setup, basic operations, branching, stashing, history review, merging, rebasing, and configuration. Useful for quick lookup and as a learning resource for users.
This commit is contained in:
75
.gitignore
vendored
Normal file
75
.gitignore
vendored
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# Ignore IntelliJ IDEA project-specific files
|
||||||
|
.idea/
|
||||||
|
*.iml
|
||||||
|
*.iws
|
||||||
|
|
||||||
|
# Ignore OS generated files
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Ignore temporary files
|
||||||
|
*.tmp
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*.bak
|
||||||
|
*.orig
|
||||||
|
|
||||||
|
# Ignore hidden system files
|
||||||
|
.*.s[a-v][a-z]
|
||||||
|
.*un~
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Ignore logs and runtime files
|
||||||
|
*.log
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.gz
|
||||||
|
|
||||||
|
# Ignore clutter generated by markdown previews/editors
|
||||||
|
*.markdown-tmp
|
||||||
|
.markdown-cache/
|
||||||
|
|
||||||
|
# Ignore common backup files
|
||||||
|
*.~*
|
||||||
|
*.save
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Ignore unnecessary files for compressed formats (if extracting archives is needed)
|
||||||
|
*.zip
|
||||||
|
*.tar
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# Ignore image editor temp files (if images are modified)
|
||||||
|
*.xcf~
|
||||||
|
*.psd~
|
||||||
|
|
||||||
|
# Ignore binary thumbnails or preview files (if editors generate them)
|
||||||
|
*.thumbs
|
||||||
|
|
||||||
|
# Ignore files specific to versioning history outside Git
|
||||||
|
*.orig
|
||||||
|
|
||||||
|
# Include images, documents, and markdown explicitly (so they're not accidentally excluded)
|
||||||
|
!*.md
|
||||||
|
!*.markdown
|
||||||
|
!*.png
|
||||||
|
!*.jpg
|
||||||
|
!*.jpeg
|
||||||
|
!*.gif
|
||||||
|
!*.pdf
|
||||||
|
!*.doc
|
||||||
|
!*.docx
|
||||||
|
!*.ppt
|
||||||
|
!*.pptx
|
||||||
|
!*.xls
|
||||||
|
!*.xlsx
|
||||||
|
!*.odt
|
||||||
|
|
||||||
|
# Ensure backup or runtime-related folders are ignored (user-configurable)
|
||||||
|
backup/
|
||||||
|
temp/
|
||||||
|
generated/
|
||||||
157
cheat-sheets/git.md
Normal file
157
cheat-sheets/git.md
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
# Git Cheatsheet
|
||||||
|
## Repository Setup & Remote Operations
|
||||||
|
```bash
|
||||||
|
# Clone a repository
|
||||||
|
git clone <repository-url>
|
||||||
|
|
||||||
|
# Add a remote
|
||||||
|
git remote add <name> <url>
|
||||||
|
git remote add origin git@github.com:user/repo.git
|
||||||
|
|
||||||
|
# Change remote URL
|
||||||
|
git remote set-url origin <new-url>
|
||||||
|
|
||||||
|
# View remotes
|
||||||
|
git remote -v
|
||||||
|
```
|
||||||
|
|
||||||
|
## Basic Commands
|
||||||
|
```bash
|
||||||
|
# Check status
|
||||||
|
git status
|
||||||
|
|
||||||
|
# Stage files
|
||||||
|
git add <file> # Stage specific file
|
||||||
|
git add . # Stage all changes
|
||||||
|
git add -p # Interactively stage changes
|
||||||
|
|
||||||
|
# Commit
|
||||||
|
git commit -m "message"
|
||||||
|
git commit --amend # Modify last commit
|
||||||
|
|
||||||
|
# Push/Pull
|
||||||
|
git push origin <branch>
|
||||||
|
git pull origin <branch>
|
||||||
|
git pull --rebase origin <branch> # Pull with rebase
|
||||||
|
```
|
||||||
|
|
||||||
|
## Branch Operations
|
||||||
|
```bash
|
||||||
|
# List branches
|
||||||
|
git branch # Local branches
|
||||||
|
git branch -r # Remote branches
|
||||||
|
git branch -a # All branches
|
||||||
|
|
||||||
|
# Create branch
|
||||||
|
git branch <branch-name>
|
||||||
|
git checkout -b <branch-name> # Create and switch
|
||||||
|
|
||||||
|
# Checkout remote branch (create if not exists)
|
||||||
|
git checkout -b <local-branch> origin/<remote-branch>
|
||||||
|
git checkout --track origin/<remote-branch> # Shorter version
|
||||||
|
|
||||||
|
# Switch branch
|
||||||
|
git checkout <branch-name>
|
||||||
|
|
||||||
|
# Delete branch
|
||||||
|
git branch -d <branch-name> # Local branch
|
||||||
|
git push origin --delete <branch-name> # Remote branch
|
||||||
|
```
|
||||||
|
|
||||||
|
## Working with Changes
|
||||||
|
```bash
|
||||||
|
# View changes
|
||||||
|
git diff # Unstaged changes
|
||||||
|
git diff --staged # Staged changes
|
||||||
|
git diff <branch1> <branch2> # Between branches
|
||||||
|
|
||||||
|
# Discard changes
|
||||||
|
git checkout -- <file> # Discard file changes
|
||||||
|
git restore <file> # Modern version
|
||||||
|
git reset --hard HEAD # Discard all changes
|
||||||
|
|
||||||
|
# Stash changes
|
||||||
|
git stash
|
||||||
|
git stash save "message"
|
||||||
|
git stash list
|
||||||
|
git stash pop # Apply and remove
|
||||||
|
git stash apply # Apply and keep
|
||||||
|
```
|
||||||
|
|
||||||
|
## History and Logs
|
||||||
|
```bash
|
||||||
|
# View history
|
||||||
|
git log
|
||||||
|
git log --oneline # Compact view
|
||||||
|
git log --graph # With branch graph
|
||||||
|
git blame <file> # File history
|
||||||
|
|
||||||
|
# Search history
|
||||||
|
git log --grep="keyword" # Search commits
|
||||||
|
git log -S"code" # Search code changes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Merge and Rebase
|
||||||
|
```bash
|
||||||
|
# Merge
|
||||||
|
git merge <branch>
|
||||||
|
git merge --abort # Cancel merge
|
||||||
|
|
||||||
|
# Rebase
|
||||||
|
git rebase <branch>
|
||||||
|
git rebase -i HEAD~3 # Interactive rebase last 3 commits
|
||||||
|
git rebase --abort # Cancel rebase
|
||||||
|
```
|
||||||
|
|
||||||
|
## Credential Caching
|
||||||
|
```bash
|
||||||
|
# Cache credentials temporarily
|
||||||
|
git config --global credential.helper cache # Default 15 min
|
||||||
|
git config --global credential.helper 'cache --timeout=3600' # Custom timeout (seconds)
|
||||||
|
|
||||||
|
# Store credentials indefinitely
|
||||||
|
git config --global credential.helper store # Stored in plaintext
|
||||||
|
git config --global credential.helper 'manager-core' # Windows credential manager
|
||||||
|
git config --global credential.helper osxkeychain # macOS keychain
|
||||||
|
|
||||||
|
# For GitHub specifically - Using Personal Access Token
|
||||||
|
git config --global credential.helper store # Then use token as password
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
```bash
|
||||||
|
# User setup
|
||||||
|
git config --global user.name "Your Name"
|
||||||
|
git config --global user.email "your.email@example.com"
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
git config --global alias.co checkout
|
||||||
|
git config --global alias.br branch
|
||||||
|
git config --global alias.st status
|
||||||
|
git config --global alias.unstage 'reset HEAD --'
|
||||||
|
|
||||||
|
# View config
|
||||||
|
git config --list
|
||||||
|
```
|
||||||
|
|
||||||
|
## Advanced/Useful Commands
|
||||||
|
```bash
|
||||||
|
# Cherry-pick commits
|
||||||
|
git cherry-pick <commit-hash>
|
||||||
|
|
||||||
|
# Clean untracked files
|
||||||
|
git clean -n # Dry run
|
||||||
|
git clean -fd # Force delete
|
||||||
|
|
||||||
|
# Find lost commits
|
||||||
|
git reflog
|
||||||
|
|
||||||
|
# Save work in progress
|
||||||
|
git commit -m "WIP" # Quick save
|
||||||
|
git reset HEAD~ # Undo WIP commit
|
||||||
|
|
||||||
|
# Update fork with upstream
|
||||||
|
git remote add upstream <original-repo-url>
|
||||||
|
git fetch upstream
|
||||||
|
git rebase upstream/main
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user