.git git-scm.com free and open source distributed version control system p.s. for beginners…
-Yes. Download, modify and contribute! free? open source? -Yes, totally! -Yes. Download, modify and contribute!
distributed? version control? let's look inside!
everybody loves trees
file systems?
start a project A
modify the project changeset A
version control? A
is anybody confused? A
monday A versionA
tuesday changeset versionA versionB
… meta information timeline A versionA Monday 12pm Very important message A Jonik Karapetyan versionB Tuesday 12pm Very important message B Jonik Karapetyan versionN Just before leaving the office I’m tired!!! No messages anymore… Jonik Karapetyan meta information
we are growing!
centralized? Dropbox CVS, Subversion, and Perforce something like with version control CVS, Subversion, and Perforce
two trees structure!
working copy & repository
commit & checkout commit checkout
internet has gone No has access to any version except working copy
tree trees structure! .git mercurial bazaar darcs is Dropbox getting smarter?
staging area | staging index working copy stating area
distributed? repo working copy stating area * nearly every operation is local stating area
who cares? * nearly every operation is local
stage, commit, checkout stage commit checkout
and couple of advantages! history who, when, why? and couple of advantages!
lets see logs for first commit commit: first author: Linus Torvalds date: early 2005 for: Linux kernel maintenance because: BitKeeper became non free *also: Linus was a genius)))
advantages speed simple design strong support for non-linear development (thousands of parallel branches) fully distributed able to handle large projects like the Linux kernel efficiently (speed and data size)
any other advantages?
install, configure, check, and get some help setup install, configure, check, and get some help
installing on Linux yum $ sudo yum install git-all aptitude $ sudo apt-get install git-all Mac https://git-scm.com/download/mac Windows https://git-scm.com/download/win
configuring your identity $ git config --global user.name “IP Club“ $ git config --global user.email info@ipc.am editor $ git config --global core.editor emacs $ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' - multiInst -nosession“ $ git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession"
checking your configurations git config –-list user.name=IP Club user.email=info@ipc.am git config user.name IP Club
get some help git help <verb> git <verb> --help man git-<verb>
any questions?
any conclusions?
Thank You