Skip to content

tool3/restory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

restory 2.0

βœ… Rewritten in TypeScript.
βœ… Added quiet mode.
βœ… super fast (uses git-filter-repo instead of git filter branch).
βœ… simple and intuitive api.
βœ… standalone - no 3rd party requirements (git-filter-repo included).

Caution

THIS WILL REWRITE YOUR GIT HISTORY!
THIS OPERATION CANNOT BE REVERTED!
USE AT YOUR OWN RISK!

install

npm install -g @tool3/restory

or

npx @tool3/restory <cmd> [args] [options]

things to know:

  • restory uses it's own dist of git-filter-repo
    and therefore doesn't rely on you having it.
  • by default it does NOT remove origin when done rewriting. (unless run with --safe).
  • every restory command recreates the commit|s shas.
  • you need to have a clean working directory.
  • you will have to force push if using the same origin.
  • when run without commit filter flag (-s || -n || -r - see options) - the command will rewrite ALL commits with given input.

api

every command in restory can either set a new value or replace an existing value.
restory <cmd> [optional-subject-to-replace] <value>
see more details for each command below

Command Alias Description
list ls list all commits
redate rd rewrite commit(s) date
reauthor ra rewrite commit(s) author name
remail re rewrite commit(s) author email
remsg rm rewrite commit(s) message
rewrite rw rewrite multiple commit fields. This command is a combination of all of the commands above, and is controlled with flags

options

Option Alias Description Default
sha s rewrite a specific commit sha.
quiet q don't log every commit change. false
safe S remove origin when done rewriting. false
range r range of commits to operate on.
ellipsis e truncate output to minimum width. true
logo l print logo. true
number n number of commits. 0 (all commits)
committer c include committer fields. For example: author_date will also include committer_date in the rewrite. true
git-filter-repo g use git filter-repo instead of git filter-branch. This method is extremely fast compared to filter-branch. true

commands

ls

list all commits

restory ls

list last 5 commits

restory ls -n 5

list range of commits

restory ls -r 'c884ca6' '0b4be21'

redate

rewrite all commits that has 2021 to year to 1984

restory redate 2021 1984

rewrites a specific commit's day

restory redate 'Jan 23' 'Jan 24' -s '0b4be21'

rewrites the last 5 commits date to now

restory redate "$(echo `date`)" -n 5

reauthor

rewrite all commit author names to The Devil

Caution

IMPERSONATION IS STRICTLY PROHIBITED!
ANY IMPERSONATION WILL BE YOUR RESPONSIBILITY!

restory reauthor 'The Devil'

rewrite last 5 commits author to Jebediah Kerman

restory reauthor 'Jebediah Kerman' -n 5

remail

rewrite all commit author and committer email to [email protected]

Caution

IMPERSONATION IS STRICTLY PROHIBITED!
ANY IMPERSONATION WILL BE YOUR RESPONSIBILITY!

restory remail '[email protected]'

remsg

rewrite specific commit message

restory remsg 'this is the new commit msg' -s '620a83b'

rewrite Moon to Mun in all commit messages

restory remsg 'Moon' 'Mun'

rewrite

rewrite commit message and replace date year 1987 to 1988 for the last 3 commits

restory rewrite -m 'this is the new commit msg' -d '1987' '1988' -n 3

rewrite Moon to Mun in all commit messages

restory rewrite -m 'Moon' 'Mun'

rewrite commit message, replace t to z in author name and set email to [email protected] in a range of commits

restory rewrite -m 'new message' -a 't' 'z' -e '[email protected]' -r '8381e6a' '4110655'