---
id: sm-git-workflow
name: "git-workflow"
url: https://skills.yangsir.net/skill/sm-git-workflow
author: supercent-io
domain: ai-project-management-collaboration
tags: ["gitflow", "github-flow", "branching-strategies", "pull-requests", "version-control"]
install_count: 11100
rating: 4.50 (442 reviews)
github: https://github.com/supercent-io/skills-template
---

# git-workflow

> 此技能用于管理Git工作流，包括创建有意义的提交信息、分支管理、代码合并、冲突解决及团队协作，确保版本控制高效顺畅。

**Stats**: 11,100 installs · 4.5/5 (442 reviews)

## Before / After 对比

### 规范化Git工作流，有效提升团队协作效率、代码版本控制的准确性与项目管理水平

## Readme

# 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](https://git-scm.com/book/en/v2)

- [Git Cheat Sheet](https://education.github.com/git-cheat-sheet-education.pdf)

- [Conventional Commits](https://www.conventionalcommits.org/)

- [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/)

- [GitHub Flow](https://guides.github.com/introduction/flow/)

Weekly Installs10.8KRepository[supercent-io/sk…template](https://github.com/supercent-io/skills-template)GitHub Stars58First SeenJan 24, 2026Security Audits[Gen Agent Trust HubPass](/supercent-io/skills-template/git-workflow/security/agent-trust-hub)[SocketPass](/supercent-io/skills-template/git-workflow/security/socket)[SnykPass](/supercent-io/skills-template/git-workflow/security/snyk)Installed oncodex10.7Kgemini-cli10.7Kopencode10.7Kgithub-copilot10.6Kcursor10.6Kamp10.6K

---
*Source: https://skills.yangsir.net/skill/sm-git-workflow*
*Markdown mirror: https://skills.yangsir.net/api/skill/sm-git-workflow/markdown*