9ff8e915b8
User-agnostic, shareable AI-assisted development workflow distilled from 26+ real projects. Includes 9 composable rules, 4 project templates, pre-push secret scanning hook, 3 methodology guides, and customization docs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
149 lines
3.8 KiB
Markdown
149 lines
3.8 KiB
Markdown
# Git Workflow
|
|
|
|
## Daily Workflow
|
|
|
|
### Start Fresh
|
|
```bash
|
|
git checkout main
|
|
git pull origin main
|
|
git checkout -b feature/descriptive-name
|
|
```
|
|
|
|
### Commit Frequently
|
|
|
|
Create a commit after ANY of these:
|
|
- Completing a single feature or function
|
|
- Fixing a bug (even small ones)
|
|
- Adding or modifying tests
|
|
- Updating documentation
|
|
- Before switching to a different task
|
|
- Every 15-30 minutes of active coding (at natural breakpoints)
|
|
|
|
**When NOT to commit:**
|
|
- Code doesn't run/compile
|
|
- Broken functionality
|
|
- Incomplete features with no clean boundary
|
|
|
|
### Push for Backup
|
|
```bash
|
|
git push -u origin feature/branch-name # First time
|
|
git push origin feature/branch-name # Subsequent pushes
|
|
```
|
|
|
|
## Branch Naming
|
|
|
|
```
|
|
feature/add-user-auth # New features
|
|
bugfix/fix-login-error # Bug fixes
|
|
hotfix/critical-security # Urgent fixes
|
|
docs/update-readme # Documentation
|
|
refactor/cleanup-database # Code improvements
|
|
```
|
|
|
|
## Conventional Commits
|
|
|
|
All commits MUST follow conventional commits:
|
|
|
|
```
|
|
<type>(<optional-scope>): <description>
|
|
|
|
[optional body]
|
|
```
|
|
|
|
### Types
|
|
|
|
| Type | Description |
|
|
|------|-------------|
|
|
| `feat` | New feature |
|
|
| `fix` | Bug fix |
|
|
| `docs` | Documentation |
|
|
| `style` | Formatting (no code change) |
|
|
| `refactor` | Code restructure (no behavior change) |
|
|
| `test` | Adding or updating tests |
|
|
| `chore` | Maintenance, dependencies |
|
|
| `perf` | Performance improvement |
|
|
| `ci` | CI/CD changes |
|
|
|
|
### Scope (optional)
|
|
|
|
Indicates the area affected:
|
|
```bash
|
|
feat(auth): Add password reset flow
|
|
fix(api): Handle timeout errors
|
|
test(auth): Add integration tests for login flow
|
|
```
|
|
|
|
### Good Messages
|
|
```bash
|
|
git commit -m "feat: Add user authentication with JWT tokens"
|
|
git commit -m "fix: Resolve memory leak in image processing"
|
|
git commit -m "refactor: Extract validation into shared module"
|
|
```
|
|
|
|
### Bad Messages
|
|
```bash
|
|
git commit -m "fix" # Too vague
|
|
git commit -m "updates" # Meaningless
|
|
git commit -m "WIP" # Not descriptive
|
|
git commit -m "Fixed bug" # Missing type prefix
|
|
```
|
|
|
|
### Why Conventional Commits?
|
|
|
|
1. **Automated changelogs** — tools can categorize changes by type
|
|
2. **Clear history** — easy to understand what changed and why
|
|
3. **Semantic versioning** — `feat` = minor, `fix` = patch
|
|
4. **Searchable** — `git log --grep="feat:"` finds all features
|
|
|
|
## Proactive Git Behavior
|
|
|
|
After completing a logical unit of work:
|
|
1. Run tests and linter (if configured)
|
|
2. Stage and commit with a conventional commit message
|
|
3. Inform the user: "I've committed this change: `feat: ...`"
|
|
|
|
If uncommitted changes accumulate, proactively suggest committing.
|
|
|
|
## Team Collaboration
|
|
|
|
1. **Never commit to main directly** — always use feature branches
|
|
2. **Always pull before push** — `git pull origin main` first
|
|
3. **Use meaningful branch names** — not `test`, `mywork`, `temp`
|
|
4. **Merge via Pull Requests** — for code review and history
|
|
|
|
## Recovery Commands
|
|
|
|
### Uncommitted Changes
|
|
```bash
|
|
git status # See what changed
|
|
git checkout -- filename # Restore single file
|
|
git stash # Temporarily save work
|
|
git stash pop # Restore saved work
|
|
```
|
|
|
|
### Committed But Not Pushed
|
|
```bash
|
|
git reset --soft HEAD~1 # Undo commit, keep changes staged
|
|
git reset HEAD~1 # Undo commit, unstage changes
|
|
```
|
|
|
|
### Already Pushed (Safe)
|
|
```bash
|
|
git revert HEAD # Create undo commit
|
|
git push origin branch-name
|
|
```
|
|
|
|
### Emergency Recovery
|
|
```bash
|
|
git reflog # See all actions (your safety net)
|
|
git checkout abc1234 # Go back to specific state
|
|
```
|
|
|
|
## Danger Commands (Confirm Before Using)
|
|
|
|
```bash
|
|
git reset --hard HEAD # Deletes all uncommitted work
|
|
git push --force # Overwrites remote history
|
|
git branch -D branch-name # Force delete branch
|
|
```
|