GitHub is a web-based hosting service for software development projects that use the Git revision control system. We are hosting all our projects on this host. GitHub offers both commercial plans and free accounts for open source projects. You can register a free account by clicking here.

Download and install Git on your machine

Git is a powerful, sophisticated system for distributed version control. It is all about composing and saving snapshots of your project and then working with and comparing those snapshots. It will pull down the whole project history, so you can browse history and even commit changes without online access. Thus Git works very well if you have an intermittent or poor network connection. These guides will step you through the process of downloading and installing Git in your operating system:

SSH keys are used to secure communications between your machine and other machines. These guides will step you through the process of generating a keypair and uploading it to GitHub, depending on your Git client as well as your operating system:

Git needs to know your username and email address to properly credit your commits. Setting this setting will also let GitHub link the commits you make to your GitHub account. Run the following commands to setup username (please use your registered username that we recognize you) and e-mail globally:

You can also check this guide for a more detailed configuration with GitHub token.

Setup line ending preferences

Line endings is the scourge of every Windows-based developer that tries to mingle with Linux- or Mac-based developers. Though most modern text editors can handle both newline types without issue, Git is not as graceful. Run the following command to setup line ending preferences on Windows:

Forking is to clone an entire remote repository into another remote repository. Now you have two repositories based around the same code base. At that one point in time, they have the same set of files and the same changelog. A fork is a copy located on GitHub which is then linked to the main repository as a child. To create a fork, simply click the Fork button on the GitHub project's page.

These projects may interest you because you can translate them in your local language:

Cloning is to make a copy of a remote repository into your local development environment, your machine. No one's got access to this machine or your clone. Run the following commands to clone the fork locally and make sure you use the Private URL, not the Public URL:

Once the clone is complete, your repository will have a remote named origin that points to your fork on GitHub. Don't let the name confuse you, this does not point to the original repository you forked from. To help you keep track of that repository, we will add another remote named upstream:

Note that we used the public clone URL for upstream, so you can't push changes directly to it. You don't have permission to do that anyway, which is why you're creating a fork in the first place.

Create a branch

You must use branches, foreign main branches are never merged. Translations should have a branch named intl-<lang>, for example intl-de (German language). Please see the Sub-Project Contribution Guidelines for more information. So let's start by creating your new branch:

The intl-<lang> branch is the one you just created, and the master branch is a default branch that was created for you automatically. The asterisk marks the branch you are currently on. To switch to your language branch, the intl-<lang> branch, simply run the following command:

This will create the intl-<lang> branch and immediately switch to it. Easy and magical!

Basic snapshotting

Git is all about composing and saving snapshots of your project and then working with and comparing those snapshots. Instead of writing a documentation available everywhere, please read this section of the Git Reference website listing all the commands needed for basic snapshotting like git add, git status, git diff, git commit, git reset HEAD and git rm.

Sharing and updating

Git doesn't have a central server. All of the commands so far have been done locally, just updating a local database. To collaborate with other translators in Git, you have to put all that data on a server that the other translators have access to. The way Git does this is to synchronize your data with another repository. There is no real difference between a server and a client - a Git repository is a Git repository and you can synchronize between any two easily. Once you have a Git repository, either one that you set up on your own server, or one hosted someplace like GitHub, you can tell Git to either push any data that you have that is not in the remote repository up, or you can ask Git to fetch differences down from the other repo. Please read this section of the Git Reference website listing all the commands needed for basic snapshotting like git remote, git fetch, git pull, and git push.

Sending pull requests

Pull requests let you tell others about changes you've pushed to a GitHub repository. Once a pull request is sent, interested parties can review the set of changes, discuss potential modifications, and even push follow-up commits if necessary. This guide walks through the process of sending a hypothetical pull request and using the various code review and management tools to take the change to completion.

Concrete example

Nothing is clearer than take a real example. As you know, I am IST/Translation Manager but also French and U.S. English translator. Let us take for example the AutoMOD project with the French translation.

After registering an account on GitHub (maelsoucaze as username) and downloaded and installed Git on my computer (I'm using Windows 7 as operating system), I am generating SSH keys: