Download specific folders from GitHub repositories without cloning the entire codebase
Installation • Usage • Features • Examples • Configuration • Troubleshooting • Contributing • License
Have you ever needed just a single component from a massive repository? Or wanted to reference a specific configuration directory without downloading gigabytes of code? Git-ripper solves this problem by letting you extract and download only the folders you need, saving bandwidth, time, and disk space.
- Selective Downloads: Fetch specific folders instead of entire repositories
- Resume Interrupted Downloads: Automatically resume downloads that were interrupted or failed
- Progress Tracking: Visual progress indicators with file-by-file download status
- File Integrity Verification: Ensures downloaded files are complete and uncorrupted
- Directory Structure: Preserves complete folder structure
- Custom Output: Specify your preferred output directory
- Branch Support: Works with any branch, not just the default one
- Archive Export: Create ZIP archives of downloaded content
- Checkpoint Management: View and manage saved download progress
- Simple Interface: Clean, intuitive command-line experience
- Lightweight: Minimal dependencies and fast execution
- No Authentication: Works with public repositories without requiring credentials
Git-ripper requires Node.js >=16.0.0 due to its use of modern JavaScript features and built-in Node.js modules.
npm install -g git-ripper
This installs Git-ripper as a global command-line tool accessible from anywhere in your terminal.
npx git-ripper <github-folder-url>
Run Git-ripper directly without installation using npx
.
git-ripper https://github.com/username/repository/tree/branch/folder
git-ripper https://github.com/username/repository/tree/branch/folder -o ./my-output-folder
git-ripper https://github.com/username/repository/tree/branch/folder --zip
git-ripper https://github.com/username/repository/tree/branch/folder --zip="my-archive.zip"
Option | Description | Default |
---|---|---|
-o, --output <directory> |
Specify output directory | Current directory |
--zip [filename] |
Create ZIP archive of downloaded content | - |
--no-resume |
Disable resume functionality | - |
--force-restart |
Ignore existing checkpoints and restart | - |
--list-checkpoints |
List all saved download checkpoints | - |
-V, --version |
Show version number | - |
-h, --help |
Show help | - |
# Download React DOM package
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom
# Extract VS Code build configuration
git-ripper https://github.com/microsoft/vscode/tree/main/build -o ./vscode-build-config
# Get Node.js documentation
git-ripper https://github.com/nodejs/node/tree/main/doc -o ./node-docs
# Extract Tailwind components
git-ripper https://github.com/tailwindlabs/tailwindcss/tree/master/src/components -o ./tailwind-components
# Download React DOM package and create a ZIP archive
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom --zip
# Extract VS Code build configuration with custom archive name
git-ripper https://github.com/microsoft/vscode/tree/main/build --zip="vscode-build.zip"
Git-ripper now supports resuming interrupted downloads, making it perfect for large folders or unstable network connections.
# Start a download
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# If interrupted (Ctrl+C, network issues, etc.), simply run the same command again
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# It will automatically resume from where it left off
# Ignore any existing progress and start fresh
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench --force-restart
# Use traditional behavior without resume functionality
git-ripper https://github.com/microsoft/vscode/tree/main/src/vs/workbench --no-resume
# List all saved download progress
git-ripper --list-checkpoints
# Output shows:
# 1. ID: a1b2c3d4
# URL: https://github.com/microsoft/vscode/tree/main/src/vs/workbench
# Progress: 45/120 files
# Last Updated: 2025-06-04T10:30:00Z
- Automatic Progress Saving: Downloads are checkpointed every few files
- File Integrity Verification: Ensures existing files are complete and valid
- Smart Recovery: Detects corrupted or incomplete files and re-downloads them
- Multi-Download Support: Manage multiple concurrent download projects
- Progress Indicators: Visual feedback showing completed vs remaining files
Git-ripper operates in five stages:
- URL Parsing: Extracts repository owner, name, branch, and target folder path
- Resume Check: Looks for existing download progress and validates already downloaded files
- API Request: Uses GitHub's API to fetch the folder structure
- Content Download: Retrieves each file individually while maintaining directory structure and saving progress
- Local Storage or Archiving: Saves files to your specified output directory or creates an archive
The resume functionality uses checkpoint files stored in .git_ripper_checkpoints/
to track download progress, file integrity hashes, and metadata for each download session.
Git-ripper works out of the box without configuration. For rate-limited GitHub API usage, authentication support is under development.
Error: Request failed with status code 403
Solution: GitHub limits unauthenticated API requests. Wait a few minutes and try again.
Error: Invalid GitHub URL format
Solution: Ensure your URL follows the pattern: https://github.com/owner/repo/tree/branch/folder
Error: Path not found in repository
Solution: Verify the folder path exists in the specified branch and repository.
If you encounter problems with resume functionality:
# Clear all checkpoints and start fresh
git-ripper https://github.com/owner/repo/tree/branch/folder --force-restart
# Or disable resume entirely
git-ripper https://github.com/owner/repo/tree/branch/folder --no-resume
If files appear corrupted after resume:
# Force restart will re-download everything
git-ripper https://github.com/owner/repo/tree/branch/folder --force-restart
The resume feature automatically detects and re-downloads corrupted files, but --force-restart
ensures a completely clean download.
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions to Git-ripper are greatly appreciated.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
See the open issues for a list of proposed features and known issues.
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub API for making this tool possible
- Everyone who has provided feedback and suggestions
Made with ❤️ by sairajB
If you find this tool useful, consider sponsoring its development