Git and GitHub

Git is a source control system intended to allow a team or group to work on the same files and projects simultaneously, and to be able to revert file and project states back to previous versions. GitHub is a Web-based hosting service for software development projects that use the Git revision control system.

Both Git and GitHub are built-in to Zend Studio, so there is no need for further configurations before you begin importing your projects!

 

How do I work with the Git and GitHub plugin?

For more information on Git and GitHub, go to https://github.com/

Git and GitHub vs. CVS or SVN

Git and GitHub operate quite differently compared to other existing version control systems such as CVS and SVN. It is important that you understand these differences before accessing the various functionalities in Zend Studio.

Distributed vs. Centralized System

When you "check-in" or "commit" to SVN or CVS, you are contacting a central repository, synchronizing (merging & resolving) with the centralized versions, creating a change-list, and then sending that change-list back to the centralized repository.  All users use and share the same repository, possibly with branching.  If any two users want to share code, the only way they can do so is by checking into the repository and then each doing a sync.

In Git, when you check out a repository, you are getting a complete clone of the whole thing- all revisions of all files, all the metadata, everything.  You make changes locally, check in (commit) to your local copy of the repository, and then "push" those change-sets to another repository when you want to publish them or share them with other users.  You can also "pull" to synchronize with a remote repository.  Since every repository is equal (they're all complete copies) you can "push" changes anywhere- this is how two or more users can collaborate on a new feature without impacting the centralized repository. These users just issue push/pull operations with each other when they want to share code.  Once they have a working functional improvement, they can then "push" all the relevant change-sets back to the central or production repository.

Storing Metadata vs. Storing Files

Every source control systems stores the metadata of files in hidden folders like .svn, .cvs etc., whereas Git stores entire content inside the .git folder. If you compare the size of .git folder with .svn, you will notice a big difference. The .git folder is the cloned repository in your machine and contains everything that the central repository has like tags, branches, version histories etc.

URL

In SVN or CVS, the URL identifies the location of the repository and the path inside the repository, so you organize the layout of the repository and its meaning. Normally you would have trunk/, branches/ and tags/ directories. In Git, the URL is just the location of the repository, and it always contains branches and tags. One of the branches is the default (normally named master).