title: Discard local change on Git without using gitignore, checkout or reset HEAD
body: <p>My public project (that others are going to clone and use) has a config file. Right now this config file is a template file on the remote repo, which means anyone who clones the project can easily configure it for themselves. However, while developing the project, I need to configure this file for my own system. Naturally I don't want these local configuration to be committed to the remote origin. How can I commit the changes of other files but ignore the changes of this particular config file?</p>
  <p>I don't want to use .gitignore, since generally speaking this file should be tracked (I might need to add more configurations to the template later, or someone who forks the repo might).</p>
  <p>I also don't want to use <code>git checkout -- &lt;filename&gt;</code> on the file or <code>git reset HEAD &lt;filename&gt;</code> since I want to keep my changes to the file.</p>