Commit Drop
Pick a commit, get a folder you can upload.
Commit Drop takes any commit in your repository and writes the files it touched into a single folder that mirrors your project's structure — ready to drag onto an FTP client, rsync, or a shared drive. No build step, no full-repo upload, no hand-copying files while cross-referencing a diff.
Why
Plenty of projects still deploy by uploading changed files. Working out which files a fix touched
— and rebuilding the folder tree by hand — is slow and easy to get wrong. Commit Drop does it in
one click, straight from your commit history.
Getting started
- Install the extension and open a folder that is a git repository
- Click the Commit Drop icon in the Activity Bar
- Hover a commit in the Commits view and click the Export button
A deploy/ folder appears at your repository root containing exactly that commit's files, in their
original folder structure. Upload it.
Commits
Your recent commits, newest first.
| Action |
Result |
| Export |
Empties the deploy folder, then writes this commit's files |
| Add |
Merges this commit's files into whatever is already staged |
| Expand a commit |
Shows every file it changed |
| + on a single file |
Adds just that one file |
Deleted files are listed with a trash icon and have no + button — they cannot be exported,
because the commit removed them. The manifest records them so you know what to delete on the target.
Use Export for the first commit and Add for the rest to bundle a multi-commit release into
one upload.
Deploy Folder
A live view of what is currently staged. Click any file to open it and check it before shipping.
The title bar has buttons to reveal the folder in Finder/Explorer, refresh, and clear it.
Using it with Git Graph
Git Graph renders its commit menu inside a webview, so no extension can add entries to it. Commit
Drop bridges the gap through the clipboard:
- In Git Graph, right-click a commit → Copy Commit Hash to Clipboard
- Press Ctrl+Alt+D (Cmd+Alt+D on macOS)
The same works from any source that gives you a hash — a terminal, a pull request, a chat message.
Commands
All available from the Command Palette under the Commit Drop category.
| Command |
Description |
| Export Commit Files to Deploy Folder |
Choose a commit, replace the folder contents |
| Add Commit Files to Deploy Folder (keep existing) |
Choose a commit, merge into the folder |
| Export Commit Files from Clipboard Hash |
Use the hash on the clipboard |
| Reveal Deploy Folder |
Show the folder in the OS file manager |
| Clear Deploy Folder |
Empty the folder, after a confirmation prompt |
| Switch Repository |
Choose which repository the views follow — only listed when the workspace contains more than one repository |
Settings
| Setting |
Default |
Description |
commitDrop.outputFolder |
deploy |
Output folder, relative to the repository root |
commitDrop.clearOutputFolder |
true |
Empty the folder before an Export |
commitDrop.writeManifest |
true |
Write _deploy-manifest.txt alongside the files |
commitDrop.addOutputFolderToGitignore |
true |
Keep the output folder out of git |
commitDrop.revealAfterExport |
true |
Reveal the folder when an export finishes |
commitDrop.commitPickerLimit |
200 |
How many commits to list |
The manifest
Unless you turn it off, each export appends to _deploy-manifest.txt:
commit 9f3c1ab7e4d20c8b5a6f3e1d9c7b2a4e6f8d0c1b
author Paco (2 hours ago)
subject Fix checkout total rounding
exported 2026-08-13T04:58:16.612Z
M app/Services/CartService.php
A app/Support/Money.php
D app/Legacy/PriceHelper.php -- deleted in this commit, not exported
This matters for deleted files: they cannot be exported, so the manifest is your record of what
to remove on the target.
Details worth knowing
- Merge commits are diffed against their first parent, matching what commit graphs display
- Binary files are copied byte for byte
- Renames appear as the new path — the old file shows as deleted in the manifest
- Setting
commitDrop.clearOutputFolder to false makes Export behave like Add
- The output folder is added to
.gitignore the first time it is created
- Nothing is ever pushed, pulled, or written to your working tree; the extension only reads history
Requirements
- git available on your
PATH, or the built-in Git extension enabled
- VS Code 1.90 or newer
Release notes
See CHANGELOG.md.
License
MIT