The problem
Repository copies involve a choice between starting fresh and retaining complete history, with risks around unexpected changes.
A normal Git clone does not recreate every GitHub-side setting or release artifact, and a fresh public copy may intentionally need a clean provenance boundary.
The underlying question is not simply whether the project can perform a task, but how that task can remain understandable, repeatable, and safe as conditions change.
The solution
Offer deliberate Snapshot and FullHistory modes alongside preview plans and safety checks.
Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.
Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.
Who it's for
Repository maintainers migrating projects or creating controlled copies.
A practical fit is a reader or maintainer who wants a defined workflow and documented boundaries rather than an unexplained one-off operation.
Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.
How it works
Key capabilities and concepts. See the project documentation or source code for implementation details.
Snapshot mode creates a clean copy; FullHistory preserves history
Snapshot mode creates a clean copy; FullHistory preserves history.
Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.
Preview plans before making repository changes
Preview plans before making repository changes.
Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.
Built-in checks help avoid unsafe copy operations
Built-in checks help avoid unsafe copy operations.
Use Snapshot for clean publication, FullHistory where ancestry matters, and plan-only mode before any move that could affect an existing destination.
Design decisions that matter
- Make history preservation an explicit choice.
Make history preservation an explicit choice.
Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.
- Expose the intended operation before execution.
Expose the intended operation before execution.
A normal Git clone does not recreate every GitHub-side setting or release artifact, and a fresh public copy may intentionally need a clean provenance boundary.
- Prefer safety checks to surprising repository changes.
Prefer safety checks to surprising repository changes.
Review a non-mutating plan, choose Snapshot or FullHistory, and explicitly execute the approved operation. Optional releases and GitHub Pages restoration have separate opt-in behavior and verification boundaries.
Explore the implementation
The repository and published documentation describe available commands, requirements, and current behavior.
Safety and recoverability matter more than silently copying every possible property. Secrets, external DNS, and some GitHub-side features are deliberately outside the migration scope.
For exact current usage, prerequisites, and release status, consult the source repository and published documentation.
Related articles
Engineering context and lessons behind this project.
Copy GitHub Repo – Clean Snapshots Without Carrying History ↗
Why a clean Snapshot migration differs from preserving full Git history.
CopyGitHubRepo v0.1.0 Released to the PowerShell Gallery ↗
Initial stable release and PowerShell Gallery publication.
CopyGitHubRepo v0.2.0: Preserving GitHub Releases During Repository Migration ↗
Adding opt-in GitHub Release and asset preservation for FullHistory migrations.
CopyGitHubRepo v0.3.0: Keep the Releases, Leave the History Behind ↗
Preserving selected release milestones while creating a clean snapshot history.
CopyGitHubRepo v0.4.0: Migrating GitHub Pages Without Guessing ↗
Opt-in Pages restoration, custom-domain handoff, verification, and recovery evidence.