Loading...
 
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git Version Control

Git
Version control systems are a category of software tools that help a software team manage changes to source code over time. Version control software keeps track of every modification to the code in a special kind of database. If a mistake is made, developers can turn back the clock and compare earlier versions of the code to help fix the mistake while minimizing disruption to all team members.1

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.2

History

Source Code Control System (SCCS) - Initial release: 1972

The Source Code Control System (SCCS) is a software tool designed to help programming projects control changes to source code. It provides facilities for storing, updating, and retrieving all versions of modules, for controlling updating privileges for identifying load modules by version number, and for recording who made each software change, when and where it was made, and why. This paper discusses the SCCS approach to source code control, shows how it is used and explains how it is implemented.3

Revision Control System (RCS) - Initial release: 1982

The Revision Control System (RCS) manages multiple revisions of files. RCS automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, including source code, programs, documentation, graphics, papers, and form letters.

RCS was first developed by Walter F. Tichy at Purdue University in the early 1980s — paper: RCS: A System for Version Control (1991)4

Concurrent Versions System (CVS) - Initial release: 1990

CVS is an acronym for the "Concurrent Versions System". CVS is a "Source Control" or "Revision Control" tool designed to keep track of source changes made by groups of developers working on the same files, allowing them to stay in sync with each other as each individual chooses. CVS is free and runs on many computers and operating systems — such as WindowsNT, Win95, Mac, etc. To install and build CVS, your computer must have a C-compiler, RCS, and PERL accessable from your computer (at least this is what is required for UNIX platforms). It is also available for the Windows NT operating system (although no NT clients I know of have the software installed).5

Subversion (SVN) - Initial release: 2000

Subversion is an open source version control system. Founded in 2000 by CollabNet, Inc., the Subversion project and software have seen incredible success over the past decade. Subversion has enjoyed and continues to enjoy widespread adoption in both the open source arena and the corporate world.6

Git - Initial release: 2005

Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel.7

Centralized vs Distributed Version Control

Centralized Version Control

Centralized version control systems are based on the idea that there is a single “central” copy of your project somewhere (probably on a server), and programmers will “commit” their changes to this central copy.8

  • Subversion (SVN)
  • CVS
  • Perforce

Distributed Version Control

These systems do not necessarily rely on a central server to store all the versions of a project’s files. Instead, every developer “clones” a copy of a repository and has the full history of the project on their own hard drive. This copy (or “clone”) has all of the metadata of the original.9

  • Mercurial
  • Git
  • Bazaar

Hosting Services for version control using Git

  • GitHub (Microsoft) - Founded in 2007, GitHub has brought millions of developers together to discover, share, and build better software.10
  • BitBucket (Atlassian) - Bitbucket is more than just Git code management. Bitbucket gives teams one place to plan projects, collaborate on code, test, and deploy.11
  • AWS CodeCommit (Amazon) - AWS CodeCommit is a fully-managed source control service that makes it easy for companies to host secure and highly scalable private Git repositories.12
  • GCP Cloud Source Repositories (Google) - Google Cloud Source Repositories are fully-featured, private Git repositories hosted on Google Cloud Platform.13

References / Documentation

Books

  • The entire Pro Git book, written by Scott Chacon and published by Apress.

Videos

Tech Talk: Linus on Git
GitHub Tutorial for Beginners
The Basics of Git and GitHub

OS Tools Installation

Linux - Ubuntu

How to Install Git 2.1.1 on Ubuntu 14.10, 14.04, 12.04 and LinuxMint 16/15

$ sudo add-apt-repository ppa:git-core/ppa
$ sudo apt-get update
$ sudo apt-get install git

FreeBSD

As root:

pkg install git

MS Windows

Installing Git with Chocolatey

PS C:\> choco install git

macOS

Downloading Git - Mac

Global and Local Setting

Now that you have Git on your system, you’ll want to do a few things to customize your Git environment.14

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --global core.editor "/usr/bin/vim"
$ git config --global core.pager 'more'

Set Configuration for a Specific Repo

If you are working with multiple teams you might want different email addresses associated with each of those teams. You can set the User Name and Email Address for each Git repo using the following commands:

$ git config --local user.name "John Doe" 
$ git config --local user.email johndoe@example.com

Git using SSH Key Pairs

Authentication with SSH Public Keys

Often, access to a remote Git repository on a server will be restricted: you probably don't want to allow anybody to read (or at least not write to) your files. In these cases, some kind of authentication is necessary.


One possibility to authenticate uses the "HTTPS" protocol which you probably already know from your browser. Although this is very easy to use, a lot of system administrators use the also very common "SSH" protocol for various reasons. In this scenario, when it comes to authentication, you will most likely meet "SSH Public Keys".
For this type of authentication, a two-part key is used: a public and a private one. The private key (as the name implies) must be kept absolutely private to you under all circumstances. Its public counterpart, in contrast, is supposed to be installed on all servers that you want to get access to.

When a connection via SSH is trying to be established, the server will only grant access if it has a public key installed that matches the private key of the requesting computer.15

Related Topics

Last edited by MichaelAlber .
Page last modified on Saturday July 27, 2019 22:59:04 UTC.