git-workflow

When to use this skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "git-workflow" with this command: npx skills add supercent-io/skills-template/supercent-io-skills-template-git-workflow

Git Workflow

When to use this skill

  • Creating meaningful commit messages

  • Managing branches

  • Merging code

  • Resolving conflicts

  • Collaborating with team

  • Git best practices

Instructions

Step 1: Branch management

Create feature branch:

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>

Naming conventions:

  • feature/description : New features

  • bugfix/description : Bug fixes

  • hotfix/description : Urgent fixes

  • refactor/description : Code refactoring

  • docs/description : Documentation updates

Step 2: Making changes

Stage changes:

Stage specific files

git add file1.py file2.js

Stage all changes

git add .

Stage with patch mode (interactive)

git add -p

Check status:

See what's changed

git status

See detailed diff

git diff

See staged diff

git diff --staged

Step 3: Committing

Write good commit messages:

git commit -m "type(scope): subject

Detailed description of what changed and why.

  • Change 1
  • Change 2

Fixes #123"

Commit types:

  • feat : New feature

  • fix : Bug fix

  • docs : Documentation

  • style : Formatting, no code change

  • refactor : Code refactoring

  • test : Adding tests

  • chore : Maintenance

Example:

git commit -m "feat(auth): add JWT authentication

  • Implement JWT token generation
  • Add token validation middleware
  • Update user model with refresh token

Closes #42"

Step 4: Pushing changes

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

Step 5: Pulling and updating

Pull latest changes

git pull origin main

Pull with rebase (cleaner history)

git pull --rebase origin main

Fetch without merging

git fetch origin

Step 6: Merging

Merge feature branch:

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

Rebase instead of merge:

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

Step 7: Resolving conflicts

When conflicts occur:

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

Step 8: Cleaning up

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

Advanced workflows

Interactive rebase

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

Stashing changes

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

Cherry-picking

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>

Bisect (finding bugs)

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

Examples

Example 1: Feature development workflow

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

Example 2: Hotfix workflow

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

Example 3: Collaborative workflow

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-lease

Best practices

  • Commit often: Small, focused commits

  • Meaningful messages: Explain what and why

  • Pull before push: Stay updated

  • Review before commit: Check what you're committing

  • Use branches: Never commit directly to main

  • Keep history clean: Rebase feature branches

  • Test before push: Run tests locally

  • Write descriptive branch names: Easy to understand

  • Delete merged branches: Keep repository clean

  • Use .gitignore: Don't commit generated files

Common patterns

Undo last commit (keep changes)

git reset --soft HEAD~1

Undo last commit (discard changes)

git reset --hard HEAD~1

Amend last commit

Change commit message

git commit --amend -m "New message"

Add files to last commit

git add forgotten-file.txt git commit --amend --no-edit

View history

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"

Find commits

Search commit messages

git log --grep="keyword"

Search code changes

git log -S "function_name"

Show file history

git log --follow -- path/to/file

Troubleshooting

Accidentally committed to wrong branch

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

Need to undo a merge

If not pushed yet

git reset --hard HEAD~1

If already pushed (creates revert commit)

git revert -m 1 <merge-commit-hash>

Recover deleted branch

Find lost commit

git reflog

Create branch from lost commit

git checkout -b recovered-branch <commit-hash>

Sync fork with upstream

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 main

Git configuration

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.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'

Editor

git config --global core.editor "code --wait" # VS Code git config --global core.editor "vim" # Vim

References

  • Pro Git Book

  • Git Cheat Sheet

  • Conventional Commits

  • Git Flow

  • GitHub Flow

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

workflow-automation

When to use this skill

Repository Source
Automation

deployment-automation

Deployment Automation

Repository Source
Automation

copilot-coding-agent

No summary provided by upstream source.

Repository SourceNeeds Review