Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Essential Git commands and workflows for version control, branching, and collaboration.
.claude/skills/git-essentials/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | — | — |
| case-11 | ✗→✗ | = Same ✗ | — | — |
| case-12 | ✗→✗ | = Same ✗ | — | — |
| case-02 | ✗→✗ | = Same ✗ | — | — |
| case-03 | ✗→✗ | = Same ✗ | — | — |
Essential Git commands for version control and collaboration.
bash# Configure user git config --global user.name "Your Name" git config --global user.email "your@email.com" # Initialize repository git init # Clone repository git clone https://github.com/user/repo.git git clone https://github.com/user/repo.git custom-name
bash# Check status git status # Add files to staging git add file.txt git add . git add -A # All changes including deletions # Commit changes git commit -m "Commit message" # Add and commit in one step git commit -am "Message" # Amend last commit git commit --amend -m "New message" git commit --amend --no-edit # Keep message
bash# Show unstaged changes git diff # Show staged changes git diff --staged # Show changes in specific file git diff file.txt # Show changes between commits git diff commit1 commit2
bash# List branches git branch git branch -a # Include remote branches # Create branch git branch feature-name # Switch branch git checkout feature-name git switch feature-name # Modern alternative # Create and switch git checkout -b feature-name git switch -c feature-name # Delete branch git branch -d branch-name git branch -D branch-name # Force delete # Rename branch git branch -m old-name new-name
bash# Merge branch into current git merge feature-name # Merge with no fast-forward git merge --no-ff feature-name # Abort merge git merge --abort # Show merge conflicts git diff --name-only --diff-filter=U
bash# List remotes git remote -v # Add remote git remote add origin https://github.com/user/repo.git # Change remote URL git remote set-url origin https://github.com/user/new-repo.git # Remove remote git remote remove origin
bash# Fetch from remote git fetch origin # Pull changes (fetch + merge) git pull # Pull with rebase git pull --rebase # Push changes git push # Push new branch git push -u origin branch-name # Force push (careful!) git push --force-with-lease
bash# Show commit history git log # One line per commit git log --oneline # With graph git log --graph --oneline --all # Last N commits git log -5 # Commits by author git log --author="Name" # Commits in date range git log --since="2 weeks ago" git log --until="2024-01-01" # File history git log -- file.txt
bash# Search commit messages git log --grep="bug fix" # Search code changes git log -S "function_name" # Show who changed each line git blame file.txt # Find commit that introduced bug git bisect start git bisect bad git bisect good commit-hash
bash# Discard changes in file git restore file.txt git checkout -- file.txt # Old way # Discard all changes git restore .
bash# Unstage file git restore --staged file.txt git reset HEAD file.txt # Old way # Unstage all git reset
bash# Undo last commit (keep changes) git reset --soft HEAD~1 # Undo last commit (discard changes) git reset --hard HEAD~1 # Revert commit (create new commit) git revert commit-hash # Reset to specific commit git reset --hard commit-hash
bash# Stash changes git stash # Stash with message git stash save "Work in progress" # List stashes git stash list # Apply latest stash git stash apply # Apply and remove stash git stash pop # Apply specific stash git stash apply stash@{2} # Delete stash git stash drop stash@{0} # Clear all stashes git stash clear
bash# Rebase current branch git rebase main # Interactive rebase (last 3 commits) git rebase -i HEAD~3 # Continue after resolving conflicts git rebase --continue # Skip current commit git rebase --skip # Abort rebase git rebase --abort
bash# List tags git tag # Create lightweight tag git tag v1.0.0 # Create annotated tag git tag -a v1.0.0 -m "Version 1.0.0" # Tag specific commit git tag v1.0.0 commit-hash # Push tag git push origin v1.0.0 # Push all tags git push --tags # Delete tag git tag -d v1.0.0 git push origin --delete v1.0.0
bash# Apply specific commit git cherry-pick commit-hash # Cherry-pick without committing git cherry-pick -n commit-hash
bash# Add submodule git submodule add https://github.com/user/repo.git path/ # Initialize submodules git submodule init # Update submodules git submodule update # Clone with submodules git clone --recursive https://github.com/user/repo.git
bash# Preview files to be deleted git clean -n # Delete untracked files git clean -f # Delete untracked files and directories git clean -fd # Include ignored files git clean -fdx
Feature branch workflow:
bashgit checkout -b feature/new-feature # Make changes git add . git commit -m "Add new feature" git push -u origin feature/new-feature # Create PR, then after merge: git checkout main git pull git branch -d feature/new-feature
Hotfix workflow:
bashgit checkout main git pull git checkout -b hotfix/critical-bug # Fix bug git commit -am "Fix critical bug" git push -u origin hotfix/critical-bug # After merge: git checkout main && git pull
Syncing fork:
bashgit remote add upstream https://github.com/original/repo.git git fetch upstream git checkout main git merge upstream/main git push origin main
Add to ~/.gitconfig:
ini[alias] st = status co = checkout br = branch ci = commit unstage = reset HEAD -- last = log -1 HEAD visual = log --graph --oneline --all amend = commit --amend --no-edit
.gitignore for files to exclude--force-with-lease instead of --forceUndo accidental commit:
bashgit reset --soft HEAD~1
Recover deleted branch:
bashgit reflog git checkout -b branch-name <commit-hash>
Fix wrong commit message:
bashgit commit --amend -m "Correct message"
Resolve merge conflicts:
bash# Edit files to resolve conflicts git add resolved-files git commit # Or git merge --continue
Official docs: https://git-scm.com/doc Pro Git book: https://git-scm.com/book Visual Git guide: https://marklodato.github.io/visual-git-guide/
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +5 percentage points is the difference between those two pass rates over the 22 comparable cases.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.