# Setting Up Git Access with Gitea and Obsidian

## Part 1: Authorizing Git Client Access

### Prerequisites
- Gitea instance accessible through your domain (bee8333.ddns.net) via HTTPS
- Administrative privileges for initial setup

### Repository Setup
- For new repositories using HTTPS:
```bash
git clone https://bee8333.ddns.net:3000/username/repository.git
```

- For new repositories using SSH:
```bash
git clone ssh://git@bee8333.ddns.net:222/username/repository.git
```

- For existing repositories (HTTPS):
```bash
git remote set-url origin https://bee8333.ddns.net:3000/username/repository.git
```

- For existing repositories (SSH):
```bash
git remote set-url origin ssh://git@bee8333.ddns.net:222/username/repository.git
```

### Authentication
When using HTTPS:
1. You'll be prompted for your Gitea username and password
2. For better security, create a Personal Access Token in Gitea:
   - Go to Settings → Applications → Generate New Token
   - Give it a description
   - Copy the token immediately (it won't be shown again)
   - Use this token as your password when Git asks for credentials

When using SSH:
1. Generate an SSH key pair if you haven't already:
   ```bash
   ssh-keygen -t ed25519 -C "your_email@example.com"
   ```
2. Add your public key to Gitea:
   - Go to Settings → SSH / GPG Keys
   - Click "Add Key"
   - Paste your public key (from ~/.ssh/id_ed25519.pub)
3. SSH will use your key automatically for authentication

### Important Note
When using non-standard HTTPS ports (like 3000):
1. Use an elevated (Administrator) PowerShell/Command Prompt for Git operations
2. Regular terminals in VS Code/Cursor may not have sufficient privileges
3. If Git operations fail, try running your terminal as Administrator

## Part 2: Obsidian-Git Integration

### Plugin Installation
1. Open Obsidian Settings → Community plugins
2. Search for "Obsidian Git"
3. Install and enable the plugin

### Plugin Configuration
1. Go to Settings → Community plugins → Obsidian Git
2. Recommended settings:
   - ❌ Auto pull interval (disable when using Syncthing)
   - ✅ Show status bar
   - ✅ Source Control View
   - ✅ Show changes files count in status bar
   - Configure default commit message

### Essential Commands
Access these via Command Palette (Ctrl/Cmd + P):
- `Open source control view` - View changes and branch info
- `List changed files` - See modifications
- `View diff` - Check file changes
- `Stage/Unstage current file` - Prepare for commit
- `Commit staged` - Save staged changes
- `Create/Switch branch` - Branch management

### Recommended Workflow
1. Make changes in Obsidian
2. Check Source Control View
3. Stage desired files
4. Commit with meaningful message
5. Push to Gitea

### Status Bar Features
- Current branch name
- Number of changed files
- Sync status indicators

## Important Configuration

### Gitignore Setup
Add these patterns to `.gitignore`:
```
.trash/
.stversions/
.obsidian/workspace.json
.obsidian/workspace-mobile.json
```

### Security Best Practices
- Keep SSH private keys secure
- Use strong SSH key passphrases
- Regularly review and clean up SSH keys in Gitea
- Never share private keys

### Syncthing Compatibility
- Wait for Syncthing sync before Git operations
- Commit/push before closing Obsidian
- Ensure `.stversions` is in `.gitignore`

### Performance Tips
- Stage files individually
- Use branches for major changes
- Commit regularly, push selectively
- Monitor Source Control View

## Collaboration Guidelines
- Pull before making changes
- Use branches for significant changes
- Check diff view for conflicts
- Let Syncthing sync complete before Git operations