mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-30 06:12:03 +00:00
- Introduced a new document detailing the standard workflow for Git operations including branch creation, staging, committing, pushing, and PR creation. - Included best practices, troubleshooting tips, and quick reference commands to enhance user understanding and efficiency in using Git. - Emphasized the importance of clear commit messages and branch naming conventions.
238 lines
4.8 KiB
Markdown
238 lines
4.8 KiB
Markdown
# Git Workflow: Branch, Commit, Push, and Pull Request
|
|
|
|
This document outlines the standard workflow for creating a branch, committing changes, pushing to remote, and creating a pull request.
|
|
|
|
## Prerequisites
|
|
|
|
- Git installed and configured
|
|
- GitHub CLI (`gh`) installed (optional, but recommended for PR creation)
|
|
- Access to the repository
|
|
- Authentication configured (SSH keys or GitHub CLI authentication)
|
|
|
|
## Step-by-Step Workflow
|
|
|
|
### 1. Check Current Status
|
|
|
|
First, check what changes exist in your working directory:
|
|
|
|
```bash
|
|
git status
|
|
```
|
|
|
|
This shows:
|
|
|
|
- Modified files
|
|
- Deleted files
|
|
- Untracked files
|
|
- Current branch
|
|
|
|
### 2. Create a New Branch
|
|
|
|
Create and switch to a new branch for your changes:
|
|
|
|
```bash
|
|
git checkout -b <branch-name>
|
|
```
|
|
|
|
**Branch naming conventions:**
|
|
|
|
- `feature/` - for new features
|
|
- `fix/` or `bugfix/` - for bug fixes
|
|
- `refactor/` - for code refactoring
|
|
- `docs/` - for documentation changes
|
|
- `chore/` - for maintenance tasks
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
git checkout -b refactor/monorepo-restructure
|
|
```
|
|
|
|
### 3. Stage Changes
|
|
|
|
Stage all changes (including deletions and new files):
|
|
|
|
```bash
|
|
git add -A
|
|
```
|
|
|
|
Or stage specific files:
|
|
|
|
```bash
|
|
git add <file1> <file2>
|
|
```
|
|
|
|
### 4. Commit Changes
|
|
|
|
Create a commit with a descriptive message:
|
|
|
|
```bash
|
|
git commit -m "type: descriptive commit message"
|
|
```
|
|
|
|
**Commit message conventions:**
|
|
|
|
- Use conventional commits format: `type: description`
|
|
- Types: `feat`, `fix`, `refactor`, `docs`, `chore`, `test`, `style`
|
|
- Keep messages concise but descriptive
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
git commit -m "refactor: restructure project to monorepo with apps directory"
|
|
```
|
|
|
|
### 5. Push Branch to Remote
|
|
|
|
Push your branch to the remote repository:
|
|
|
|
```bash
|
|
git push -u origin <branch-name>
|
|
```
|
|
|
|
The `-u` flag sets up tracking so future pushes can use `git push` without specifying the branch.
|
|
|
|
**Example:**
|
|
|
|
```bash
|
|
git push -u origin refactor/monorepo-restructure
|
|
```
|
|
|
|
### 6. Create Pull Request
|
|
|
|
#### Option A: Using GitHub CLI (Recommended)
|
|
|
|
If you have GitHub CLI installed:
|
|
|
|
```bash
|
|
gh pr create --title "Your PR Title" --body "Description of changes"
|
|
```
|
|
|
|
To open in browser for review before creating:
|
|
|
|
```bash
|
|
gh pr create --title "Your PR Title" --body "Description" --web
|
|
```
|
|
|
|
#### Option B: Using GitHub Web Interface
|
|
|
|
After pushing, GitHub will provide a URL in the terminal output:
|
|
|
|
```
|
|
remote: Create a pull request for '<branch-name>' on GitHub by visiting:
|
|
remote: https://github.com/<org>/<repo>/pull/new/<branch-name>
|
|
```
|
|
|
|
Visit that URL to create the PR through the web interface.
|
|
|
|
#### Option C: Manual PR Creation
|
|
|
|
1. Go to your repository on GitHub
|
|
2. Click "Pull requests" tab
|
|
3. Click "New pull request"
|
|
4. Select your branch as the source
|
|
5. Select the target branch (usually `main` or `master`)
|
|
6. Fill in title and description
|
|
7. Click "Create pull request"
|
|
|
|
## Complete Example Workflow
|
|
|
|
```bash
|
|
# 1. Check status
|
|
git status
|
|
|
|
# 2. Create branch
|
|
git checkout -b feature/add-new-component
|
|
|
|
# 3. Make your changes (edit files, etc.)
|
|
|
|
# 4. Stage changes
|
|
git add -A
|
|
|
|
# 5. Commit
|
|
git commit -m "feat: add new user dashboard component"
|
|
|
|
# 6. Push
|
|
git push -u origin feature/add-new-component
|
|
|
|
# 7. Create PR
|
|
gh pr create --title "feat: add new user dashboard component" --body "Implements new dashboard component with user statistics and activity feed."
|
|
```
|
|
|
|
## Handling Additional Changes
|
|
|
|
If you need to make more changes after pushing:
|
|
|
|
```bash
|
|
# Make your changes
|
|
git add -A
|
|
git commit -m "fix: address review feedback"
|
|
git push
|
|
```
|
|
|
|
The PR will automatically update with the new commits.
|
|
|
|
## Troubleshooting
|
|
|
|
### Branch already exists
|
|
|
|
```bash
|
|
git checkout <existing-branch-name>
|
|
```
|
|
|
|
### Need to update from main before creating PR
|
|
|
|
```bash
|
|
git checkout main
|
|
git pull origin main
|
|
git checkout <your-branch>
|
|
git merge main
|
|
# Resolve conflicts if any
|
|
git push
|
|
```
|
|
|
|
### PR creation fails
|
|
|
|
- Ensure branch is pushed: `git push -u origin <branch-name>`
|
|
- Check GitHub CLI authentication: `gh auth status`
|
|
- Verify repository access permissions
|
|
- Try creating PR via web interface instead
|
|
|
|
## Best Practices
|
|
|
|
1. **Keep branches focused**: One branch = one feature/fix
|
|
2. **Write clear commit messages**: Help reviewers understand changes
|
|
3. **Keep PRs small**: Easier to review and merge
|
|
4. **Update before creating PR**: Merge latest `main` into your branch
|
|
5. **Add tests**: Include tests for new features
|
|
6. **Update documentation**: Keep docs in sync with code changes
|
|
7. **Request reviews**: Tag relevant team members for review
|
|
|
|
## Quick Reference Commands
|
|
|
|
```bash
|
|
# Status check
|
|
git status
|
|
|
|
# Create branch
|
|
git checkout -b <branch-name>
|
|
|
|
# Stage all changes
|
|
git add -A
|
|
|
|
# Commit
|
|
git commit -m "type: message"
|
|
|
|
# Push
|
|
git push -u origin <branch-name>
|
|
|
|
# Create PR (GitHub CLI)
|
|
gh pr create --title "Title" --body "Description"
|
|
|
|
# View PR
|
|
gh pr view
|
|
|
|
# List PRs
|
|
gh pr list
|
|
```
|