git-replay - Linux


Overview

git-replay replays a recorded Git history as a series of new commits, creating a new history that diverges from the original. This is useful for experimentation or reconstructing a sequence of commits based on a recorded history.

Syntax

git replay [<options>] <recorded-history> [<target>]

Options/Flags

-a, –auto-squash
Automatically squash commits with identical contents.

-c, –continue
Continue replaying from the last commit even if it was already replayed.

-d, –dry-run
Print what would be done without actually replaying.

-f, –force
Skip checks for conflicts and potentially dangerous operations.

-F, –fixup
Mark replayed commits as fixup commits.

-m, –message
Specify a commit message for replayed commits.

-p, –patch
Replay the recorded history as a patch series.

-q, –quiet
Suppress all output except errors.

–recreate-missing-parents
Recreate missing parents for replayed commits.

-s, –signoff
Sign-off replayed commits.

-t, –target
Specify a branch or commit to replay the history onto.

Examples

Basic usage: Replay the recorded history in the file history.git onto the main branch:

git replay -t main history.git

Advanced usage: Replay the recorded history as a patch series and mark replayed commits as fixup commits:

git replay -p -F recorded-history.git origin/main

Common Issues

Conflicts during replay: Resolve conflicts manually or use the --force option at your own risk.

Incorrect history: Ensure the recorded history is valid and matches the target branch.

Integration

Using scripts: Create scripts that automate the replay process for specific scenarios.

Combining with other Git commands: Integrate git-replay into larger workflows involving cherry-picking, rebasing, or merging.

Related Commands

  • git-cherry-pick
  • git-rebase