Subject: Re: New to Git / Questions about single user / multiple projects

From: Jakub Narebski <[email-masked]>
Date: Wed, 19 Aug 2009 00:59:42 -0700 (PDT)

"Rob (gmail)" <[email-masked]> writes:

> I'm new to git and have some (I think) basic questions that I have
> not been able to find answers to in the documentation.  It's very
> possible that these are the result of my lack in understanding git /
> version control, so feel free to point me to documentation that
> might contain the answers.

Documentation you might want to read: 

* "Git User's Manual", distributed with Git (installed at least on
  Linux at $sharedir/doc/git-$version/user-manual.html), also at
  http://www.kernel.org/pub/software/scm/git/docs/user-manual.html

* "The Git Community Book", available at
  http://book.git-scm.com/

* "Pro Git.  Professional version control", available at
  http://progit.org/book/

> Q1:
> Can I create a single repository (project?) for all my code, knowing
> that there are multiple small, unrelated projects. Or should I create
> a new repository for each project ?

You should create a new repository for each project.  In git each
commit is about state of whole repository.

If you have single unrelated files, you might want to consider using
Zit tool (see http://git.or.cz/gitwiki/InterfacesFrontendsAndTools for
details), but beware that it is in early stages of development.

(Although if you choose one big repository, you can split it later
with some effort using git-filter-branch (or git-split somewhere in
mailing list archives) if you didn't publish your repositories).
 
> Q2:
> After initalizing my repository, and comitting the 1st batch of code:
> When further working on the code, will the command "git add ." add all
> changed and new files ? Or do I specifically need to list the new
> files ?

"git add ." would add _all_ new not ignored files, and would stage all
changed files.  But you would have to be sure that all files you don't
want to be comitted, like generated files (*.o, *.log,...) and backup
files of your editor (*~ or *.bak), are ignored using .gitignore
(usually for generated files) and .git/info/excludes or
core.excludesFile (usually for specific patterns like backup files).

> Q3: Can I run 'git add x' in any subdirectory, or do I need to issue
> if from the root of the project ?

Most git commands take subdirectory they are in into consideration
when acting.  "git add <filename>" in subdirectory works as expected.

Note that some commands need to have '.' as filename / pattern to be
limited to current subdirectory / act on current directory.

> --
> When in trouble or in doubt, run in circles, scream and shout

:-)

-- 
Jakub Narebski
Poland
ShadeHawk on #git