Git-ийн хэрэглээ

Дусал нэвтэрхий толь-с

Гит хуудсын хэмжээ томорсон тул Гитийг хэрэглэх зааврын хэсгийг энэ хуудас руу шилжүүлж байна. Гитийг суулгах, тохируулах талаар Гит хуудсаас үзнэ үү.


Агуулах үүсгэх

Шинэ агуулах үүсгэх

Шинэ агуулах(repository) үүсгэхдээ эхлээд төслийнхөө хавтас руу орж байгаад дараах тушаалыг өгнө:

$ git init

Ингэснээр тухайн хавтсанд .git гэсэн хавтас үүсэх бөгөөд үүнд агуулахын бүх мэдээлэл байрлана.

Тухайн хавтсан дахь бүх файлыг бэлтгэл хэсэгт нэмэх:

$ git add .

Эсвэл зөвхөн py өргөтгөлтэй файлуудыг нэмэх жишээ:

$ git add *.py

Файлуудаа нэмсний дараа хадгалах хэрэгтэй:

$ git commit -m 'anhnii hadgalalt'

-m параметр нь хадгалалтыг дагалдах өөрчлөлтийн тайлбар юм. Аливаа өөрчлөлтийг хадгалахдаа энэ тайлбарыг ямагт бичиж занших хэрэгтэй.


Агуулахын хуулбар үүсгэх

Өөр дээрээ шинэ агуулах үүсгэхээс гадна сүлжээнд буй агуулахыг хуулж болно. Үүний тулд git clone [url] тушаалыг ашиглана. Coder.mn сайтын эх кодыг хуулж авъя гэвэл:

$ git clone git://github.com/ochko/codermn.git

Ингэхэд дотроо .git хавтастай codermn гэсэн хуулбар агуулах үүснэ. Энд тухайн эх кодын хамгийн сүүлийн хувилбар хуулагдсан байна.

Хэрвээ агуулахаа өөрөөр нэрлэе гэвэл тушаалдаа нэг параметр нэмж бичнэ:

$ git clone git://github.com/ochko/codermn.git my_codermn

Ингэхэд дээрхтэй агуулгаараа адил боловч my_codermn гэсэн өөр нэртэй хуулбар хавтас үүснэ.

Гит хэд хэдэн протокол дэмждэг.

  • git://
  • http(s)://
  • user@server:/path.git (SSH ашиглана)

Жишээ нь дотоод сүлжээний нэгэн тооцоолуураас агуулах хуулж авах тушаал:

$ git clone user@192.168.2.23:/opt/git/myproject.git

Агуулахад өөрчлөлтөө бүртгэх

Мөчирлөх

Мөчиртэй ажиллах талаар дэлгэрэнгүйг |Git мөчиртэй ажиллах] хуудаснаас үзээрэй.

Шинэ мөчир үүсгэх:

$ git branch shine_muchir

Үнэн хэрэгтээ алсын агуулахыг хуулж авах үйл нь өөрөө шинэ мөчир үүсгэхтэй зарчмын хувьд адилхан юм. Гит дээр ажлын хавтас бүр нэгэн мөчир болж явдаг. Зарчмын хувьд үндсэн шугам (trunk) гэж байхгүй, харин харилцан тохиролцож үндсэн шугам байгуулдаг.

Мөчир солих:

$ git checkout shine_muchir

Төлөв үзэх

Өөрчлөгдсөн файл, шинээр нэмэгдсэн файл, устсан файл зэрэг мэдээллийг үзэхдээ төлөвийн тушаалыг ашиглана.

Ажлын хавтасны төлөвийг харах тушаал:

$ git status
# On branch master
nothing to commit (working directory clean)

Энэ нь таны ажлын хавтсанд өөрчлөгдсөн, устсан г.м. файл байхгүй буюу бүх өөрчлөлтийг хадгалсан, ажлын хавтас "цэвэр" байна гэдгийг илтгэж байна.

Та ажлын хавтсандаа README гэсэн цоо шинэ файл үүсгэсэн бол төлөвийн мэдээлэл дараах байдалтай байна:

$ vim README
$ git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   README
nothing added to commit but untracked files present (use "git add" to track)

Юу өөрчлөгдсөнийг харах

Кодонд засвар хийж байгаад агуулахад хадгалахын өмнө юу өөрчилснөө хянан үзэх хэрэгтэй. Ингэхийн тулд Юниксийн diff тушаалтай адилаар git diff гэсэн тушаалыг ашиглана.

$ git diff
diff --git a/settings.py b/settings.py 
index 8891a1d..215dd9b 100644 
--- a/settings.py 
+++ b/settings.py 
@@ -1 +1 @@ 
-чухал өөрчлөлт 
+маш чухал өөрчлөлт

Дээрх жишээнд "чухал өөрчлөлт" гэсэн мөрийг "маш чухал өөрчлөлт" болж өөрчилсөн байна.

Завсрын агуулахад нэмсний дараа git diff --cached гэж өөрчилснийг үзнэ.


Үйлдлээ буцаах

Гитд хөгжүүлэлтийн үеэр гаргасан алдаагаа залруулж, хуучин хувилбар руугаа буцах хэд хэдэн арга байдаг. Аль аргыг сонгох нь үйлдлээ хадгалсан эсэх, бусадтай маш том хэмжээний өөрчлөлтийг хуваалцсан эсэхээс хамаарна.


Хадгалагдаагүй үйлдлийг буцаах

Ажиллаж байсан кодоо завааруулчихаад агуулахад арай хадгалж амжаагүй бол ажлын хавтасаа хамгийн сүүлийн хадгалагдсан төлөвт нь буцаах ийм арга байна:

$ git reset --hard HEAD

Хэрвээ зөвхөн ганц буюу нэр бүхий файлуудыг сэргээх бол git checkout тушаалыг ашигла:

$ git checkout -- hello.py
$ git checkout HEAD hello.py


Хадгалагдсан үйлдлийг буцаах

Хэрвээ ямар нэг өөрчлөлт хийчихээд дараа нь түүнийгээ буцаая гэвэл үүнд туслах хоёр үндсэн арга байна:

  1. Хуучин хадгалалтанд орсон алдаагаа засаад шинээр хадгалж болно. Хэрвээ алдаа чинь нээлттэй агуулахад орж тараагдсан бол ингэх нь зүйтэй.
  2. Буцаад хуучин хадгалалтаа өөрчилж болно. Хэрвээ өөрчлөлтийн түүх нээлттэй бол ингэж хэрхэвч болохгүй. Гит угаасаа агуулахын түүх өөрчлөгдөхийг дэмждэггүй бөгөөд түүх нь өөрчлөгдсөн мөчрийг дахин нэгтгэхдээ алдаа гаргах магадлал өндөртэй байдаг.


Шинээр хадгалж засах

Өмнөх хадгалалтаа буцааж шинээр хадгалахад маш амархан, git revert тушаалд буруудсан хадгалалтаа заагаад өгчихнө. Жишээ нь хамгийн сүүлийн хадгалалтыг буцаая гэвэл:

$ git revert HEAD

...


Өөрчлөлтийн түүх үзэх

Өөрчлөлтийн бүртгэлийг харах:

$ git log

Алсын агуулахтай ажиллах

Алсын агуулахуудаа харах

Тохируулсан алсын серверүүдээ харахын тулд git remote тушаалыг ашиглана. Ингэхэд таны хадгалсан алсын агуулахуудын богино нэрийг жагсаана. Алсын ямар нэг агуулахыг хуулбарлаж авсан бол ядахдаа origin (Гит хуулбарын эх серверт өгдөг заяамал нэр) гэсэн нэр харагдана:

$ git clone git://github.com/schacon/ticgit.git
Initialized empty Git repository in /private/tmp/ticgit/.git/
remote: Counting objects: 595, done.
remote: Compressing objects: 100% (269/269), done.
remote: Total 595 (delta 255), reused 589 (delta 253)
Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.
Resolving deltas: 100% (255/255), done.
$ cd ticgit
$ git remote 
origin

Мөнхүү -v параметрийг нэмсэнээр богино нэрнээс гадна (Хэлбэржсэн нөөц заагч) URL хаягийг нь харуулна: $ git remote -v origin git://github.com/schacon/ticgit.git Хэрвээ нэгээс илүү алсын агуулахтай бол дээрх тушаал бүгдийг нь жагсаадаг. Жишээ нь:

$ cd grit
$ git remote -v
bakkdoor  git://github.com/bakkdoor/grit.git
cho45     git://github.com/cho45/grit.git
defunkt   git://github.com/defunkt/grit.git
koke      git://github.com/koke/grit.git
origin    git@github.com:mojombo/grit.git

Ингэхээр хэд хэдэн хэрэглэгчийн агуулахаас хүссэнээ татаж (pull) болно гэсэн үг. Гэхдээ origin алсын агуулахын хаяг SSH URL буйг анхаараарай, тиймээс зөвхөн энэ агуулах руу л түлхэж(push) болох юм.


Алсын агуулах нэмэх

Нэрээр нь хандаж болох шинэ алсын агуулах нэмэхийн тулд git remote add [нэр] [хаяг] тушаалыг ашиглана:

$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin  git://github.com/schacon/ticgit.git
pb  git://github.com/paulboone/ticgit.git

Ингээд урт гэгч нь URL хаягийн оронд pb гэсэн нэрийг тушаалдаа ашиглаж болно. Жишээ нь өөрийн агуулахад байхгүй Паулын мэдээллийг авахын тулд git fetch pb тушаалыг ашиглана.

$ git fetch pb
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

Одоо Паулын master мөчир рүү дотооддоо pb/master гэж хандаж болно.


Алсын агуулахаас fetch, pull хийх

Алсын агуулахаас өөрт байхгүй мэдээллийг авахын тулд git fetch тушаалыг хэрэглэнэ:

$ git fetch [алсын агуулахын нэр]

Алсын агуулахаас шинэчлэгдсэн файлуудыг татаж өөрийнхдөө нэгтгэхийн тулд git pull тушаалыг хэрэглэнэ:

$ git pull [алсын агуулахын нэр] [мөчрийн нэр]

Алсын агуулах руу хуулах

Хийсэн өөрчлөлтөө бусадтай хуваалцахын тулд аль нэг агуулах руу хуулах (push) шаардлагатай болно. Энэ тушаал нь git push [алсын агуулахын нэр] [мөчрийн нэр] юм. Доорх тушаалаар өөрийн master мөчрийг origin сервер рүүгээ хувилна (clone тушаалаар агуулах хуулж авч байсан бол master, origin нэрнүүд заяагдмал байна).

$ git push origin master

Энэхүү тушаал нь тухайн агуулахыг өөрийнхөө бичих эрх бүхий нэгэн сервэрээс хувилж (clone) авсан бөгөөд өөр хүн давхар хуулаагүй (push) тохиолдолд л ажиллах юм. Хэрвээ та болон өөр нэгэн яг зэрэг хувилж (clone) аваад, нөгөө хүнийг хуулсны (push) дараа та хуулах гэвэл хориглогдох болно. Эхлээд нөгөө талын ажлыг татаж аваад (pull) өөрийнхтэйгөө нийлүүлсний дараа л хуулах (push) эрх нээгдэх юм.


Алсын агуулахыг магадлах

Аливаа алсын агуулахын талаар дэлгэрэнгүй мэдээлэл авъя гэвэл git remote show [агуулахын нэр] тушаалыг хэрэглэнэ:

$ git remote show origin
* remote origin
  URL: git://github.com/schacon/ticgit.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branches
    master
    ticgit

Энэ тушаал нь алсын агуулахын URL хаягаас гадна хянаж буй мөчрийн мэдээллийг харуулна.


Алсын агуулах хасах, нэрийг нь өөрчлөх

Бүртгэж авсан алсын агуулахынхаа нэрийг өөрчлөхийн тулд (Гитийн шинэ хувилбарууд дээр) git remote rename тушаалыг хэрэглэнэ. Дараах жишээнд, pb-г paul болгон өөрчилж байна:

$ git remote rename pb paul
$ git remote
origin
paul

Ингэснээр алсын агуулах дахь мөчрийн нэр ч гэсэн өөрчлөгдөх юм. pb/master гэж байсан бол одоо paul/master хаягтай болж байна.

Хэрвээ ямар нэг шалтгаанаар алсын агуулахын аль нэг хаягийг устгахыг хүсвэл git remote rm тушаалыг хэрэглэнэ:

$ git remote rm paul
$ git remote
origin

Агуулахад бүртгэлгүй файлуудыг цэвэрлэх

$ git clean [-d] [-f] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>…

Дэлгэрэнгүй

Тухайн тушаалын бүрэн хэрэглээг мэдэхийн тулд

$ git help
$ git help дэд тушаал

хэмээх тушаалаар дэлгэрэнгүй үзнэ үү.