strawberryPicker / docs /GITHUB_SETUP.md
Gareth
Initial clean commit for Hugging Face
efb1801
# GitHub Setup and Push Guide
Follow these steps to push your strawberry picker ML project to GitHub.
## Prerequisites
1. **Git installed** on your system
```bash
git --version
```
2. **GitHub account** (create at https://github.com if you don't have one)
3. **Git configured** with your credentials
```bash
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
```
## Step 1: Create GitHub Repository
### Option A: Using GitHub Website (Recommended)
1. Go to https://github.com/new
2. Repository name: `strawberry-picker-robot`
3. Description: `Machine learning vision system for robotic strawberry picking`
4. Choose: **Public** or **Private**
5. Check: **Add a README file** (we'll overwrite it)
6. Click: **Create repository**
### Option B: Using GitHub CLI (if installed)
```bash
gh repo create strawberry-picker-robot --public --source=. --remote=origin --push
```
## Step 2: Initialize Local Repository
Open terminal in your project folder:
```bash
cd "G:\My Drive\University Files\5th Semester\Kinematics and Dynamics\strawberryPicker"
```
Initialize git repository:
```bash
git init
```
## Step 3: Add Files to Git
Add all files (except those in .gitignore):
```bash
git add .
```
Check what will be committed:
```bash
git status
```
You should see files like:
- `requirements.txt`
- `train_yolov8.py`
- `train_yolov8_colab.ipynb`
- `setup_training.py`
- `TRAINING_README.md`
- `README.md`
- `.gitignore`
- `ArduinoCode/`
- `assets/`
## Step 4: Create First Commit
```bash
git commit -m "Initial commit: YOLOv8 training pipeline for strawberry detection
- Add YOLOv8 training scripts (local, Colab, WSL)
- Add environment setup and validation
- Add comprehensive training documentation
- Add .gitignore for ML project
- Support multiple training environments"
```
## Step 5: Connect to GitHub Repository
If you created repo on GitHub website, link it:
```bash
git remote add origin https://github.com/YOUR_USERNAME/strawberry-picker-robot.git
```
Replace `YOUR_USERNAME` with your actual GitHub username.
## Step 6: Rename Default Branch (if needed)
```bash
git branch -M main
```
## Step 7: Push to GitHub
First push (sets up remote tracking):
```bash
git push -u origin main
```
Enter your GitHub credentials when prompted.
## Step 8: Verify Push
Go to https://github.com/YOUR_USERNAME/strawberry-picker-robot
You should see all your files!
## Step 9: Add .gitignore for Large Files
If you want to add dataset or large model files later, use Git LFS:
```bash
# Install Git LFS
git lfs install
# Track large file types
git lfs track "*.pt"
git lfs track "*.onnx"
git lfs track "*.tflite"
git lfs track "*.h5"
# Add .gitattributes
git add .gitattributes
git commit -m "Add Git LFS tracking for large model files"
git push
```
## Step 10: Create .gitattributes File
Create `.gitattributes` file in project root:
```
*.pt filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
```
## Quick Push Commands (Summary)
```bash
# One-time setup
git init
git add .
git commit -m "Initial commit: YOLOv8 training pipeline"
git remote add origin https://github.com/YOUR_USERNAME/strawberry-picker-robot.git
git branch -M main
git push -u origin main
# Future updates
git add .
git commit -m "Your commit message"
git push
```
## Troubleshooting
### Authentication Issues
If you get authentication errors:
**Option 1: Use Personal Access Token**
1. Go to GitHub Settings → Developer settings → Personal access tokens
2. Generate new token (classic) with `repo` scope
3. Use token as password when prompted
**Option 2: Use SSH (Recommended)**
```bash
# Check if SSH key exists
ls ~/.ssh/id_rsa.pub
# If not, create one
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
# Add to GitHub
cat ~/.ssh/id_rsa.pub
# Copy output and add to GitHub → Settings → SSH and GPG keys
# Change remote to SSH
git remote set-url origin git@github.com:YOUR_USERNAME/strawberry-picker-robot.git
```
### Large File Issues
If files are too large for GitHub (max 100MB):
- Use Git LFS (see Step 9)
- Or add to `.gitignore` and upload separately to Google Drive/Dropbox
### Proxy Issues (if behind firewall)
```bash
git config --global http.proxy http://proxy.company.com:8080
git config --global https.proxy https://proxy.company.com:8080
```
## Best Practices
### Commit Messages
Write clear, descriptive commit messages:
```bash
git commit -m "Add YOLOv8 training script with Colab support
- Auto-detects training environment
- Supports local, WSL, and Google Colab
- Includes dataset validation
- Exports to ONNX format"
```
### Branching Strategy
```bash
# Create feature branch
git checkout -b feature/add-ripeness-detection
# Work on changes
git add .
git commit -m "Add ripeness classification dataset collection"
# Push branch
git push -u origin feature/add-ripeness-detection
# Create pull request on GitHub
```
### Regular Pushes
Push frequently to avoid losing work:
```bash
# Daily push
git add .
git commit -m "Training progress: epoch 50/100, loss: 0.123"
git push
```
## GitHub Repository Settings
### Protect Main Branch
1. Go to Settings → Branches
2. Add rule for `main` branch:
- Require pull request reviews
- Require status checks
- Include administrators
### Add Description and Topics
1. Go to repository page
2. Click "Edit" next to description
3. Add topics: `machine-learning`, `yolov8`, `raspberry-pi`, `robotics`, `computer-vision`
### Enable Issues and Projects
- Use Issues to track bugs and features
- Use Projects to organize development phases
## Continuous Integration (Optional)
Add `.github/workflows/train.yml` for automated training:
```yaml
name: Train Model
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
train:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Validate dataset
run: |
python train_yolov8.py --validate-only
```
## Next Steps After Push
1. **Share repository** with teammates/collaborators
2. **Create issues** for Phase 2, 3, 4 tasks
3. **Set up project board** to track progress
4. **Add documentation** to wiki if needed
5. **Enable GitHub Pages** for documentation (optional)
## Getting Help
- GitHub Docs: https://docs.github.com
- Git Cheat Sheet: https://education.github.com/git-cheat-sheet-education.pdf
- Git LFS Docs: https://git-lfs.github.com
## Repository URL
Your repository will be at:
`https://github.com/YOUR_USERNAME/strawberry-picker-robot`
## Clone Command (for others)
```bash
git clone https://github.com/YOUR_USERNAME/strawberry-picker-robot.git
cd strawberry-picker-robot
pip install -r requirements.txt
```
---
**Ready to push?** Run the commands in Step 1-7 above!