4. Version Control with Git#

4.1. Introduction#

4.1.1. What is Git?#

4.1.2. What is GitHub?#

4.2. Learning Objectives#

4.3. Setting Up GitHub Account#

4.3.1. Creating Your GitHub Account#

4.4. Installing Git#

4.4.1. Installation Instructions#

4.4.2. Verifying Installation#

# Check Git version
git --version

# Check installation location
which git  # macOS/Linux
where git  # Windows

4.5. Configuring Git#

4.5.1. Essential Configuration#

# Replace with your actual name and GitHub email
git config --global user.name "Your Full Name"
git config --global user.email "your.github@email.com"

4.5.2. Verification#

# View all global configuration
git config --global --list

# Check specific values
git config --global user.name
git config --global user.email

4.6. Understanding Git Concepts#

4.6.1. Core Git Concepts#

4.6.2. The Git Workflow#

4.7. Essential Git Commands#

4.7.1. Starting a New Project#

# Navigate to your project folder
cd ~/my-geo-project

# Initialize Git repository
git init

# Check repository status
git status
# Clone a repository from GitHub
git clone https://github.com/<your-username>/intro-gispro.git

4.7.2. Tracking Changes#

# Add specific files
git add analysis.py
# Add all files in current directory
git add .
# See status of all files
git status

# See detailed changes
git diff
# Commit with inline message
git commit -m "Add rainfall analysis function"

# Commit all tracked files (skip staging)
git commit -am "Update visualization parameters"

4.7.3. Writing Good Commit Messages#

git commit -m "Add NDVI calculation for Landsat 8 imagery"
git commit -m "Fix coordinate transformation bug in UTM conversion"
git commit -m "Update flood mapping algorithm to handle edge cases"

4.7.4. Working with GitHub#

# Add remote repository
git remote add origin https://github.com/<your-username>/<repo-name>.git
# Push to GitHub (first time)
git push -u origin main

# Push subsequent changes
git push
# Pull changes from GitHub
git pull

4.7.5. Basic Branching#

# Create new branch for experimental feature
git checkout -b satellite-analysis

# List all branches
git branch

# Switch back to main branch
git checkout main

# Merge feature branch into main
git merge satellite-analysis

# Delete merged branch
git branch -d satellite-analysis

4.7.6. Viewing Project History#

# View commit history
git log

# Compact one-line format
git log --oneline

# View specific file history
git log -- data_processing.py

4.7.7. Undoing Changes#

# Undo last commit but keep changes
git reset --soft HEAD~1

4.8. Using GitHub#

4.8.1. Creating Repositories on GitHub#

4.8.2. Basic Collaboration#

4.8.3. Repository Management#

4.9. Integration with VS Code#

4.10. Best Practices for Geospatial Projects#

4.10.1. Repository Structure#

4.10.2. What to Track vs. Ignore#

4.10.3. Commit Message Conventions#

# Format: <type>: <description>
git commit -m "feat: add NDVI calculation for Sentinel-2"
git commit -m "fix: handle NoData values in elevation processing"
git commit -m "docs: update README with installation instructions"

4.11. Key Takeaways#

4.12. Exercises#

4.12.1. Exercise 1: Setting Up Git and GitHub#

4.12.2. Exercise 2: Your First Repository#

4.12.3. Exercise 3: Collaboration and Pull Requests#