Coming from Subversion, the extra steps involved in working with a Git repository can be confusing. Here are some basic concepts and commands to get started with Git.
I find that actually doing something is the best way for me to understand. If you’re the same way, the Github tutorial by Code School is great.
There are a couple conceptual differences between Git and Subversion that it helps to understand before getting started.
Centralized vs Distributed
Subversion is centralized version control — every commit lives on a central server. Git is distributed version control — everybody has a copy of the repository. When you commit to subversion, the push to the central server is implicit. The commit and push are discrete actions in Git. This means you can do work and commit changes without necessarily being connected to the Git server. Another advantage is the ability to make commits locally without necessarily publishing your work.
File vs Change-based version control
Subversion is file-based — when you make changes and run
svn commit, it commits all the changed files by default. Git is changed-based — when you make changes, you have to run
git add to “stage” changes. You can get similar behavior to Subversion with
git commit -a. The “a” flag tells Git to add all changes in tracked files.
- init – Create a new repository.
- clone – Set up a repository that already exists on a remote server.
- add – Stage changes to be committed.
- commit – Add changes to the local repository.
- push – Push unsynced commits to a remote repository.
- pull – Pull unsycned commits from a remote repository.
Get the latest version of the code. If you already have the repository, you can use
git pull to get the latest changes. Otherwise,
git clone will download the code from a remote repository and set it up locally. If this is a new repository, you can set it up with
Share your changes.
git add <file>; git commit; git push or
git commit -a; git push.