https://github.com/sleavely/git-skew
Change dates of commits 🕔⇆🕤
https://github.com/sleavely/git-skew
cli-app git
Last synced: 2 months ago
JSON representation
Change dates of commits 🕔⇆🕤
- Host: GitHub
- URL: https://github.com/sleavely/git-skew
- Owner: Sleavely
- License: mit
- Created: 2022-02-11T17:03:06.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-06T14:23:55.000Z (about 3 years ago)
- Last Synced: 2025-04-07T20:13:00.277Z (about 1 year ago)
- Topics: cli-app, git
- Language: JavaScript
- Homepage:
- Size: 97.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# git-skew
A tool for manipulating Git history by changing one or more commits' `GIT_AUTHOR_DATE` and `GIT_COMMITTER_DATE` either relative to itself or to a fixed point in time.
🕔⇆🕤
## Installation
```sh
npm install -g git-skew
```
## Usage
```
git-skew [--absolute | --relative[-reverse] ] [--verbose] [--dry-run]
Options
--absolute
Absolute date to set the matching commits to in ISO8601 format.
--relative
Moves commits forward in time relative to the original commit date.
Example: --relative 1d2h
--relative-reverse
Like --relative but moves backwards in time.
--verbose
Prints helpful information on what is happening.
--dry-run
Prints the things that would happen but does not modify the Git repository.
--help
Displays this message.
```
The `commitOrRange` argument follows the [semantics of Git Revision Selection](https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection), but must be quoted if it contains any spaces.
> ❗ We strongly advice that you always try your git-skew commands with the `--dry-run` flag to avoid accidentally changing the history of your entire repository.
### Single commit by hash
If you know the SHA1 of the commit - or at least the short version - and want to change its datetime to a known point in time.
```
git-skew 70bd49b --absolute 2025-01-01T12:00:00Z
```
### The latest commit
This will update a range of commits to have been committed 1 hour later. It targets everything _after_ `HEAD~1` up to, and _including_, `HEAD`.
```
git-skew HEAD~1..HEAD --relative 1h
```
### Commits made after a certain time
Targets the main branch, starting with commits made after 6pm.
```
git-skew 'main@{"Today 6pm"}..HEAD' --relative 1h
```