Loading...
Loading...
Manage Git workflows including commits, branches, merges, and collaboration. Use when working with Git repositories, creating commits, managing branches, or resolving conflicts.
npx skill4agent add supercent-io/skills-template git-workflow# Create and switch to new branch
git checkout -b feature/feature-name
# Or create from specific commit
git checkout -b feature/feature-name <commit-hash>feature/descriptionbugfix/descriptionhotfix/descriptionrefactor/descriptiondocs/description# Stage specific files
git add file1.py file2.js
# Stage all changes
git add .
# Stage with patch mode (interactive)
git add -p# See what's changed
git status
# See detailed diff
git diff
# See staged diff
git diff --stagedgit commit -m "type(scope): subject
Detailed description of what changed and why.
- Change 1
- Change 2
Fixes #123"featfixdocsstylerefactortestchoregit commit -m "feat(auth): add JWT authentication
- Implement JWT token generation
- Add token validation middleware
- Update user model with refresh token
Closes #42"# Push to remote
git push origin feature/feature-name
# Force push (use with caution!)
git push origin feature/feature-name --force-with-lease
# Set upstream and push
git push -u origin feature/feature-name# Pull latest changes
git pull origin main
# Pull with rebase (cleaner history)
git pull --rebase origin main
# Fetch without merging
git fetch origin# Switch to main branch
git checkout main
# Merge feature
git merge feature/feature-name
# Merge with no fast-forward (creates merge commit)
git merge --no-ff feature/feature-name# On feature branch
git checkout feature/feature-name
# Rebase onto main
git rebase main
# Continue after resolving conflicts
git rebase --continue
# Abort rebase
git rebase --abort# See conflicted files
git status
# Open files and resolve conflicts
# Look for markers:
<<<<<<< HEAD
Current branch code
=======
Incoming branch code
>>>>>>> feature-branch
# After resolving
git add <resolved-files>
git commit # For merge
git rebase --continue # For rebase# Delete local branch
git branch -d feature/feature-name
# Force delete
git branch -D feature/feature-name
# Delete remote branch
git push origin --delete feature/feature-name
# Clean up stale references
git fetch --prune# Rebase last 3 commits
git rebase -i HEAD~3
# Commands in editor:
# pick: use commit
# reword: change commit message
# edit: amend commit
# squash: combine with previous
# fixup: like squash, discard message
# drop: remove commit# Stash current changes
git stash
# Stash with message
git stash save "Work in progress on feature X"
# List stashes
git stash list
# Apply most recent stash
git stash apply
# Apply and remove stash
git stash pop
# Apply specific stash
git stash apply stash@{2}
# Drop stash
git stash drop stash@{0}
# Clear all stashes
git stash clear# Apply specific commit
git cherry-pick <commit-hash>
# Cherry-pick multiple commits
git cherry-pick <hash1> <hash2> <hash3>
# Cherry-pick without committing
git cherry-pick -n <commit-hash># Start bisect
git bisect start
# Mark current as bad
git bisect bad
# Mark known good commit
git bisect good <commit-hash>
# Git will checkout commits to test
# Test and mark each:
git bisect good # if works
git bisect bad # if broken
# When found, reset
git bisect reset# 1. Create feature branch
git checkout main
git pull origin main
git checkout -b feature/user-profile
# 2. Make changes
# ... edit files ...
# 3. Commit changes
git add src/profile/
git commit -m "feat(profile): add user profile page
- Create profile component
- Add profile API endpoints
- Add profile tests"
# 4. Keep up to date with main
git fetch origin
git rebase origin/main
# 5. Push to remote
git push origin feature/user-profile
# 6. Create Pull Request on GitHub/GitLab
# ... after review and approval ...
# 7. Merge and cleanup
git checkout main
git pull origin main
git branch -d feature/user-profile# 1. Create hotfix branch from production
git checkout main
git pull origin main
git checkout -b hotfix/critical-bug
# 2. Fix the bug
# ... make fixes ...
# 3. Commit
git add .
git commit -m "hotfix: fix critical login bug
Fixes authentication bypass vulnerability
Fixes #999"
# 4. Push and merge immediately
git push origin hotfix/critical-bug
# After merge:
# 5. Cleanup
git checkout main
git pull origin main
git branch -d hotfix/critical-bug# 1. Update main branch
git checkout main
git pull origin main
# 2. Create feature branch
git checkout -b feature/new-feature
# 3. Regular updates from main
git fetch origin
git rebase origin/main
# 4. Push your work
git push origin feature/new-feature
# 5. If teammate made changes to your branch
git pull origin feature/new-feature --rebase
# 6. Resolve any conflicts
# ... resolve conflicts ...
git add .
git rebase --continue
# 7. Force push after rebase
git push origin feature/new-feature --force-with-leasegit reset --soft HEAD~1git reset --hard HEAD~1# Change commit message
git commit --amend -m "New message"
# Add files to last commit
git add forgotten-file.txt
git commit --amend --no-edit# Detailed log
git log
# One line per commit
git log --oneline
# With graph
git log --oneline --graph --all
# Last 5 commits
git log -5
# Commits by author
git log --author="John"
# Commits in date range
git log --since="2 weeks ago"# Search commit messages
git log --grep="keyword"
# Search code changes
git log -S "function_name"
# Show file history
git log --follow -- path/to/file# 1. Create correct branch from current state
git branch feature/correct-branch
# 2. Reset current branch
git reset --hard HEAD~1
# 3. Switch to correct branch
git checkout feature/correct-branch# If not pushed yet
git reset --hard HEAD~1
# If already pushed (creates revert commit)
git revert -m 1 <merge-commit-hash># Find lost commit
git reflog
# Create branch from lost commit
git checkout -b recovered-branch <commit-hash># Add upstream remote
git remote add upstream https://github.com/original/repo.git
# Fetch upstream
git fetch upstream
# Merge upstream main
git checkout main
git merge upstream/main
# Push to your fork
git push origin maingit config --global user.name "Your Name"
git config --global user.email "your.email@example.com"git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.lg 'log --oneline --graph --all'git config --global core.editor "code --wait" # VS Code
git config --global core.editor "vim" # Vim