Git kasutamine operatsioonisüsteemiga Debian Squeeze

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Git http://git-scm.com/ on lähtekoodi haldamise tarkvara (ingl. k. source code management). Git sobib

  • kasutada täiesti lokaalselt, st üks kasutaja oma ühes arvutis omaette kasutab (st kasutades oma isiklikku lokaalset repositooriumi)
  • kasutada tsentraalse lokaalses failisüsteemis või üle võrgu ligipääsetava repositooriumiga
  • kasutada võrkgus paiknevate mitmete repositooriumitega, st hajusalt (ingl. k. distributed)

Mõisted

  • SCM - Source code management
  • VCS - Version Control System (RCS)
  • CVCS - Centralized Version Control Systems (nt CVS, Subversion)
  • DVCS - Distributed Version Control Systems (nt Git, Mercurial, Bazaar, Darcs)

Tööpõhimõte

TODO

Mõisted

  • Staging area
  • Fast-forward
  • Merge
  • Rebase
  • Topic branches

Git kliendi paigaldamine ja seadistamine

# apt-get install git

Kasutamine

Kasutaja ~/.gitcofig faili parameetrite väärtustamine

$ git config --global user.name "Mart Kask"
$ git config --global user.email "mart@loomaaed.tartu.ee"
$ git config --global color.ui auto

Tulemust saab küsida näha

$ git config --list
user.name=Mart Kask
user.email=mart@loomaaed.tartu.ee
github.user=martkask
github.token=4c9cd9ef6b530596a5d54bc33da97935
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

Lokaalse tühja projekti tekitamine

$ git init projekt1
Initialized empty Git repository in /tmp/g/local1/.git

Olemasoleva kataloogi Git kontrolli alla paigutamine

$ cd olemasolevkataloog
$ git init
Initialized empty Git repository in /home/imre/olemasolevkataloog/.git/

Faili lisamine

$ git add essa
$ git commit -m "essa tekkis"
[master (root-commit) 696bcc5] essa tekkis
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 essa

Faili eemaldamine

$ git rm essa

Faili ümbernimetamine

$ git mv essa essa-n

Tööversiooni ja staging area erinevuste esitamiseks

$ git diff
$ git diff {ccf4116,d4be14b} teine_data/portaal/table/form.links.sql

Staging area ja viimase commiti erinevuste esitamiseks

$ git diff --cached

Logi vaatamine

$ git log
commit 653ff148639be041770e13d99a4699ee65b3c453
Author: Imre Oolberg <imre@auul.pri.ee>
Date:   Sun Oct 21 19:27:02 2012 +0300

   esimesed sissekanded 2

commit 8a77953de0e6746d395649d00785bb3d05857771
Author: Imre Oolberg <imre@auul.pri.ee>
Date:   Sun Oct 21 19:25:38 2012 +0300

   esimesed sissekanded

sama, aga kontsentreeritumalt

$ git log --pretty=format:"%h - %an, %ar : %s"
653ff14 - Imre Oolberg, 2 minutes ago : esimesed sissekanded 2
8a77953 - Imre Oolberg, 4 minutes ago : esimesed sissekanded

Remote repository kasutamine

$ git clone git://192.168.1.242/project 
Cloning into project...
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (4/4), done.

Faili kustutamine

$ git rm failinimi
$ git commit -m "fail failinimi kustutati"

Clone

Clone ...

$ git clone gitolite@192.168.1.242:testing

Pull

Fast-forward (õieti polegi merge)

$ git pull
remote: Counting objects: 7, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.
From 192.168.1.242:testing
   d179d5d..d19cad3  master     -> origin/master
Updating d179d5d..d19cad3
Fast-forward
 kata-1/fail-1 |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Mergemine (kuna mõlemad tegid muudatusi ja commitisid ning aune pushis)

$ git pull
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From 192.168.10.123:auul
   7e07264..4288fd7  master     -> origin/master
Auto-merging imre-ja-aune-muudavad
Merge made by recursive.
 imre-ja-aune-muudavad |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

Push

$ git push origin master
Counting objects: 4, done.
Writing objects: 100% (4/4), 269 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
To gitolite@192.168.1.242:testing
 * [new branch]      master -> master

Fetch

TODO

Merge

Olles harus (nt ,aster), kuhu muudatusi lisatakse (harust imre-b-lokaalne-1) sobib öelda

$ git merge imre-b-lokaalne-1
Updating 3110e3c..cfbe059
Fast-forward
 imre-b-lokaalne-1-tehtud-fail |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 imre-b-lokaalne-1-tehtud-fail

Branch

  • Lokaalse haru tekitamine
$ git branch
* master
$ git branch eksperimentaal
$ git branch
  eksperimentaal
* master

Haru tekitamine ja sinna liikumine

$ git checkout -b experiment master
  • Harude vahel liikumiseks
$ git checkout eksperimentaal
Switched to branch 'eksperimentaal'

Eelmisena oldud harru tagasi liikumiseks

$ git checkout -

Liikuda saab ka konkreetse commit'i peale (commit vaadata nt git log väljundist)

$ git checkout  3be5cbdf4afb4ed0958833b095f97b82f5a61a12
Note: checking out '3be5cbdf4afb4ed0958833b095f97b82f5a61a12'.

You are in 'detached HEAD' state. You can look around, make experimenta
...
  • Haru kustutamine
$ git branch -d imre-b-lokaalne-2
Deleted branch imre-b-lokaalne-2 (was 3110e3c).
$ cat .git/HEAD 
ref: refs/heads/tere

Cherry picking

TODO

Tags

Sildi (ingl. k. tag) kasutamine ...

Patch

Paiga rakendamine

# cd /usr/src
# git apply --verbose --directory sys /var/tmp/xen-patches-20171229.diff
Checking patch sys/dev/pv/xen.c...
Checking patch sys/dev/pv/xenvar.h...
Applied patch sys/dev/pv/xen.c cleanly.
Applied patch sys/dev/pv/xenvar.h cleanly

Paiga tagasivõtmine

# git apply -R --verbose --directory sys /var/tmp/xen-patches-20171229.diff

Töötamine remote'idega

  • Remote haru tekitamine
TODO
  • Remote'i lisamine
$ TODO
  • Tracking
  • Serverist eemaldatud remote'de kustutamine lokaalselt
$ git remote prune origin
$ git clone /srv/git/nimi

Konfliktide lahendamine

TODO

$ git config --global merge.tool meld

Graafilised Git kliendid

TODO

  • gitg
  • qgit
  • giggle

Repositooriumi varundamine

TODO

Arendus-Toodang workflow

TODO

Töötamine Atlassian Stash repositooriumiga

$ git clone https://stash.loomaaed.tartu.ee:445/git/PORTAAL/portaal_sql.git
Username:
Password:
Cloning into portaal_sql...
remote: Counting objects: 7733, done.
remote: Compressing objects: 100% (5129/5129), done.
remote: Total 7733 (delta 3407), reused 6472 (delta 2544)
Receiving objects: 100% (7733/7733), 12.74 MiB | 1.08 MiB/s, done.
Resolving deltas: 100% (3407/3407), done.

~/.netrc abil saab curli kasutajanime ja parooli automaatselt ette öelda

$ cat ~/.netrc
machine ip.add.re.ss login kasutajanimi password parool

Kasulikud materjalid

Märkused

  • olemasoleva klooni puhul saab teada, kust andmed kopeeriti vaadates faili .git/config

Kasulikud lisamaterjalid