feat(daily): add daily note creation workflow and documentation
Add comprehensive daily note system with multiple creation methods: - Add daily-note.js script for CLI-based daily note creation - Add daily-note npm command to package.json - Create DAILY_NOTE_GUIDE.md with complete workflow documentation - Three creation methods: CLI, Templater, QuickAdd - Step-by-step usage instructions - Recommended daily workflows - Troubleshooting guide Add new reference documentation: - GIT_WORKFLOW.md: Git workflow best practices - PARA_METHOD.md: PARA method explanation - TROUBLESHOOTING.md: Extended troubleshooting guide - AGENTS.md: Agent coding guidelines and commands - QUICK_REFERENCE.md: 1-page quick reference card - REFACTOR_SUMMARY.md: Refactoring summary Organize reference docs: - Move Templater guides to 06_Metadata/Reference/ - Move Obsidian plugins manual to 06_Metadata/Reference/
This commit is contained in:
@@ -0,0 +1,538 @@
|
||||
---
|
||||
created: 2026-01-06
|
||||
type: reference
|
||||
tags: [git, workflow, version-control]
|
||||
---
|
||||
|
||||
# Git Workflow Guide
|
||||
|
||||
Complete guide to Git version control for your Obsidian vault.
|
||||
|
||||
---
|
||||
|
||||
## Critical Rule
|
||||
|
||||
**ALWAYS start sessions with `git pull`** to sync latest changes from remote repository.
|
||||
|
||||
This prevents conflicts and ensures you're working with the latest version.
|
||||
|
||||
---
|
||||
|
||||
## Daily Workflow
|
||||
|
||||
### Morning (Session Start)
|
||||
|
||||
```bash
|
||||
cd D:\tmp\vault\my-vault
|
||||
git pull
|
||||
git status # Check for any conflicts
|
||||
```
|
||||
|
||||
**What this does**:
|
||||
- Changes to vault directory
|
||||
- Pulls latest changes from remote
|
||||
- Shows current status (conflicts, uncommitted changes)
|
||||
|
||||
### During Work
|
||||
|
||||
```bash
|
||||
git status # Periodically check changes
|
||||
```
|
||||
|
||||
**Optional**: Check what's been modified while working.
|
||||
|
||||
### Evening (Session End)
|
||||
|
||||
```bash
|
||||
git status # Review all changes
|
||||
git add . # Stage all changes
|
||||
git commit -m "vault backup: $(date +%Y-%m-%d\ %H:%M:%S)"
|
||||
git push # Sync to remote
|
||||
```
|
||||
|
||||
**What this does**:
|
||||
- Shows all modified/new/deleted files
|
||||
- Stages everything for commit
|
||||
- Creates commit with timestamp
|
||||
- Pushes to remote repository
|
||||
|
||||
---
|
||||
|
||||
## Commit Message Guidelines
|
||||
|
||||
### Format
|
||||
|
||||
```
|
||||
[type]: [brief description]
|
||||
|
||||
Examples:
|
||||
vault backup: 2026-01-06 20:30:15
|
||||
Add: Project planning notes for Q1 initiatives
|
||||
Update: Weekly review template with new sections
|
||||
Organize: Moved inbox items to appropriate folders
|
||||
Archive: Completed research project
|
||||
```
|
||||
|
||||
### Common Types
|
||||
|
||||
| Type | When to Use | Example |
|
||||
|------|-------------|---------|
|
||||
| `vault backup:` | Regular daily backup | `vault backup: 2026-01-06 20:00` |
|
||||
| `Add:` | New notes/projects | `Add: Machine learning project notes` |
|
||||
| `Update:` | Modify existing content | `Update: CLAUDE.md with new workflow` |
|
||||
| `Organize:` | File movements | `Organize: Processed inbox items` |
|
||||
| `Archive:` | Moving to archive | `Archive: Completed Q4 projects` |
|
||||
| `Fix:` | Bug fixes, broken links | `Fix: Broken attachment links` |
|
||||
|
||||
### When to Commit
|
||||
|
||||
- ✅ After organizing inbox
|
||||
- ✅ After creating new notes
|
||||
- ✅ After significant edits
|
||||
- ✅ Before ending session
|
||||
- ✅ After weekly review
|
||||
- ✅ After major reorganization
|
||||
|
||||
**Don't**: Commit every single edit. Batch related changes together.
|
||||
|
||||
---
|
||||
|
||||
## Common Git Commands
|
||||
|
||||
### Essential Commands
|
||||
|
||||
```bash
|
||||
git status # Check current state
|
||||
git pull # Sync from remote
|
||||
git add . # Stage all changes
|
||||
git commit -m "message" # Commit with message
|
||||
git push # Sync to remote
|
||||
git log --oneline -10 # View recent commits
|
||||
```
|
||||
|
||||
### Useful Commands
|
||||
|
||||
```bash
|
||||
# View what changed in a file
|
||||
git diff filename.md
|
||||
|
||||
# View all recent changes
|
||||
git diff
|
||||
|
||||
# View commit history
|
||||
git log --oneline
|
||||
|
||||
# View changes in last commit
|
||||
git show
|
||||
|
||||
# Unstage a file (before commit)
|
||||
git restore --staged filename.md
|
||||
|
||||
# Discard changes to a file (DANGER)
|
||||
git restore filename.md
|
||||
```
|
||||
|
||||
### File History
|
||||
|
||||
```bash
|
||||
# Find when a file was deleted/moved
|
||||
git log --all --full-history -- path/to/file.md
|
||||
|
||||
# View all commits that touched a file
|
||||
git log --follow -- path/to/file.md
|
||||
|
||||
# See file contents from specific commit
|
||||
git show <commit-hash>:path/to/file.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Handling Conflicts
|
||||
|
||||
### When Conflicts Happen
|
||||
|
||||
**Scenario**: You run `git pull` and see:
|
||||
|
||||
```
|
||||
CONFLICT (content): Merge conflict in filename.md
|
||||
Automatic merge failed; fix conflicts and then commit the result.
|
||||
```
|
||||
|
||||
### Resolution Steps
|
||||
|
||||
**1. Open conflicted file**
|
||||
|
||||
You'll see markers like this:
|
||||
|
||||
```markdown
|
||||
Normal content here...
|
||||
|
||||
<<<<<<< HEAD
|
||||
Your local changes
|
||||
=======
|
||||
Remote changes from other device
|
||||
>>>>>>> origin/main
|
||||
|
||||
More normal content...
|
||||
```
|
||||
|
||||
**2. Resolve manually**
|
||||
|
||||
Choose which version to keep (or combine both):
|
||||
|
||||
```markdown
|
||||
Normal content here...
|
||||
|
||||
Combined changes (best of both versions)
|
||||
|
||||
More normal content...
|
||||
```
|
||||
|
||||
Delete conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`).
|
||||
|
||||
**3. Stage and commit**
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "Resolve merge conflicts"
|
||||
git push
|
||||
```
|
||||
|
||||
### Preventing Conflicts
|
||||
|
||||
**Best Practices**:
|
||||
1. ✅ Always `git pull` before starting work
|
||||
2. ✅ Commit and push at end of each session
|
||||
3. ✅ Don't edit same file on multiple devices simultaneously
|
||||
4. ✅ Use descriptive commit messages to track changes
|
||||
|
||||
**If working on multiple devices**:
|
||||
- Device A: Edit → Commit → Push
|
||||
- Device B: Pull → Edit → Commit → Push
|
||||
- Device A: Pull (gets Device B's changes)
|
||||
|
||||
---
|
||||
|
||||
## Advanced Workflows
|
||||
|
||||
### Checking Changes Before Commit
|
||||
|
||||
```bash
|
||||
# See what will be committed
|
||||
git status
|
||||
|
||||
# See detailed changes
|
||||
git diff
|
||||
|
||||
# Review changes file by file
|
||||
git diff filename.md
|
||||
```
|
||||
|
||||
### Selective Staging
|
||||
|
||||
```bash
|
||||
# Stage specific files only
|
||||
git add path/to/file1.md path/to/file2.md
|
||||
|
||||
# Stage all markdown files
|
||||
git add "*.md"
|
||||
|
||||
# Stage entire folder
|
||||
git add 01_Projects/
|
||||
```
|
||||
|
||||
### Commit History
|
||||
|
||||
```bash
|
||||
# Last 10 commits (one line each)
|
||||
git log --oneline -10
|
||||
|
||||
# Detailed view
|
||||
git log -5
|
||||
|
||||
# With file changes
|
||||
git log --stat -5
|
||||
|
||||
# Search commits by message
|
||||
git log --grep="inbox"
|
||||
|
||||
# Commits from last week
|
||||
git log --since="1 week ago"
|
||||
```
|
||||
|
||||
### Undoing Changes
|
||||
|
||||
**Before Commit (Unstage)**:
|
||||
```bash
|
||||
# Unstage specific file
|
||||
git restore --staged filename.md
|
||||
|
||||
# Unstage everything
|
||||
git restore --staged .
|
||||
```
|
||||
|
||||
**Discard Local Changes** (⚠️ DANGER - Cannot undo):
|
||||
```bash
|
||||
# Discard changes to specific file
|
||||
git restore filename.md
|
||||
|
||||
# Discard ALL local changes
|
||||
git restore .
|
||||
```
|
||||
|
||||
**After Commit (Advanced)**:
|
||||
```bash
|
||||
# Undo last commit (keep changes)
|
||||
git reset --soft HEAD~1
|
||||
|
||||
# Undo last commit (discard changes) - DANGER
|
||||
git reset --hard HEAD~1
|
||||
```
|
||||
|
||||
⚠️ **Warning**: Only use `reset --hard` if you're certain. Changes are lost permanently.
|
||||
|
||||
---
|
||||
|
||||
## .gitignore
|
||||
|
||||
### What to Ignore
|
||||
|
||||
Your `.gitignore` file should exclude:
|
||||
|
||||
```gitignore
|
||||
# Obsidian workspace (device-specific)
|
||||
.obsidian/workspace.json
|
||||
.obsidian/workspace-mobile.json
|
||||
|
||||
# System files
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
~$*.md
|
||||
|
||||
# Sensitive files (if any)
|
||||
.env
|
||||
secrets/
|
||||
```
|
||||
|
||||
### What to Commit
|
||||
|
||||
✅ **Do commit**:
|
||||
- `.obsidian/` (most config)
|
||||
- All markdown files (`.md`)
|
||||
- Attachments in `05_Attachments/`
|
||||
- Templates, scripts, documentation
|
||||
|
||||
❌ **Don't commit**:
|
||||
- Workspace files (device-specific layout)
|
||||
- System files (`.DS_Store`)
|
||||
- Large binary files (videos) - use Git LFS
|
||||
- Sensitive information (API keys, passwords)
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Repository not found"
|
||||
|
||||
**Problem**: Can't push/pull from remote
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
# Check remote URL
|
||||
git remote -v
|
||||
|
||||
# Fix remote URL if needed
|
||||
git remote set-url origin <correct-url>
|
||||
```
|
||||
|
||||
### "Your branch is ahead by N commits"
|
||||
|
||||
**Meaning**: You have local commits not pushed to remote
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
git push
|
||||
```
|
||||
|
||||
### "Your branch is behind by N commits"
|
||||
|
||||
**Meaning**: Remote has commits you don't have locally
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
|
||||
### "Diverged branches"
|
||||
|
||||
**Meaning**: You and remote both have different commits
|
||||
|
||||
**Solution**:
|
||||
```bash
|
||||
git pull # May auto-merge
|
||||
# If conflicts, resolve manually
|
||||
git add .
|
||||
git commit -m "Resolve merge conflicts"
|
||||
git push
|
||||
```
|
||||
|
||||
### "Permission denied (publickey)"
|
||||
|
||||
**Problem**: SSH key not configured
|
||||
|
||||
**Solutions**:
|
||||
1. **Use HTTPS instead of SSH**:
|
||||
```bash
|
||||
git remote set-url origin https://github.com/username/repo.git
|
||||
```
|
||||
|
||||
2. **Or configure SSH key**:
|
||||
- Generate: `ssh-keygen -t ed25519 -C "your_email@example.com"`
|
||||
- Add to GitHub: Settings → SSH Keys → Add Key
|
||||
|
||||
### Accidentally Committed Sensitive File
|
||||
|
||||
**Immediate Action**:
|
||||
```bash
|
||||
# Remove from Git (keep local file)
|
||||
git rm --cached sensitive-file.txt
|
||||
|
||||
# Add to .gitignore
|
||||
echo "sensitive-file.txt" >> .gitignore
|
||||
|
||||
# Commit removal
|
||||
git add .gitignore
|
||||
git commit -m "Remove sensitive file from tracking"
|
||||
git push
|
||||
```
|
||||
|
||||
**⚠️ Note**: File still exists in Git history. For complete removal, use `git filter-branch` or BFG Repo-Cleaner (advanced).
|
||||
|
||||
---
|
||||
|
||||
## Best Practices
|
||||
|
||||
### DO ✅
|
||||
|
||||
- **Pull before starting work** (every session)
|
||||
- **Commit frequently** (daily minimum)
|
||||
- **Use descriptive messages** (understand changes later)
|
||||
- **Push at end of session** (backup to remote)
|
||||
- **Review `git status`** before committing
|
||||
- **Keep commits atomic** (one logical change per commit)
|
||||
|
||||
### DON'T ❌
|
||||
|
||||
- **Never force push** to main/master (`git push --force`)
|
||||
- **Don't commit secrets** (API keys, passwords)
|
||||
- **Don't commit huge files** (videos > 50MB - use Git LFS)
|
||||
- **Don't edit history** of pushed commits (causes conflicts)
|
||||
- **Don't ignore conflicts** (resolve immediately)
|
||||
|
||||
---
|
||||
|
||||
## Multi-Device Workflow
|
||||
|
||||
### Device A (Desktop)
|
||||
|
||||
```bash
|
||||
# Morning
|
||||
git pull
|
||||
|
||||
# Work throughout day...
|
||||
|
||||
# Evening
|
||||
git add .
|
||||
git commit -m "vault backup: $(date)"
|
||||
git push
|
||||
```
|
||||
|
||||
### Device B (Laptop)
|
||||
|
||||
```bash
|
||||
# Later that evening
|
||||
git pull # Gets Desktop's changes
|
||||
|
||||
# Work on laptop...
|
||||
|
||||
# Before sleep
|
||||
git add .
|
||||
git commit -m "vault backup: $(date)"
|
||||
git push
|
||||
```
|
||||
|
||||
### Device A (Next Day)
|
||||
|
||||
```bash
|
||||
# Next morning
|
||||
git pull # Gets Laptop's changes
|
||||
|
||||
# Continue working...
|
||||
```
|
||||
|
||||
**Key**: Always pull before starting, push when done.
|
||||
|
||||
---
|
||||
|
||||
## Quick Reference
|
||||
|
||||
### Most Used Commands
|
||||
|
||||
```bash
|
||||
# Daily workflow
|
||||
git pull # Start of session
|
||||
git status # Check changes
|
||||
git add . # Stage all
|
||||
git commit -m "vault backup: $(date)" # Commit
|
||||
git push # End of session
|
||||
|
||||
# Viewing history
|
||||
git log --oneline -10 # Recent commits
|
||||
git diff # See changes
|
||||
|
||||
# Fixing issues
|
||||
git restore --staged . # Unstage
|
||||
git restore filename.md # Discard changes
|
||||
```
|
||||
|
||||
### Emergency Commands
|
||||
|
||||
```bash
|
||||
# Conflicts during pull
|
||||
git status # See conflicted files
|
||||
# Edit files manually
|
||||
git add .
|
||||
git commit -m "Resolve conflicts"
|
||||
git push
|
||||
|
||||
# Undo last commit (keep changes)
|
||||
git reset --soft HEAD~1
|
||||
|
||||
# Completely reset to remote (DANGER - loses local changes)
|
||||
git fetch origin
|
||||
git reset --hard origin/main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Further Reading
|
||||
|
||||
**Official Git Documentation**: https://git-scm.com/doc
|
||||
|
||||
**Recommended Learning**:
|
||||
- Git basics: https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
|
||||
- Branching (advanced): https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging
|
||||
|
||||
**Visual Git Tools**:
|
||||
- GitKraken (GUI client)
|
||||
- GitHub Desktop (simple interface)
|
||||
- VS Code built-in Git (integrated)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-01-06
|
||||
**See Also**: [[CLAUDE]], [[QUICK_REFERENCE]], [[TROUBLESHOOTING]]
|
||||
Reference in New Issue
Block a user