Git FAQ
Introduction
Purpose: This FAQ is to collect git specific information regarding to
- What git is
- How to use git, and more specifically GitHub
- What tools are available
- Caveats
- Best practices at 52°North
What is git?
Git is a distributed source code management system including version control. Like CVS/SVN it enables collaborative work, e.g. software (but is not restricted to). Git gets rid of many disadvantages developers are facing when using SVN (like SVN superseding CVS). It is not the only distributed (or decentralized) source code management system, but the most commonly used. Many open source projects have switched to using git instead of SVN as it makes collaborative work a whole lot easier.
What can I do with GitHub?
GitHub is a collaboration platform. It makes collaborative software development much easier and is internally build on the git system. But it extends git in a few crucial aspects that make developing open source software (primarily, you can also use it to collaborate on writing texts!) more fun.
GitHub provides free hosting of git repositories.
It also provides additional resources that are needed for successful software development, namely a wiki for documentation, an issue tracker for task and bug management, great graphs to track activities in a project, social features (following people and projects), a great user interface to explore repositories (look at commit histories, differences between files, ...), and user management.
To understand the background of the GitHub platform, sit back and enjoy this keynote by GitHub CEO and co-founder Chris Wanstrath:
http://video.arcgis.com/watch/3223/social-coding-and-the-future-of-open-source
Learn Git
Best entry site is the
Git site itself, but see here some selected links (ordered, getting more detailed):
In (very) short: git is comprised of several basic verbs that can be used to share code and changes to code across different instances of a repository:
- You can clone a repository.
- You can add files and commit changes to files into a repository.
- You can push changes to a repository (local or remote).
- You can pull changes from other repositories.
Learn GitHub
The most important resource to lean to use GitHub is
https://help.github.com/.
The
bootcamp articles suffice to get a first understanding:
https://help.github.com/categories/54/articles. Read them!
Ok, that's just a lot of links - what can I do to get started?
- Go to http://github.com and create an account (it's free)
- Fork a repo of a project that interests you
- Clone that fork to your local machine and import the code into your development environment
- Improve or extend the code (e.g. take a look at tasks in the repositories issue tracker)
- Commit your changes or add your new code to the local repository.
- Push your changes to your fork
- Create a pull request to the original project and discuss your new suggestions
How can I publish a software project on GitHub in the 52°North organisation?
Answer these questions to be directed to the wiki page that guides you further.
- Is the source code already published on GitHub?
Please follow the
GitHub project documentation conventions.
How can I migrate my existing SVN repository to GitHub?
See
SvnToGitHubMigration.
How can I resolve merge conflicts with Eclipse?
See
ResolveMergeConflictsInGitEclipse.
- TortoiseGit
- TortoiseGit integrates in the Windows Explorer context menu and eases to work with your working copy directly via Window's native file explorer interface
- GitHub for Windows
- Github for Windows links good with GitHub (naturally), but is not required to do so and can be used with other remotes, too.
- Tool Collections
-
- SourceTree
- SourceTree is a free Git client for Windows and Mac from Atlassian
- GitEye
- GitEye is a free Git client for Windows. Linux and Mac from CollabNet
When fetching from remote I get an SSL error. What shall I do?
It depends. Following describes some common errors:
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed.
See
http://stackoverflow.com/questions/3777075/https-github-access/4454754#4454754
Are there naming conventions for 52°North staff or community members and their user accounts on GitHub?
No, see
https://github.com/52North?tab=members.
How to update a fork directly from GitHub
http://www.youtube.com/watch?v=bTaFAqJ6bjE