From: Dirk Süsserott Date: Thu, 05 Jan 2012 19:33:25 GMT Subject: Re: checkout on an empty directory fails Message-ID: <4F05FB05.3090706@dirk.my1.cc> In-Reply-To: <4F05ACD6.6040603@ira.uka.de> Am 05.01.2012 14:59 schrieb Holger Hellmuth: > On 05.01.2012 13:38, René Doß wrote: >> git status says not special informations. > > versus > >> red@linux-nrd1:~/iso/a> git status >> # On branch master >> # Changed but not updated: >> # (use "git add/rm ..." to update what will be committed) >> # (use "git checkout -- ..." to discard changes in working >> directory) >> # >> # deleted: SP601_RevC_annotated_master_ucf_8-28-09.ucf >> # deleted: rtl/ether_speed.vhd >> # deleted: rtl/ether_top.vhd >> # deleted: rtl/ether_tx.vhd >> # deleted: rtl/takt.vhd >> # deleted: sim/makefile >> # deleted: sim/tb_ether_top.vhd >> # > > This *is* special information: It tells you that master has those 7 > files but your working directory has none of them (i.e. it is as if you > had deleted them from your working directory). > > "git checkout " switches between branches, *but* leaves changes > you made (files you edited, added or deleted) intact! This is so you can > switch branches before commiting if you suddenly realize you are in the > wrong branch. > > "git checkout -- " or in your case "git checkout -- ." is > different, it really overwrites the files in your working dir with the > versions stored somewhere else, by default from the index. > >> What means the point in checkout? > > "." is simply your current directory Another way of reviving the deleted files and restore the master branch is $ git checkout -f master # or git checkout --force master This will unconditionally checkout master and overwrite the local changes, including the deletions Holger mentioned. For me, "checkout --force" is more intuitive than "reset --hard" or "checkout .". Dirk