From: Anjib Mulepati Date: Tue, 27 Mar 2012 21:26:23 GMT Subject: Re: Definition of working directory Message-ID: In-Reply-To: <7vd37yj7h2.fsf@alter.siamese.dyndns.org> So if I have a project called MyProject and inside that I have two sub-directories dir1 and dir2. Does that mean working directory is *ALWAYS* MyProject. Also if i create some file in dir1 and do git status without git add then it display untracked files as ../dir1/ It doesn't display the untracked file name but after I do git add when I did git status it does give me file under changes to be committed. Why didn't it shows file with name as untracked in first case? On 3/27/2012 1:10 PM, Junio C Hamano wrote: > Anjib Mulepati writes: > >> I was reading Git Community Book and came across following definition >> for working directory >> >> The Working Directory >> >> The Git 'working directory' is the directory that holds the current >> checkout of the files you are working on. Files in this directory are >> often removed or replaced by Git as you switch branches - this is >> normal. All your history is stored in the Git Directory; the working >> directory is simply a temporary checkout place where you can modify >> the files until your next commit. >> >> What does it mean by this " Files in this directory are often removed >> or replaced by Git as you switch branches"? > I think the common terminology for the concept the above describes is "the > working tree". > >> And does working directory is just a directory we get with $pwd ? > After you clone, you have one directory that contains all the files from > one specific version in it. The files may be organized into directory > hierarchy, but there is a single top-level directory. > > That is the "working tree". When we want to be absolutely clear, we may > even say "the top of the working tree", even though it may be redundant. > > If you are at such a directory, $(pwd) may match it. If you chdir to a > subdirectory from there, e.g. "cd Documentation", $(pwd) and the top of > the working tree will of course disagree. > > The files checked out in the working tree represent the contents of the > version that was checked out, plus modifications you make locally. When > you check out a different branch (people coming from svn background may > say "switch branch", but it is the same thing), the working tree will need > to represent the contents of the version at the tip of that different > branch. If you have a file in the current branch but not in that > different branch you are checking out, that file has to go away. If you > do not have a file in the current branch but not in that different branch > you are checking out, that file needs to be created in the working tree. > If the contents of a file is different between your current branch and the > branch you are checking out, the file in the working tree needs to be > updated to match that of the branch you are checking out. That is what the > "... are often removed or replaced" part is talking about. > > > >