git-filter-repo VS git-lfs

Compare git-filter-repo vs git-lfs and see what are their differences.

git-filter-repo

Quickly rewrite git repository history (filter-branch replacement) (by newren)

git-lfs

Git extension for versioning large files (by git-lfs)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
git-filter-repo git-lfs
50 159
7,457 12,492
- 0.9%
0.0 9.0
6 days ago 6 days ago
Python Go
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

git-filter-repo

Posts with mentions or reviews of git-filter-repo. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-12-19.
  • Cleaning Your Git History: Safely Removing Sensitive Data
    2 projects | dev.to | 19 Dec 2023
    **WARNING**: git-filter-branch has a glut of gotchas generating mangled history rewrites. Hit Ctrl-C before proceeding to abort, then use an alternative filtering tool such as 'git filter-repo' (https://github.com/newren/git-filter-repo/) instead. See the filter-branch manual page for more details; to squelch this warning, set FILTER_BRANCH_SQUELCH_WARNING=1. Proceeding with filter-branch... Rewrite a3a48b09e282854c80bf4ad02a017e249e161fd8 (2/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 6e788e83a338e45b348d93d682b32c816ee2fbff (3/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 7a378a0145bce70bea213ca5f9062138544db5f2 (4/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 0637c9659623644cfceb35be10f2a1fe5c468e04 (5/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 6c421eb99adc6b987cff7f3cada31e9313638072 (6/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 98001e5b97270efa4a8ab5bd0452be56dd76883d (7/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Rewrite 2ca4e161a4af2b8f38c46faf848fdbb3e550f23c (8/8) (0 seconds passed, remaining 0 predicted) rm 'config.js' Ref 'refs/heads/secret_keys' was rewritten.
  • (RE not sharing inputs) PSA: "deleting" and committing to git doesn't actually remove it
    2 projects | /r/adventofcode | 9 Dec 2023
    Yup you need https://github.com/newren/git-filter-repo Take a look at https://github.com/newren/git-filter-repo/blob/main/INSTALL.md for instructions
  • How I teach Git
    1 project | dev.to | 26 Nov 2023
    git filter-repo: a third-party command actually, as a replacement to Git's own filter-branch, that allows rewriting the whole history of a repository to remove a mistakenly added file, or help extract part of the repository to another.
  • Merging old repos into a monolithic git repo archive
    1 project | dev.to | 12 Jul 2023
    I needed to archive some old repositories into a monorepo and of course I gave myself the requirement of maintaining git history, in some way. I tried a couple of solutions but it wasn't until I stumbled upon the git-filter-repo project at https://github.com/newren/git-filter-repo and another article which I've since lost (which was badly documented anyway) that I was able to figure out how to do this.
  • Mass edit of .git/objects
    1 project | /r/git | 20 May 2023
    Git objects are not designed to be changed, they are immutable blobs. This is not a problem if you are making a reader, but is a problem when you want to change things, tools like old git-filter-branch or the newer filter repo abstract all reference updating away for you
  • Question about Git LFS
    1 project | /r/gamedev | 4 May 2023
    Make sure your gitignore is setup right (GitHub has a repo of good defaults). If you messed that up, you could rewrite git history to remove the big stuff. Use git-filter-repo. Not sure how that works for LFS.
  • How to open source code from a private monorepo
    3 projects | dev.to | 3 May 2023
    git-filter-repo
  • How to Push Files Over 100MB to GitHub: A Step-by-Step Guide with Git Large File Storage (LFS)
    2 projects | /r/github | 21 Apr 2023
    Check out git filter repo https://github.com/newren/git-filter-repo
  • Large initial push.
    2 projects | /r/git | 6 Apr 2023
    I personally prefer git-bfg ( https://rtyley.github.io/bfg-repo-cleaner/ ) ... though git-filter-repo ( https://github.com/newren/git-filter-repo ) is quite popular. The difference for me was that git-bfg is JVM based and my work machine has Java on it while git-filter-repo is python based... and my work machine is without python.
  • Is there a way to scrub certain info from a repo's history? I wanna make a repo public, but at one point I stored my API client credentials in the code. Presumably that makes it technically unsafe to ever share that repo. What to do?
    2 projects | /r/learnprogramming | 18 Feb 2023

git-lfs

Posts with mentions or reviews of git-lfs. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-04.
  • Git-annex: manage large files in Git without storing the contents in Git
    1 project | news.ycombinator.com | 16 Apr 2024
    What's the difference between this and Git-LFS?

    https://git-lfs.com/

  • Twenty Years Is Nothing
    4 projects | news.ycombinator.com | 4 Mar 2024
  • Aho – a Git implementation in Awk
    8 projects | news.ycombinator.com | 10 Feb 2024
    It doesn't, since Git's data model has to be changed to content-defined chunks to solve the issue.

    You should look at git-lfs[1] instead.

    [1] https://git-lfs.com

  • Launch HN: Diversion (YC S22) – Cloud-Native Git Alternative
    5 projects | news.ycombinator.com | 22 Jan 2024
    Congrats on the HN launch. How does this improve or expand or blow git-lfs[1] out of the water because if I needed large blob file support it's what I would use instead. It offers pointers to the big files to the hosted git instead of pushing around the binaries itself -- though I am speculating since I've not used it myself just read about it online.

    [1] https://git-lfs.com/

  • Ask HN: How do you keep your documentation, how-to, examples and blogs updated?
    1 project | news.ycombinator.com | 15 Dec 2023
    Specifics depend on project types, but literate programming[0] and using/enforcing coding/git/versioning standards helps. re: outdated responses -- email list for 'new/updated version available' with errata/change log location.

    [0] : https://blog.bitsrc.io/literate-programming-a-radical-approa...

    [1] : https://blog.codacy.com/coding-standards

    [2] : https://github.com/git-lfs/git-lfs/blob/main/.github/workflo...

  • Ask HN: Can we do better than Git for version control?
    17 projects | news.ycombinator.com | 10 Dec 2023
    fine with layers: e.g., large binary files via git-lfs (https://git-lfs.com) and merge conflicts in non-textual files by custom merge resolvers like Unity’s (https://flashg.github.io/GitMerge-for-Unity/).

    Perhaps in the future, almost everyone will keep using Git at the core, but have so many layers to make it more intuitive and provide better merges, that what they’re using barely resembles Git at all. This flexibility and the fact that nearly everything is designed for Git and integrates with Git, are why I doubt it’s ever going away.

    Some alternatives for thought:

    - pijul (https://pijul.org), a completely different VCS which allegedly has better merges/rebases. In beta, but I rarely hear about it nowadays and have heard more bad than good. I don’t think we can implement this alternate rebases in Git, but maybe we don’t need to; even after reading the website, I don’t understand why pijul’s merges are better, and in particular I can’t think of a concrete example nor does pijul provide one.

    - Unison (https://www.unison-lang.org). This isn’t a VCS, but a language with a radical approach to code representation: instead of code being text stored in files, code is ASTs referenced by hash and stored in essentially a database. Among other advantages, the main one is that you can rename symbols and they will automatically propagate to dependencies, because the symbols are referenced by their hash instead of their name. I believe this automatic renaming will be common in the future, whether it’s implemented by a layer on top of Git or alternate code representation like Unison (to be clear, Unison’s codebases are designed to work with Git, and the Unison project itself is stored in Git repos).

    - SVN, the other widespread VCS. Google or ask ChatGPT “Git vs SVN” and you’ll get answers like this (https://www.linode.com/docs/guides/svn-vs-git/, https://stackoverflow.com/a/875). Basically, SVN is easier to understand and handles large files better, Git is decentralized and more popular. But what about the differences which can’t be resolved by layers, like lazygit for intuition and git-lfs for large files? It seems to me like even companies with centralized private repositories use Git, meaning Git will probably win in the long term, but I don’t work at those companies so I don’t really know.

    - Mercurial and Fossil, the other widespread VCSs. It seems these are more similar to Git and the main differences are in the low-level implementation (https://stackoverflow.com/a/892688, https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki#....). It actually seems like most people prefer Mercurial and Fossil over Git and would use them if they had the same popularity, or at least if they had Git’s popularity and Git had Mercury or Fossil’s. But again, these VCSs are so similar that with layers, you can probably create a Git experience which has their advantages and almost copies their UI.

  • We Put Half a Million Files in One Git Repository, Here's What We Learned (2022)
    4 projects | news.ycombinator.com | 28 Aug 2023
  • Show HN: Gogit – Just enough Git (in Go) to push itself to GitHub
    8 projects | news.ycombinator.com | 29 Jul 2023
    > I don’t know what that is

    its a standard output from `go doc`, rendered as HTML. if you dont recognize that, then you aren't really in a position to be commenting on the topic. nothing is stopping anyone from pinning to a tag:

    https://github.com/git-lfs/git-lfs/tags

    or even a commit and relying of a specific version of the software. yes upgrades might be painful but a module IS available.

  • Unable to push because of large file deleted in the past
    2 projects | /r/git | 3 Jul 2023
    # git push origin feature-branch /usr/bin/gh auth git-credential get: 1: /usr/bin/gh auth git-credential get: /usr/bin/gh: not found /usr/bin/gh auth git-credential store: 1: /usr/bin/gh auth git-credential store: /usr/bin/gh: not found Enumerating objects: 9228, done. Counting objects: 100% (7495/7495), done. Delta compression using up to 8 threads Compressing objects: 100% (2090/2090), done. Writing objects: 100% (6033/6033), 72.77 MiB | 7.39 MiB/s, done. Total 6033 (delta 4402), reused 5194 (delta 3616) remote: Resolving deltas: 100% (4402/4402), completed with 477 local objects. remote: error: Trace: c1c90b47a5483929dcdd8c974a6c7d0695e86f67f680d8b88b80ef1c1bce74a remote: error: See https://gh.io/lfs for more information. remote: error: File deployment_20200220.sql is 872.78 MB; this exceeds GitHub's file size limit of 100.00 MB remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. To https://github.com/my-org/my-project.git ! [remote rejected] rest-logging -> rest-logging (pre-receive hook declined) error: failed to push some refs to 'https://github.com/my-org/my-project.git'
  • What and Why, Git LFS?
    3 projects | dev.to | 12 Jun 2023

What are some alternatives?

When comparing git-filter-repo and git-lfs you can also consider the following projects:

bfg-repo-cleaner - Removes large or troublesome blobs like git-filter-branch does, but faster. And written in Scala

onedrive - OneDrive Client for Linux

trufflehog - Find and verify secrets

git-fat - Simple way to handle fat files without committing them to git, supports synchronization using rsync

Git - Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documentation/SubmittingPatches procedure for any of your improvements.

Gitea - Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD

josh - Just One Single History

git - A fork of Git containing Windows-specific patches.

gh-action-pypi-publish - The blessed :octocat: GitHub Action, for publishing your :package: distribution files to PyPI: https://github.com/marketplace/actions/pypi-publish

nixpkgs - Nix Packages collection & NixOS

roadmap - GitHub public roadmap

scalar - Scalar: A set of tools and extensions for Git to allow very large monorepos to run on Git without a virtualization layer