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).