{"slug": "git-filter-repo", "name": "git-filter-repo", "category": "git", "category_name": "Git and code hosting", "description": "", "recommenders": 3, "commenters": 3, "warners": 0, "score": 2.88, "rising": 1.67, "first": "2026-07-01", "latest": "2026-10-01", "why": "Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 0, "compare": 0, "warn": 0}, "spark": [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1], "listed": true, "loved": [], "caveat": "", "short_quote": "Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job", "kind": "", "icon": false, "domain": null, "github_repo": "github.com/newren/git-filter-repo", "official_url": "https://github.com/newren/git-filter-repo", "pricing": "", "aliases": ["git-filter-repo"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 798797008, "item_id": 49924813, "url": "https://news.ycombinator.com/item?id=49924813", "by": "oasisaimlessly", "date": "2026-10-01", "stance": "recommend", "quote": "git-filter-repo actually does it by default", "excerpt": "Tools like git-filter-repo[1] support rewriting commit hashes in commit messages. git-filter-repo actually does it by default; see `--preserve-commit-hashes` in the manual[2]. [1]: https://github.com/newren/git-filter-repo [2]: https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html", "context": "", "use_case": "Git history rewriting", "switched_from": "", "story": "Git 3.0's upcoming SHA-256 default will be a costly mistake"}, {"id": 795992192, "item_id": 49749512, "url": "https://news.ycombinator.com/item?id=49749512", "by": "plastic041", "date": "2026-09-18", "stance": "recommend", "quote": "If you need to remove sensitive data, you should use tools like git-filter-repo.", "excerpt": "> Also Bend's stars came on the V1 launch. This is V2. It already had 20k before. This is the reason you should not reomve your commit history. How would anyone know that there were V1, and it was already popular? If you need to remove sensitive data, you should use tools like git-filter-repo. - https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository - ", "context": "", "use_case": "Removing sensitive data from history", "switched_from": "", "story": "Bend \u2013 a language that blocks AI mistakes via proof and runs on GPUs"}, {"id": 779908993, "item_id": 48744312, "url": "https://news.ycombinator.com/item?id=48744312", "by": "nbobko", "date": "2026-07-01", "stance": "recommend", "quote": "Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job", "excerpt": "At my previous company we tried to use this tool to sync parts of the code between two different git repos. The tool turned out being unacceptably slow. Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job [1]: https://github.com/newren/git-filter-repo", "context": "", "use_case": "syncing code between git repos", "switched_from": "Copybara", "story": "Google copybara: moving code between repositories"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["git history rewriting", "removing sensitive data from history", "syncing code between git repos"], "compared": [{"slug": "copybara", "name": "Copybara", "co": 1, "switched_from": 1, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=49924179", "title": "Git 3.0's upcoming SHA-256 default will be a costly mistake", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49746163", "title": "Bend \u2013 a language that blocks AI mistakes via proof and runs on GPUs", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48740698", "title": "Google copybara: moving code between repositories", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {}, "2026-01": {}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 1}, "2026-08": {}, "2026-09": {"recommend": 1}, "2026-10": {"recommend": 1}}, "quotes": [{"id": 798797008, "item_id": 49924813, "url": "https://news.ycombinator.com/item?id=49924813", "by": "oasisaimlessly", "date": "2026-10-01", "stance": "recommend", "quote": "git-filter-repo actually does it by default", "excerpt": "Tools like git-filter-repo[1] support rewriting commit hashes in commit messages. git-filter-repo actually does it by default; see `--preserve-commit-hashes` in the manual[2]. [1]: https://github.com/newren/git-filter-repo [2]: https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html", "context": "", "use_case": "Git history rewriting", "switched_from": "", "story": "Git 3.0's upcoming SHA-256 default will be a costly mistake"}, {"id": 795992192, "item_id": 49749512, "url": "https://news.ycombinator.com/item?id=49749512", "by": "plastic041", "date": "2026-09-18", "stance": "recommend", "quote": "If you need to remove sensitive data, you should use tools like git-filter-repo.", "excerpt": "> Also Bend's stars came on the V1 launch. This is V2. It already had 20k before. This is the reason you should not reomve your commit history. How would anyone know that there were V1, and it was already popular? If you need to remove sensitive data, you should use tools like git-filter-repo. - https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository - ", "context": "", "use_case": "Removing sensitive data from history", "switched_from": "", "story": "Bend \u2013 a language that blocks AI mistakes via proof and runs on GPUs"}, {"id": 779908993, "item_id": 48744312, "url": "https://news.ycombinator.com/item?id=48744312", "by": "nbobko", "date": "2026-07-01", "stance": "recommend", "quote": "Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job", "excerpt": "At my previous company we tried to use this tool to sync parts of the code between two different git repos. The tool turned out being unacceptably slow. Handwritten bash scripts using git-replace and git-filter-repo [1] did a much better job [1]: https://github.com/newren/git-filter-repo", "context": "", "use_case": "syncing code between git repos", "switched_from": "Copybara", "story": "Google copybara: moving code between repositories"}]}