42

I'm attempting to use git-filter-repo to remove large binaries from my repository. I have not used python before. I installed the latest python by clicking on the downloaded .exe file as that is a requirement of git-filter-repo. The instructions say:

git-filter-repo is a single-file python script, which was done to make installation for basic use trivial: just copy it into your $PATH

https://github.com/newren/git-filter-repo/#how-do-i-install-it

I have tried opening the git-filter-repo.py with the python application. I also can't use cd, ls, or dir in the python application.

2
  • 1
    The repo's INSTALL.md says to use your package manager, and lists a version for Ubuntu 20.04. I tried APT with no luck.
    – ndemarco
    Jul 6, 2021 at 15:21
  • For Windows installation, these steps may help.
    – TTT
    May 20 at 21:22

4 Answers 4

37

pip install

They now have a python package that just works:

python3 -m pip install --user git-filter-repo

That method installs both the command line executable, and the Python library which you can use as shown here.

The executable is named git-filter-repo, and Git automatically picks up any executable in PATH with name git-* on calls like git *, which is how this works.

Alternatively, if for some reason you don't want to use pip, you can also:

# Add to bashrc.
export PATH="${HOME}/bin:${PATH}"

mkdir -p ~/bin
wget -O ~/bin/git-filter-repo https://raw.githubusercontent.com/newren/git-filter-repo/7b3e714b94a6e5b9f478cb981c7f560ef3f36506/git-filter-repo
chmod +x ~/bin/git-filter-repo

Tested on Ubuntu 20.04, git-filter-repo ac039ecc095d.

8
  • 3
    I installed the package with pip in windows, but still get "git: 'filter-repo' is not a git command."
    – krenkz
    Oct 6, 2020 at 18:01
  • 1
    @krenkz hi, this describes how Git finds stuff: gitirc.eu/howto/new-command.html Can you make sure that git-filter-repo it is either on PATH, or manually create a symlink in git -exec-path as mentioned at: superuser.com/a/1563783/128124 ? In Linux it just works because it goes to PATH. Oct 6, 2020 at 19:25
  • 1
    I eventually just added git-filter-repo's location to the PATH and changed its first line to '#!/usr/bin/env py' and now it works fine - all done manually. Thanks!
    – krenkz
    Oct 6, 2020 at 20:08
  • git filter-repo is a git command that tries to execute git-filter-repo. This will look for git-filter-repo in your $PATH (and other usual suspects?). Installing with pip may not put git-filter-repo.py into a place where git looks or may not make it executable.
    – CervEd
    Sep 26, 2021 at 18:27
  • @CervEd do share OS and OS version if you came across a system where that happens Sep 26, 2021 at 19:15
10

This is how I got it to work.

  1. Python should be installed and added to the system's path.
  2. Git should be installed and git also added to the system's path.
  3. Download git-filter-repo
  4. Replace 'python3' on first line of file called git-filter-repo with 'python'. Depending on your python installation, you may skip this step.
  5. Call git --exec-path
  6. Move the git-filter-repo file into that location shown. (git's path).
  7. To use, type git filter-repo. The help option will not work, but they have documentation online.
8

On a Mac, you can install it using homebrew:

$ brew install git-filter-repo

3

On a Mac, I simply downloaded https://github.com/newren/git-filter-repo/blob/main/git-filter-repo into my ~/local/bin (which was already on my path and where I keep all my batch files etc). After chmod +x git-filter-repo, I just ran it from my repo dir like: git-filter-repo --path mydir.

2
  • This was much easier than installing homebrew.
    – Paul Lynch
    Feb 28 at 1:02
  • nice one. on linux i had to put the file in the same directory given by git --exec-path
    – Paolo
    Apr 22 at 10:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.