Uzoq masofadagi omborlar bilan ishlash (Git bilan ishlash).

Uzoq masofadagi omborlar bilan ishlash (Git bilan ishlash).

Uzoq masofadagi omborlar bilan ishlash (Git bilan ishlash).

Qaysidir Git – loyiha bilan hamkorlikda ishlash uchun uzoq masofadagi omborni qanday boshqarish kerakligini bilish zarur. Uzoq masofadagi omborlar – bu internetda yoki yana tarmoqda qaerdadir saqlanadigan loyihaning o’zgarishlari. Ular bir qancha bo’lishi va qoidaga binoan ularning har biri sizga yo faqat o’qish yo o’qish va yozish imkoni bilan berilishi mumkin. Hamkorlikda ishlash uzoq masofadagi omborni boshqarishni, ma’lumotlar almashinuvi kerak bo’lganda unga ma’lumot yuborish (push) va undan ma’lumot qabul qilishni (pull) o’z ichiga oladi. Uzoq masofadagi omborlarni boshqarish uzoq masofadagi omborlarni qo’shishni, ulardan amalda qo’llanilmaydiganlarini o’chirishni, turli xil uzoq masofadagi tarmoqlanishlarni boshqarishni bilish va ularni kuzatiluvchilar (tracked) tarzida ajratishni yoki ajratmaslikni va boshqa shu kabi amallarni qamrab olgan. Ushbu bo’lim uzoq masofadagi omborni boshqarish yuzasidan barcha sanab o’tilgan malakalarni yoritadi.

Uzoq masofadagi omborlaringizni namoyish qilish

Qaysi uzoq masofadagi serverlar sizda sozlanganligini ko’rishni istasangiz git remote komandasini bajarish talab etiladi. U izohlari kiritilgan uzoq masofadagilar uchun qisqa nomlar ro’yhatini chiqaradi. Agar siz o’z ombringizni klonlagan bo’lsangiz sizda oxir oqibat origin ko’rinishi kerak. Bu nom odatiy nom bo’lib, uni siz omborni klon qilgan serverga Git ning o’zi biriktiradi:

$ git clone https://github.com/schacon/ticgit
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin

Qaysi URL ga Git da qisqa nom mos kelishini ko’rish uchun komandada -v optsiyasini ko’rsatish mumkin:

$ git remote -v
origin    https://github.com/schacon/ticgit(fetch)
origin    https://github.com/schacon/ticgit (push)

Agar uzoq masofadagi omborlar sizda birdan ziyod bo’lsa, komanda ularni barchasini ko’rsatadi. Masalan, Grit ombori quyidagi tarzda ko’rinadi.

$ cd grit
$ git remote -v
bakkdoor  https://github.com/bakkdoor/grit
bakkdoor  https://github.com/bakkdoor/grit (push)
cho45     https://github.com/cho45/grit (fetch)
cho45     https://github.com/cho45/grit (push)
defunkt   https://github.com/defunkt/grit (fetch)
defunkt   https://github.com/defunkt/grit (push)
koke      git://github.com/koke/grit.git (fetch)
koke      git://github.com/koke/grit.git (push)
origin    git@github.com:mojombo/grit.git (fetch)
origin    git@github.com:mojombo/grit.git (push)

Bu ushbu foydalanuvchilarning ixtiyoriysidan onsongina o’zgarishlarni qabul qilishimiz mumkinligini bildiradi. Biz qo’shimcha tarzida bir yoki undan ko’plariga push komandasini ishlatishiga huquq berishimiz mumkin. Biroq biz bu haqda bu erda gaplashmaymiz. Aytish joizki ushbu uzoq masofadagi omborlar turli xil protokollardan foydalanayabdi; Biz bular haqida batafsilroq ma’lumotlarni Getting Git on a Server da beramiz.

Uzoq masofadagi omborlarni qo’shish

Bundan oldingi bo’limlarda men uzoq masofadagi omborlarni qo’shishni ozgina namoyish ham qilgandim endi uni batafsilroq ko’rib chiqamiz. Uzoq masofadagi Git – omborni qo’shish va murojatda onson bo’lishiga qisqa nom bilan qo’shish uchun git remote add [qisqa_nom] [url] ni bajaring:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin    https://github.com/schacon/ticgit (fetch)
origin    https://github.com/schacon/ticgit (push)
pb    https://github.com/paulboone/ticgit (fetch)
pb    https://github.com/paulboone/ticgit (push)

Endi siz komandalar satrida to’liq URL o’rniga
pb nomini ishlatishingiz mumkin. Masalan, sizda mavjud bo’lmagan Pavlning omboridagi barcha ma’lumotlarni chiqarib olishni (fetch) xohlasangiz git fetch pb komandasini berishingiz mumkin:

$ git fetch pb
remote: Counting objects: 43, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 43 (delta 10), reused 31 (delta 5)
Unpacking objects: 100% (43/43), done.
From https://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

Pavlning master tarmog’i endi mahalliyda
pb/master kabi joylashgan. Siz uni tekshirmoqchi bo’sangiz ushbu tarmoqqa o’tishingiz yoki o’zingizni tarmoqlaringizdan biri bilan birlashtirishingiz (merge) mumkin. (Biz tarmoqlar nima ularni qanday ishlatish mumkin va ular haqdagi batafsil ma’lumotlarni Git da tarmoqlanish da ko’rib o’tamiz.)

Sizning uzoq masofadagi omborlaringiz ustida Fetch va Pull komandalarini bajarish

Siz xozir ko’rganingizdek uzoq masofadagi loyihalardan ma’lumotlarni olish uchun quyidagi komandani bajarish kerak ekan:

$ git fetch [remote-name]

Ushbu komanda ko’rsatilgan uzoq masofadagi loyiha bilan bog’lanadi va u loyihadan sizda hali yo’q bo’lgan barcha ma’lumotlarni oladi. Komandani bajarganingizdan keyin sizda ushbu uzoq masofadagi loyihadan barcha tarmoqlarga murojatlar paydo bo’lishi kerak. Endi ushbu tarmoqlar ixtiyoriy vaqt ko’rilishi yoki birlashtirilishi mumkin.

Siz omborni klonlashtirgan vaqtingizda clone komandasi avtomatik tarzda ushbu uzoq masofadagi omborni «origin» nomi bilan qo’shib qo’yadi. Shu tarzda
git fetch origin komandasi barcha qilingan ishlarning serverga jo’natilganlarini(push) siz klonlashtirganingizdan so’ng (yoki fetch yordamida o’zgarishlar olinganda) tortib oladi. Ta’kidlash muhimki, git fetch komandasi ma’lumotlarni sizni mahalliy omboringizga oladi, lekin ularni siz qilib turgan ishingiz ustiga tashlamaydi va ularni o’zgartirmaydi. Siz bu ma’lumotlarni o’z ma’lumotlaringiz bilan birlashtirishingiz uchun siz shunga tayyor bo’lgan vaqtingizda o’z qo’lingiz bilan bajarishingiz kerak bo’ladi.

Agar sizda uzoq masofadagi tarmoqni qo’shimcha ma’lumot uchun navbatdagi bo’lim va
Git da tarmoqlanish ga qarang) kuzatuvchi tarmoq bo’lsa unda siz git pull komandasini ishlatishingiz mumkin. Ushbu uslub siz uchun ancha onson va ancha qulay bo’lishi mumkin. Shuningdek, git clonekomandasi odatda, o’zgarishsiz holatda sizni mahalliy master tarmog’ingizni siz klonlashtirgan uzoq masofadagi master tarmog’ini kuzatishga sozlab qo’yadi (uzoq masofadagi omborda master tarmog’i bor deya faraz qilinmoqda). git pull komandasini ishlatish, qoidaga asosan serverdan ma’lumotlarni yuklab oladi va ularni ayni damda siz ishlab turgan kod bilan birlashtirishga (merge) harakat qiladi.

Sizning uzoq masofadagi omborlaringizga Push komandasini ishlatish

Qachon siz o’zingizni qilgan ishlaringizni boshqalar bilan ulashmoqchi bo’lsangiz ularni asosiy ma’lumotlar omboriga yuborishingiz (push) kerak. Ushbu amallar uchun komanda juda oddiy:
git push [uzoq masofadagi server] [tarmoq]. Sizni master tarmog’ingizda qilgan ishlaringizni origin serveriga jo’natishingiz uchun (takrorlab o’tamiz, klonlashtirish qoidaga asosan ushbu ikki nomni avtomatik tarzda sozlab qo’yadi) quyidagi komandalarni bajarishingiz mumkin:

$ git push origin master

Ushbu komanda siz klonlashtirib olgan uzoq masofadagi omborga yozish huquqingiz bor bo’lsa va shu vaqtga qadar hech kim push komandasini ishlatmagan bo’lsa ishlaydi. Agar siz va boshqa birov bir vaqtda omborni klonlashtirib olib, so’ngra u push komandasini bajarsa va shundan so’ng siz ham push komandasini bajarmoqchi bo’lsangiz sizni komandangiz inkor qilinadi. Siz avval (pull) komandasini bajarib o’zgarishlarni o’zingizni omboringizga birlashtirishingiz kerak bo’ladi. Faqat shundan so’ng sizga push komandasini bajarishga ruhsat beriladi. Git da tarmoqlanishbo’limga qarang agarda uzoq masofadagi serverga ma’lumotlarni jo’natish haqida batafsilroq ma’lumot olishni xohlasangiz.

Uzoq masofadagi omborlarni nazorat qilish

Agar siz biror uzoq masofadagi ombor haqida ko’proq ma’lumot olishni istasangiz siz quyidagi komandani bajarishingiz mumkin: git remote show [uzoq masofadagi server] command. Agar siz ushbu komandani biror bir nom bilan bajarsangiz, masalan,
origin bilan siz quyidagi kabi natijani olasiz:

$ git remote show origin
* remote origin
  Fetch URL: https://github.com/schacon/ticgit
  Push  URL: https://github.com/schacon/ticgit
  HEAD branch: master
  Remote branches:
    master                               tracked
    dev-branch                           tracked
  Local branch configured for 'git pull':
    master merges with remote master
  Local ref configured for 'git push':
    master pushes to master (up to date)

U uzoq masofadagi ombor URL ini, shuningdek, kuzatilayotgan tarmoqlar haqida ma’lumotni ham beradi. Ushbu komanda bajonidil sizga yana siz master tarmog’ida turib
git pull komandasini bajarganingizda uzoq masofadagi ombor tarmog’i o’zgarishlari sizni tarmog’ingizga zarur bo’lgan ma’lumotlar olinishi bilan quyilishi va birlashtirilishini ta’kidlab o’tadi. U shuningdek olingan barcha giper murojaatlar ro’yhatini ko’rsatadi.

Bu oddiy hol uchun misol edi va balkim siz ham shunga o’xshashiga duch kelgan bo’lsangiz kerak. Biroq, agar siz Git ni yuqori intensivda ishlatayotgan bo’lsangiz, siz git remote show komandasidan so’ng yanada ko’p sondagi ma’lumotlarni ko’rishingiz mumkin:

$ git remote show origin
* remote origin
  URL: https://github.com/my-org/complex-project
  Fetch URL: https://github.com/my-org/complex-project
  Push  URL: https://github.com/my-org/complex-project
  HEAD branch: master
  Remote branches:
    master                           tracked
    dev-branch                       tracked
    markdown-strip                   tracked
    issue-43                         new (next fetch will store in remotes/origin)
    issue-45                         new (next fetch will store in remotes/origin)
    refs/remotes/origin/issue-11     stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    dev-branch merges with remote dev-branch
    master     merges with remote master
  Local refs configured for 'git push':
    dev-branch                     pushes to dev-branch                     (up to date)
    markdown-strip                 pushes to markdown-strip                 (up to date)
    master                         pushes to master                         (up to date)

Ushbu komanda git push komandasi bajarilganda o’zgarishsiz holda aynan qaysi mahalliy tarmoq serverga jo’natilishini ko’rsatadi. U shuningdek, uzoq masofadagi tarmoqlardan qaysilari sizda yo’q va qaysi tarmoqlar serverda o’chirilgan bo’lsada sizda hali turganini ham ko’rsatadi. Shu bilan birga
git pull komandasi bajarilganda bar qancha tarmoqlarda qaysi tarmoqlardan ularga ma’lumotlarni quyib olish va birlashtirish ishi bo’lishi ko’rsatilgan.

Uzoq masofadagi omborlarni o’chirish va nomlarini o’zgartirish

Agar siz giper murojaat nomlarini almashtirmoqchi bo’lsangiz git remote rename komandasini ishlatasiz. Bu uzoq masofadagi ombor uchun ishlatilayotgan qisqa nomni o’zrgartiradi. Masalan, siz pb ni paul ga almashtirmoqchi bo’lsangiz siz uni quyidagi tarzda
git remote rename yordamida amalga oshirishingiz mumkin:

$ git remote rename pb paul
$ git remote
origin
paul

Aytish joizki bu shuningdek uzoq masofadagi ombor tarmoqlari nomini ham o’zgartirgan bo’ladi. Endi
pb/master nomlar paul/master ga almashgan bo’ladi.

Agar siz qaysidir sababga ko’ra murojaatni o’chirmoqchi bo’lsangiz (siz serverni o’zgartirdingizmi yoki boshqa ushbu ombor murojaatini ishlatmayabsizmi yohud ushbu murojaatga tegishli ombor faoldigi tugatilgan)
git remote rm ni ishlatishingiz mumkin:

$ git remote rm paul
$ git remote
origin

Manba:

Umumiy Dasturlash
Uzoq masofadagi omborlar bilan ishlash (Git bilan ishlash).