2015.03.27

git-ын талаар товчхон

компютерын программ хөгжүүлэхэд программын эх код-ын төлөв өдөрын тэмдэглэл мэт байнга хадгалагдаж байх нь чухал юм.

эх код өсөх тусам хяналт хийх хэцүү болдог. яг юу өөрчилсөнөө сайн санахгүй тохиолдол зөндөө таардаг. git-ын тусламжтайгаар хөгжүүлж байгаа программыг санах ойтой болгоно.

англи хэлээр git-ын талаар дэлгэрэнгүйг stackoverflow-с үзээрэй.

англи хэлээр git суулгах зарчим дэлгэрэнгүйг howto: git install.

bolor:~ bolor$ man git # git -ын талаарx товч мэдэээлэл терминалаас

Drawing

git суулгах зарчим

git-ыг терминалд суурилсан линукс-ын apt-get, MacOs-ын brew, port гэх мэт программын тусламжтайгаар амархан суулгана.

1 Linux

sudo apt-get install git

2 MacOs

brew install git 

git–ын хэрэглээ

git ашиглах тест прожект үүзгэе.

bolor:Desktop bolor$ mkdir myTestProject
bolor:Desktop bolor$ cd myTestProject/

хоосон прожектэд ямар нэгэн файл нэмье.

bolor:myTestProject bolor$ sudo nano helloworld.c # энэ бол тест файл юм.

Drawing

bolor:myTestProject bolor$ gcc -o helloworld helloworld.c 
bolor:myTestProject bolor$ ./helloworld 
ene bol test yum 

үүсгэсэн прожект доторх бүх мэдээлэл

bolor:myTestProject bolor$ ls -Gla
total 32
drwxr-xr-x   5 bolor  staff   170   .
drwx------+  6 bolor  staff   204   ..
-rwxr-xr-x   1 bolor  staff  8636   helloworld
-rw-r--r--   1 root   staff   222   helloworld.c

git-ыг таниулах

bolor:myTestProject bolor$ git init 
Initialized empty Git repository in /Users/bolor/Desktop/myTestProject/.git/

git-ыг таниулсан прожект доторх бүх мэдээлэл. сайн ажиглаж харвал нуугдасан .git (хавтас) өрөө үүссэн байна.

bolor:myTestProject bolor$ ls -Gla
total 32
drwxr-xr-x  5 bolor  staff   170 .
drwx------+ 6 bolor  staff   204 ..
drwxr-xr-x  9 bolor  staff   306 .git
-rwxr-xr-x  1 bolor  staff  8636 helloworld
-rw-r--r--  1 root   staff   247 helloworld.c

одоо эхний тэмдэглэл хадгалах боломжтой боллоо.

git add . && git commit -m ‘commit message’

bolor:myTestProject bolor$ git add .
bolor:myTestProject bolor$ git commit -m 'эхний хадгалалт my first commit'
[master (root-commit) 9d3d7a5] эхний хадгалалт my first commit
 2 files changed, 14 insertions(+)
 create mode 100755 helloworld
 create mode 100644 helloworld.c

программын эх кодын төлөвыг git status шалгана

bolor:myTestProject bolor$ git status
On branch master
nothing to commit, working directory clean

үүсгэсэн санамжыг git log комманд-р харна

bolor:myTestProject bolor$ git log
commit 9d3d7a5396886bb96f752024636feeda4e47b1bd
Author: Bolor 
Date:   xx:xx:xxxx 

    эхний хадгалалт my first commit

үүсгэсэн прожектын явцыг бэлэн гэж үзвэл repositorie хэлбэрээр хадгалж болно.

bolor:myTestProject bolor$ mkdir -p ../share/myrepo1.git
bolor:myTestProject bolor$ git init --bare ../share/myrepo1.git/
Initialized empty Git repository in /Users/bolor/Desktop/share/myrepo1.git/
bolor:myTestProject bolor$ git remote add myRepo_Beta ../share/myrepo1.git/
bolor:myTestProject bolor$ git push myRepo_Beta master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.37 KiB | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To ../share/myrepo1.git/
 * [new branch]      master -> master

эх код оо ssh сервэрээр raspberry pi-д тавьж туршив.

bolor:~ bolor$ ssh pi@192.168.1.3

pi@raspberrypi ~ $ mkdir -p share/pro1.git
pi@raspberrypi ~ $ git init --bare share/pro1.git/
Initialized empty Git repository in /home/pi/share/pro1.git/
myTestProject bolor$ git remote add share_pi pi@192.168.1.3:/home/pi/share/pro1.git/
myTestProject bolor$ git push share_pi master
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 1.37 KiB | 0 bytes/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To pi@192.168.1.3:/home/pi/share/pro1.git/
 * [new branch]      master -> master

raspberry pi-д тавьсан кодоо git clone pi@192.168.1.3:/home/pi/share/pro1.git/ комманд-р татна

bolor:Desktop bolor$ git clone pi@192.168.1.3:/home/pi/share/pro1.git/
Cloning into 'pro1'...
remote: Counting objects: 4, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (4/4), 1.37 KiB | 0 bytes/s, done.
remote: Total 4 (delta 0), reused 0 (delta 0)
Checking connectivity... done.

өмнө үүсгэсэн repository-ыг git clone ~/Desktop/share/myrepo1.git/ комманд-р татна

bolor:Desktop bolor$ git clone ~/Desktop/share/myrepo1.git/
Cloning into 'myrepo1'...
done.

бичсэн кодонд жижиг өөрчилөлт оруулья

Drawing

өөрчилсөн кодоо одоо коммит хийж хадгалья

git add . && git commit -m ‘second commit’

bolor:myTestProject bolor$ git add . && git commit -m 'second commit'
[master c46e35f] second commit
 1 file changed, 1 insertion(+), 1 deletion(-)

хадгалсан эх кодны тэмдэглэлийг git log-p харна

bolor:myTestProject bolor$ git log
commit c46e35f6095a64eceaaed89e4621dabea33cc600
Author: Bolor 
Date:  

    second commit

commit 9d3d7a5396886bb96f752024636feeda4e47b1bd
Author: 
Date:  

    эхний хадгалалт my first commit

юу өөрчилснөө git difftool commit2 commit1 шалгаж болно

bolor:myTestProject bolor$ git difftool c46e35f6095a64eceaaed89e4621dabea33cc600
9d3d7a5396886bb96f752024636feeda4e47b1bd

Viewing (1/1): 'helloworld.c'
Launch 'opendiff' [Y/n]: yw

Drawing

энэ удаа git-д ашиглагдах чухал хэдэн коммандыг туршиж харууллаа.