Git kasutamine operatsioonisüsteemiga Debian Squeeze
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
- Remote ei pruugi asuda võrgus vaid ka nt samas failisüsteemis tööversiooniga, sellise remote kasutamiseks sobib öelda (vt http://treeleaf.be/blog/2011/03/creating-a-new-git-repository-on-a-local-file-system/)
$ 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
- http://www.howtoforge.com/how-to-install-a-public-git-repository-on-a-debian-server
- http://en.wikipedia.org/wiki/Git_%28software%29
- https://github.com/
- http://git-scm.com/book
- http://longair.net/blog/2011/04/18/a-short-introduction-to-git/
- http://eagain.net/articles/git-for-computer-scientists/
- http://nvie.com/posts/a-successful-git-branching-model/