title: Colon in a git file name. Windows developers alarm?
body: <p>Yesterday a coworker running Linux on his laptop pushed to our <strong>master</strong> a set of files with a colon <code>:</code> in their names.</p>
  
  <p>This is a legal file name in Unix world, but others running Windows could not pull anymore. Eclipse cancels the pull as the file name is valid. Git from console pulls the repository but does not allocate those files because of their illegal file name, so I end up with a working copy with missing files.</p>
  
  <p>Before answering "switch to Linux" or "Linux is better than..." please understand that this is indeed an error as our software is normally deployed to both Windows and Linux servers, so including an illegally named file in a war package <strong>will</strong> result in a crash.</p>
  
  <p>Here are my questions:</p>
  
  <ul>
  <li>Is it possible in Git to restrict file naming? For example, SVN <strong>warns</strong> the committer when two files with different casing coexist or a file is renamed in its casing (e.g. <code>Myclass.cs</code> to <code>MyClass.cs</code>). I would like to enforce Windows-style names in files, as Windows is strictly more restrictive than Unix. I don't know about any legal file name that is illegal in Unix world</li>
  <li>Is it dangerous to keep such commit in history? I have successfully asked the committer to revert his change, reset my working copy to a few revisions <em>before</em> that guilty commit, and then pulled. However nobody using Windows will ever be able to pull that revision (not a problem) or <em>probably</em> rebase it interactively in a branch</li>
  </ul>
  
  <p>Yes, I understand it was a mistake to let him push directly to master, as we could easily isolate and obliterate che change if it was in a branch.</p>
  
  <p>Since we have a bunch of active branches that are behind the master and need to be merge-aligned before PR, and need to be merged, I am wondering if it could be a good idea to rebase the master onto itself, force push and let all developers learn their lessons.</p>
  
  <p>As final note, we use <code>Bitbucket Server</code> running on a Linux host and can perform merging using pull requests</p>