GhostCommit fills your GitHub contribution graph with backdated commits, randomly distributed across any time range you choose — years, months, weeks, days, or a single specific date. Built to be minimal, stable, and safe to run for hundreds of commits at once without crashing.
________ ___ ___ ________ ____________________
/ _____/ / | \_____ \ / _____/\__ ___/
/ \ ___/ ~ \/ | \ \_____ \ | |
\ \_\ \ Y / | \/ \ | |
\______ /\___|_ /\_______ /_______ / |____|
\/ \/ \/ \/
COMMIT
Author : @MatrixTM26
Version : 3.0
1 ─ Commit by Years
2 ─ Commit by Month
3 ─ Commit by Week
4 ─ Commit by Day
5 ─ Commit on Specific Date
0 ─ Exit
:: Option > 5
~[Date YYYY-MM-DD] > 2024-03-15
~[Commit Count] > 200
Mode: Specific Date (2024-03-15, 200 commits)
[████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒] 20.0% (40/200)
| Option | Mode | Input | Description |
|---|---|---|---|
1 |
Commit by Years | Years count | Spreads commits randomly across the last N years |
2 |
Commit by Month | Month count | Spreads commits randomly across the last N months |
3 |
Commit by Week | Week count | Spreads commits randomly across the last N weeks |
4 |
Commit by Day | Day count | Spreads commits randomly across the last N days |
5 |
Specific Date | YYYY-MM-DD |
Spreads commits across the full 24 hours of a single date |
Specific Date validates the input automatically — invalid formats, non-existent dates (e.g. Feb 30), and future dates are all rejected with a re-prompt until a valid date is entered.
| Git installed and configured with user name and email | |
| Node.js version 18 or higher | |
| A remote repository with push access |
git clone https://github.com/MatrixTM26/GhostCommit.git
cd GhostCommit
npm init -yOpen package.json and set:
"type": "module"node GhostCommit.jsGhostCommit will prompt you to choose a mode, enter the range or date, and the number of commits. It then generates all commits with backdated timestamps, displays a live progress bar, and pushes everything once it finishes.
Open GhostCommit.js and edit the Config object at the top of the file:
const Config = {
TotalCommits: 1000,
DataFile: "./data.json",
RetryAttempts: 3,
PushAfterAll: true
};| Key | Default | Description |
|---|---|---|
TotalCommits |
1000 |
Default commit count shown as fallback when input is empty |
DataFile |
./data.json |
File that gets modified and staged on each commit |
RetryAttempts |
3 |
How many times to retry a failed commit before skipping |
PushAfterAll |
true |
Push all commits to remote at the end in one go |
GhostCommit/
├── GhostCommit.js — main script
├── data.json — auto-generated, committed each run
├── package.json
└── README.md
- Added Commit by Week mode
- Added Commit by Day mode
- Added Commit on Specific Date mode with full input validation
- Refactored menu dispatch to handler map — no more if-else chains
- Each mode isolated into its own handler function
- Added Commit by Month mode
- Live progress bar with percentage and counter
- Retry mechanism per commit
- Auto push after all commits finish
©
Copyright 2023-2026
@MatrixTM26
·
All rights reserved.
Licensed under
AGPL-V3