added branch setup
This commit is contained in:
parent
107003bb03
commit
408f9d6044
299
GIT_BRANCH_SETUP.md
Normal file
299
GIT_BRANCH_SETUP.md
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
# Git Branch Setup Guide
|
||||||
|
|
||||||
|
## Creating Branches: akhib and dundu
|
||||||
|
|
||||||
|
### Quick Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create and push akhib branch
|
||||||
|
git checkout -b akhib
|
||||||
|
git push -u origin akhib
|
||||||
|
|
||||||
|
# Create and push dundu branch
|
||||||
|
git checkout -b dundu
|
||||||
|
git push -u origin dundu
|
||||||
|
|
||||||
|
# Go back to main branch
|
||||||
|
git checkout main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Detailed Step-by-Step
|
||||||
|
|
||||||
|
### Step 1: Check Your Current Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git branch
|
||||||
|
```
|
||||||
|
|
||||||
|
This shows which branch you're currently on (marked with *).
|
||||||
|
|
||||||
|
### Step 2: Create akhib Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create new branch from current position
|
||||||
|
git checkout -b akhib
|
||||||
|
|
||||||
|
# Verify you're on the new branch
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# Push to remote and set upstream
|
||||||
|
git push -u origin akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 3: Create dundu Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Go back to main first
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# Create new branch from main
|
||||||
|
git checkout -b dundu
|
||||||
|
|
||||||
|
# Push to remote and set upstream
|
||||||
|
git push -u origin dundu
|
||||||
|
```
|
||||||
|
|
||||||
|
### Step 4: Verify All Branches Exist
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List local branches
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# List all branches (local + remote)
|
||||||
|
git branch -a
|
||||||
|
```
|
||||||
|
|
||||||
|
You should see:
|
||||||
|
```
|
||||||
|
* main
|
||||||
|
akhib
|
||||||
|
dundu
|
||||||
|
remotes/origin/akhib
|
||||||
|
remotes/origin/dundu
|
||||||
|
remotes/origin/main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Branch Workflow for Team
|
||||||
|
|
||||||
|
### For Developer Working on akhib Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch to akhib branch
|
||||||
|
git checkout akhib
|
||||||
|
|
||||||
|
# Make sure it's up to date
|
||||||
|
git pull origin akhib
|
||||||
|
|
||||||
|
# Make changes, then commit
|
||||||
|
git add .
|
||||||
|
git commit -m "Your commit message"
|
||||||
|
|
||||||
|
# Push changes
|
||||||
|
git push origin akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
### For Developer Working on dundu Branch
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch to dundu branch
|
||||||
|
git checkout dundu
|
||||||
|
|
||||||
|
# Make sure it's up to date
|
||||||
|
git pull origin dundu
|
||||||
|
|
||||||
|
# Make changes, then commit
|
||||||
|
git add .
|
||||||
|
git commit -m "Your commit message"
|
||||||
|
|
||||||
|
# Push changes
|
||||||
|
git push origin dundu
|
||||||
|
```
|
||||||
|
|
||||||
|
## Merging Changes
|
||||||
|
|
||||||
|
### Merge akhib into main
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch to main
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# Pull latest changes
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# Merge akhib branch
|
||||||
|
git merge akhib
|
||||||
|
|
||||||
|
# Push merged changes
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Merge dundu into main
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Switch to main
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
# Pull latest changes
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
# Merge dundu branch
|
||||||
|
git merge dundu
|
||||||
|
|
||||||
|
# Push merged changes
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
## Branch Protection (Recommended)
|
||||||
|
|
||||||
|
After creating branches, consider setting up branch protection rules on GitHub/GitLab:
|
||||||
|
|
||||||
|
1. **Protect main branch** - Require pull requests
|
||||||
|
2. **Require reviews** - At least 1 approval before merging
|
||||||
|
3. **Require tests** - Ensure CI/CD passes
|
||||||
|
|
||||||
|
## Common Branch Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# List all branches
|
||||||
|
git branch -a
|
||||||
|
|
||||||
|
# Switch branches
|
||||||
|
git checkout branch-name
|
||||||
|
|
||||||
|
# Create new branch
|
||||||
|
git checkout -b new-branch-name
|
||||||
|
|
||||||
|
# Delete local branch
|
||||||
|
git branch -d branch-name
|
||||||
|
|
||||||
|
# Delete remote branch
|
||||||
|
git push origin --delete branch-name
|
||||||
|
|
||||||
|
# Rename current branch
|
||||||
|
git branch -m new-name
|
||||||
|
|
||||||
|
# See which branch you're on
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# Update all branches from remote
|
||||||
|
git fetch --all
|
||||||
|
|
||||||
|
# See commits difference between branches
|
||||||
|
git log main..akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
## Branch Strategy Recommendation
|
||||||
|
|
||||||
|
### Main Branch
|
||||||
|
- **Purpose:** Production-ready code
|
||||||
|
- **Protection:** Require pull requests
|
||||||
|
- **Who commits:** No direct commits (only via PR)
|
||||||
|
|
||||||
|
### akhib Branch
|
||||||
|
- **Purpose:** Akhib's development work
|
||||||
|
- **Protection:** Optional
|
||||||
|
- **Who commits:** Akhib (and approved team members)
|
||||||
|
|
||||||
|
### dundu Branch
|
||||||
|
- **Purpose:** Dundu's development work
|
||||||
|
- **Protection:** Optional
|
||||||
|
- **Who commits:** Dundu (and approved team members)
|
||||||
|
|
||||||
|
## Workflow Example
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
graph LR
|
||||||
|
A[main] --> B[akhib branch]
|
||||||
|
A --> C[dundu branch]
|
||||||
|
B --> D[Pull Request to main]
|
||||||
|
C --> E[Pull Request to main]
|
||||||
|
D --> A
|
||||||
|
E --> A
|
||||||
|
```
|
||||||
|
|
||||||
|
**Recommended Flow:**
|
||||||
|
1. Developer creates feature on their branch (akhib/dundu)
|
||||||
|
2. Commits and pushes regularly
|
||||||
|
3. When ready, creates Pull Request to main
|
||||||
|
4. Team reviews the PR
|
||||||
|
5. After approval, merge to main
|
||||||
|
6. Delete feature branch (optional) or keep for next feature
|
||||||
|
|
||||||
|
## Syncing Branches
|
||||||
|
|
||||||
|
### Keep akhib up to date with main
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout akhib
|
||||||
|
git pull origin main
|
||||||
|
git push origin akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
### Keep dundu up to date with main
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout dundu
|
||||||
|
git pull origin main
|
||||||
|
git push origin dundu
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Error: "branch already exists"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# If branch exists locally, just switch to it
|
||||||
|
git checkout akhib
|
||||||
|
|
||||||
|
# If you want to recreate it
|
||||||
|
git branch -d akhib
|
||||||
|
git checkout -b akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
### Error: "failed to push some refs"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Pull first, then push
|
||||||
|
git pull origin akhib
|
||||||
|
git push origin akhib
|
||||||
|
```
|
||||||
|
|
||||||
|
### Merge Conflicts
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# When merge conflict occurs
|
||||||
|
git status # See conflicted files
|
||||||
|
|
||||||
|
# Edit conflicted files manually
|
||||||
|
# Look for <<<<<<, ======, >>>>>> markers
|
||||||
|
|
||||||
|
# After fixing conflicts
|
||||||
|
git add .
|
||||||
|
git commit -m "Resolve merge conflicts"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
## Quick Reference
|
||||||
|
|
||||||
|
| Command | Description |
|
||||||
|
|---------|-------------|
|
||||||
|
| `git checkout -b akhib` | Create akhib branch |
|
||||||
|
| `git push -u origin akhib` | Push and track akhib |
|
||||||
|
| `git checkout akhib` | Switch to akhib |
|
||||||
|
| `git branch` | List local branches |
|
||||||
|
| `git branch -a` | List all branches |
|
||||||
|
| `git merge akhib` | Merge akhib into current |
|
||||||
|
| `git pull origin akhib` | Update akhib from remote |
|
||||||
|
|
||||||
|
## Setting Up Branch Protection (GitHub)
|
||||||
|
|
||||||
|
1. Go to: Settings → Branches → Add rule
|
||||||
|
2. Branch name pattern: `main`
|
||||||
|
3. Enable:
|
||||||
|
- ✅ Require pull request reviews before merging
|
||||||
|
- ✅ Require status checks to pass
|
||||||
|
- ✅ Require branches to be up to date
|
||||||
|
4. Save changes
|
||||||
|
|
||||||
|
Now your branches are ready for team collaboration! 🎉
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user