Book Image

Git Version Control Cookbook

Book Image

Git Version Control Cookbook

Overview of this book

Table of Contents (19 chapters)
Git Version Control Cookbook
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

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...

  1. 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
    
  2. 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/'
    
  3. We can now run the filter branch with the following command:

    $ git filter-branch --prune...