Rewriting history – changing a single file
In this example, we'll see how we can use Git filter-branch
to remove sensitive data from a file throughout the repository history.
Getting ready
For simplicity, we'll use a very simple example repository. It contains a few files. One of them is .credentials, which contains a username and password. Start by cloning the repository and changing the directory, as shown in the following command:
$ git clone https://github.com/PacktPublishing/Git-Version-Control-Cookbook-Second-Edition_Remove-Credentials.git
$ cd Git-Version-Control-Cookbook-Second-Edition_Remove-Credentials
Before proceeding, you can take a look at the content of the repository using ls
and examine the history with git log
.
How to do it...
- As we need to modify a file when rewriting the history of this repository, we'll use the
tree-filter
option to filter the branch. The.credentials
file looks as follows:
username = foobar
password = verysecret
- All we need to do is remove everything after...