Git: remove files from repository only

This is a translated and adapted version of the original article (German).

There are situations when you want to delete files or directories in the repository only, e.g. when they are added to .gitignore.

The classic git rm would delete files from the working tree or local file system, too. The solution is the option --cached.

When you want to delete a file (e.g. file_to_delete) from the repository only you can use the command

The command for directories looks similar (except you need the -r option):

Don’t forget to commit and push.

Pro-Tip: if you want to delete all files matching the .gitignore fromt the repository you can use

Source: 1, 2, Git logo: Jason Long (CC-BY)

Git: Dateien nur aus Repository löschen

Unter Git kann es die Situation geben, dass eine Datei oder ein Verzeichnis nur aus dem Repository gelöscht werden soll, z.B. wenn sie/es in die .gitignore aufgenommen wurde.

Das klassische git rm würde auch die Datei aus dem Working Tree bzw. lokalen Dateisystem löschen. Abhilfe schafft die Option --cached.

Soll nun z.B. eine Datei namens file_to_delete im Repository gelöscht werden, wird dies mit dem Kommando

erledigt. Soll das gleiche mit einem Verzeichnis passieren, hilft das Kommando

Commit und Push natürlich danach nicht vergessen.

Pro-Tipp: soll aufgeräumt und alle Files, die mit der .gitignore matchen, nur im Repository gelöscht werden, kann folgendes Kommando genutzt werden

Quelle: 1, 2, Git logo: Jason Long (CC-BY)