title: Bash git alias tab completion error
body: <p>I know Git aliases can be used with arguments <a href="https://git.wiki.kernel.org/index.php/Aliases#Advanced_aliases_with_arguments" rel="nofollow">Git Faq section "Git Aliases with argument"</a>.</p>
  
  <p>But today I encountered an error. </p>
  
  <p>Take an <strong>easy example</strong> which is <strong>not suitable for real use</strong>. If I make an alias like this:</p>
  
  <pre><code>[alias]
      lo = "!sh -c 'git log $1' -"
  </code></pre>
  
  <p>then I can use </p>
  
  <pre><code>git lo file_a
  </code></pre>
  
  <p>to see the log of file_a.</p>
  
  <p>But when I used "tab" to auto-complete the path, the following error occurs.</p>
  
  <pre><code>git lo [tab]
  </code></pre>
  
  <p>error msg:</p>
  
  <pre><code>sh: declare: `_git_{': not a valid identifier
  </code></pre>
  
  <p>It seems a bug in git-completion.bash. But I can't find where the `_git_{' is!</p>
  
  <p>Also I find that in the error msg the quote mark around _git_{ seems strange.</p>
  
  <p>BTW, my msysgit version is 1.7.6-preview20110708</p>
  
  <p><strong>ADD:</strong></p>
  
  <p>The other <strong>strange</strong> thing is, I searched <strong>all files</strong> under the dir of Git, find there is no file contains the string <strong>_git_{</strong>.</p>