What is the best way to learn for
beginner?
How do you upload updated project from
local machine to live website to a
different server, how that be done
from subversion / git? and reupload to
new version again?
With version control, you have a central repository and one or more working copies (git adds in a local repository at every working copy to allow distributed storage/management).
In your case, your live website and your development copy are both working copies - you checkout from the central repository to each of these locations. You then work on the development copy, and commit those changes to the central repository. Once you are ready to release, you simply perform an update on the live working copy which pulls all the changes from the central repository.
Can 2 or 3 people work on the same
project at the same time? do they load
the code files from the server?
wouldn't it conflict each other...
like they had removed the class
objects, functions, etc.
Yes - each person has a working copy which they make changes to.
Conflicts are likely, and will happen from time to time - but SVN and Git can deal with a lot very easily. For example, changes to code in different places of the same file are simply merged in. Changes to code at the same place in the same file will typically require manual intervention.
Perhaps the worst conflicts that can occur are what SVN calls 'tree conflicts' - changes in the folder structure. This can be a real PITA to fix - but you have to really go out of your way to cause them.
That said, the potential for conflicts (and difficulty in resolving them) in non-version controlled environments is far, far greater.
There are some practices which help prevent major conflicts from occurring:
- Modular code
- Clear delineation of work - stop programmers treading on each others toes
- Update your local copy before committing
- Commit small, commit often - how small? Hard to say, you start to get a feel for this... but think in terms of functions and functionality.
I think Git is probably better to start with if you don't use anything else already - the distributed system means that you are more able to resolve conflicts at the local level before pushing up to the central repository. All of my projects are use SVN (at the office and at home), but I'm starting to use Git through the Drupal project, and like what I've seen so far.