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 among 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/dvaske/remove-credentials.git $ cd remove-credentials
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 branch. The.credentials
file looks as follows:username = foobar password = verysecret
All we need to do is to remove everything after the equals sign on each line of the file. We can use the following
sed
command to do this:sed -i '' 's/^\(.*=\).*$/\1/'
We can now run the filter branch with the following command:
$ git filter-branch --prune...