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 — with anything you have not committed yet sitting above them.
| Row |
What it holds |
| Staged Changes |
Everything in the index — what a commit would contain right now |
| Unstaged Changes |
Working tree edits you have not staged, plus untracked files |
| A commit |
The files that commit touched |
The two pending rows appear only when they are non-empty, and they carry the same buttons as a
commit, so a hotfix can go out before it is committed.
| Action |
Result |
| Export |
Empties the deploy folder, then writes that row's files |
| Add |
Merges that row's files into whatever is already staged |
| Expand a row |
Shows every file in it |
| + on a single file |
Adds just that one file |
Staged files are read from the index and unstaged files straight off disk, so what lands in the
deploy folder is exactly what the row shows.
Deleted files are listed with a trash icon and have no + button — they cannot be exported,
because the file is gone. The manifest records them so you know what to delete on the target.
Use Export for the first row 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 Files to Deploy Folder |
Choose a commit or pending set, replace the folder contents |
| Add Files to Deploy Folder (keep existing) |
Choose a commit or pending set, 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 |
The first two open a picker listing Staged Changes and Unstaged Changes (when they have
files) above your recent commits.
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.
Exports of pending work are headed staged changes (not committed) or
unstaged working tree changes (not committed) instead of a commit line.
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
- Untracked files follow
.gitignore, so ignored build output never gets exported
- 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, committed, or written to your working tree; the extension only reads
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