title: Difference between git push origin development and git push origin HEAD:development
body: <p>after some weeks using git as a machine, now I'm on my way to figure out how GIT really works. Than I started with a simple thing:</p>
  
  <pre><code>git checkout -b test origin/development`   //Creating new local branch from development
  
  Create new text file called test.txt
  
  git add . //Set files that will be committed
  git commit -m "this is a test" // Committing
  </code></pre>
  
  <p>And then comes my doubt:</p>
  
  <p>When I try to push doing:</p>
  
  <pre><code>git push origin development
  </code></pre>
  
  <p>The log says: Everything is up to date</p>
  
  <p>If I try to push doing:</p>
  
  <pre><code>git push origin HEAD:development
  </code></pre>
  
  <p>It works as it should. </p>
  
  <p>Doing my research I found that HEAD means the name of the current branch. So, if it is right, it doesn't make any sense to me.</p>
  
  <p>What is the difference between </p>
  
  <pre><code>git push origin development
  </code></pre>
  
  <p>and</p>
  
  <pre><code>git push origin HEAD:development
  </code></pre>