Open github-learning-lab[bot] opened 4 years ago
848cd8c2043f6161a4f0043bffee212777281494
Nice, that's the commit that added the .env
file. We'll need to remove the contents of this commit, as well as the commit that removed it from the history.
.env
fileWe can do this with the following commands:
Since we cloned the repository earlier, let's run git checkout master
to put us back on the master branch
Run git pull
to update your local repository with the changes we merged from the contributor's pull request
Run git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch .env" HEAD
to remove the historical reference to the .env
file
Note: There is a lot going on with this command. We won't be diving into everything this command is doing, but it's filtering through the master branch and removing any cached reference to a .env
file.
Next, let's run git push -f
to force push this change to the master branch
Let's now run git log --oneline
to get a list of our modified commit history
Paste your log output into this issue as a comment
0f97168 Merge pull request #9 from falloutkid/add-gitignore
755a160 add ignore file
5582c17 Merge add-wolverine-image into master
1339087 Add wolverine image to game
534b289 Merge pull request #7 from falloutkid/falloutkid-patch-1
7ae7de0 Create SECURITY.md
029aeab Merge pull request #1 from falloutkid/update-dependency
ca12a1a Update package.json
e9ae69a Change package.json file to highlight where dependency update should go
831b1d1 Add empty .gitignore file
78cfef0 Remove .env file
8f08f15 Add .env file
e6e2377 Update README.md and Octocat game
528248c Initial commit
Nice, your log output is no longer showing reference to those previous commits. So, what exactly just happened?
You probably noticed that when you ran the git filter-branch
command, Git did some rewriting to some commits in the repository's history. Since we needed to alter the commits that referenced the .env
file, it altered the commit ID, and all proceeding commits that point back to those commits.
This is why you need to consider local work and branches that are based on this previous history. This is okay to run, as long as everyone contributing in the repository is aware of the situation and can plan accordingly.
Those commits no longer show in the file contents in your repository history. You can see this by navigating to your repository's commit history and clicking on the "Add .env file" commit. Notice that there are now no referenced files or content recorded.
However, we can still access the cached commit if we know the old commit ID: https://github.com/falloutkid/security-strategy-essentials/commit/848cd8c2043f6161a4f0043bffee212777281494
This is where we'll need to contact the amazing GitHub Support team for assistance.
Even though we removed these commits, the historical reference to them can still be found if you know the commit ID. In a real world situation, you'll need to contact GitHub Support to perform the following:
For our situation, we can skip contacting GitHub Support for this example! :smile:
Sensitive data elsewhere in the repository contents
Often sensitive data is buried deep in a repository's history. The process for removing these files and commit data is a bit tricker and more involved.
In our repository's history, there is a reference to a
.env
file with sensitive information. We've since added a.gitignore
to prevent this from happening in the future, but it doesn't modify any previously committed references from the history.There are a few things we need to think about and take into consideration before we start altering our historical content. But for now, let's start with identifying the commit in question by going through our commit history.
Step 12: Find historical reference to a previous
.env
filecommits
link directly under the Code tab.env
fileI'll respond below when you add your comment to this issue.