Git silently overwrote an important untracked file for me today. I have come up with the following transcript to reproduce the issue. In a nutshell, if an untracked file is in .gitignore, a merge from a branch where the file was added will OVERWRITE the untracked file without warning. This doesn't seem right. What do others think? Josh ------------------------------- /s/testgitoverwrite $ mkdir aaa /s/testgitoverwrite $ cd aaa /s/testgitoverwrite/aaa $ echo abc > abc.txt /s/testgitoverwrite/aaa $ ls -l total 1 -rw-r--r-- 1 Joshua Administ 4 Aug 16 23:10 abc.txt /s/testgitoverwrite/aaa $ git init Initialized empty Git repository in s:/testgitoverwrite/aaa/.git/ /s/testgitoverwrite/aaa (master) $ git add abc.txt /s/testgitoverwrite/aaa (master) $ git commit -m "Added abc.txt" [master (root-commit) 0e8bffb] Added abc.txt 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 abc.txt /s/testgitoverwrite/aaa (master) $ cd .. /s/testgitoverwrite $ git clone aaa bbb Cloning into bbb... done. /s/testgitoverwrite $ cd bbb /s/testgitoverwrite/bbb (master) $ ls -l total 1 -rw-r--r-- 1 Joshua Administ 4 Aug 16 23:10 abc.txt /s/testgitoverwrite/bbb (master) $ echo "Important stuff" > important.txt /s/testgitoverwrite/bbb (master) $ git add important.txt /s/testgitoverwrite/bbb (master) $ git commit -m "This file is SO important" [master 2fe9ab6] This file is SO important 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 important.txt /s/testgitoverwrite/bbb (master) $ cd .. /s/testgitoverwrite $ cd aaa /s/testgitoverwrite/aaa (master) $ echo "Local testing copy of important.txt" > important.txt /s/testgitoverwrite/aaa (master) $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # important.txt nothing added to commit but untracked files present (use "git add" to track) /s/testgitoverwrite/aaa (master) $ git pull ../bbb remote: Counting objects: 4, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. From ../bbb * branch HEAD -> FETCH_HEAD Updating 0e8bffb..2fe9ab6 error: Untracked working tree file 'important.txt' would be overwritten by merge. Aborting /s/testgitoverwrite/aaa (master) $ git pull --rebase ../bbb From ../bbb * branch HEAD -> FETCH_HEAD First, rewinding head to replay your work on top of it... error: Untracked working tree file 'important.txt' would be overwritten by merge. could not detach HEAD /s/testgitoverwrite/aaa (master) $ echo important.txt > .gitignore /s/testgitoverwrite/aaa (master) $ git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore nothing added to commit but untracked files present (use "git add" to track) /s/testgitoverwrite/aaa (master) $ cat important.txt Local testing copy of important.txt /s/testgitoverwrite/aaa (master) $ git pull ../bbb From ../bbb * branch HEAD -> FETCH_HEAD Updating 0e8bffb..2fe9ab6 Fast-forward important.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 important.txt /s/testgitoverwrite/aaa (master) $ cat important.txt Important stuff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
