Code

Teach the revision walker to walk by reflogs with --walk-reflogs
[git.git] / git-checkout.sh
index 66e40b90ebfa8e65e9c42731203f10dde0424b8c..e02d4d87f622bf73ad04c356ff15ac6e0a626aa6 100755 (executable)
@@ -201,8 +201,9 @@ else
        git diff-files --name-only | git update-index --remove --stdin &&
        work=`git write-tree` &&
        git read-tree --reset -u $new &&
-       git read-tree -m -u --aggressive --exclude-per-directory=.gitignore $old $new $work ||
-       exit
+       eval GITHEAD_$new=${new_name:-${branch:-$new}} GITHEAD_$work=local &&
+       export GITHEAD_$new GITHEAD_$work &&
+       git merge-recursive $old -- $new $work || exit
 
        if result=`git write-tree 2>/dev/null`
        then