title: How to properly apply a patch with moved/renamed files using Git
body: <p>I'm trying to properly create and apply patches using Git:</p>
  
  <ol>
  <li>I created a new git project, with two files: <code>first.txt</code> and <code>second.txt</code></li>
  <li>I create a branch</li>
  <li>In this new branch, I modify the content of both files and commit</li>
  <li>I move the file <code>second.txt</code> to <code>folder\second_moved.txt</code> and commit</li>
  </ol>
  
  <p>Now I create a patch with <code>git format-patch master --stdout &gt; changes.patch</code>.</p>
  
  <p>Here is the content of <code>changes.patch</code>:</p>
  
  <pre><code>From cb2a85ff9a0bc36d4f04fbe72068ae9ec3a9bcb0 Mon Sep 17 00:00:00 2001
  From: 
  Date: Mon, 29 Sep 2014 20:46:18 -0400
  Subject: [PATCH 1/2] changes
  
  ---
   fist.txt   | 2 +-
   second.txt | 2 +-
   2 files changed, 2 insertions(+), 2 deletions(-)
  
  diff --git a/fist.txt b/fist.txt
  index d4b4f36..b5d9ba4 100644
  --- a/fist.txt
  +++ b/fist.txt
  @@ -1 +1 @@
  -first file
  \ No newline at end of file
  +first file foobar
  \ No newline at end of file
  diff --git a/second.txt b/second.txt
  index 0f8bbfe..54e687e 100644
  --- a/second.txt
  +++ b/second.txt
  @@ -1 +1 @@
  -second file
  \ No newline at end of file
  +second file barfoo
  \ No newline at end of file
  -- 
  1.8.4.msysgit.0
  
  
  From 09c868828cf30fba36ba04cbd476dfcb0f68f79c Mon Sep 17 00:00:00 2001
  From: 
  Date: Mon, 29 Sep 2014 20:47:15 -0400
  Subject: [PATCH 2/2] moved
  
  ---
   folder/second_moved.txt | 1 +
   second.txt              | 1 -
   2 files changed, 1 insertion(+), 1 deletion(-)
   create mode 100644 folder/second_moved.txt
   delete mode 100644 second.txt
  
  diff --git a/folder/second_moved.txt b/folder/second_moved.txt
  new file mode 100644
  index 0000000..54e687e
  --- /dev/null
  +++ b/folder/second_moved.txt
  @@ -0,0 +1 @@
  +second file barfoo
  \ No newline at end of file
  diff --git a/second.txt b/second.txt
  deleted file mode 100644
  index 54e687e..0000000
  --- a/second.txt
  +++ /dev/null
  @@ -1 +0,0 @@
  -second file barfoo
  \ No newline at end of file
  -- 
  1.8.4.msysgit.0
  </code></pre>
  
  <p>Now, I move back to my master branch and apply the patch with <code>git apply changes.patch</code>. There is no error.</p>
  
  <p>Here is the result of <code>git status</code>:</p>
  
  <pre><code># On branch master
  # Changes not staged for commit:
  #   (use "git add &lt;file&gt;..." to update what will be committed)
  #   (use "git checkout -- &lt;file&gt;..." to discard changes in working directory)
  #
  #       modified:   fist.txt
  #       modified:   second.txt
  #
  # Untracked files:
  #   (use "git add &lt;file&gt;..." to include in what will be committed)
  #
  #       changes.patch
  #       folder/
  no changes added to commit (use "git add" and/or "git commit -a")
  </code></pre>
  
  <p>As you can see, I still have the file <code>second.txt</code>. I'm not expecting this, but I expect it should have been removed as it's been moved in <code>folder</code>. In <code>folder</code>, I actually get the file <code>second_moved.txt</code>. Both files' content has been correctly modified by <code>git apply</code>.</p>
  
  <p>As I'm expecting to use git to generate and apply patches to branches of code that will be largely refactored, I cannot afford to manually track and delete all files that have been changed, then moved or renamed. How can I avoid this?</p>