Mana, o'tgan hafta men ishlatgan barcha Git buyruqlari va ular nima qilishlari.

Tasvir krediti: GitHub Octodex

Ko'pgina yangi boshlanuvchilar singari, men StackOverflow-ni Git buyruqlarini qidirishni boshladim, so'ngra nima qilganliklarini tushunmay turib, nusxalarni joylashtirish.

Tasvir krediti: XKCD

Men eslay boshladim: "Agar eng keng tarqalgan Git buyruqlari ro'yxati va ularning foydali ekanligi haqida tushuntirish bilan birga bo'lsa yaxshi bo'lmasmidi?"

Xo'sh, mana bir necha yil o'tgach, men bunday ro'yxatni tuzib, hatto o'rta darajadagi ishlab chiquvchilar ham foydali deb topishi mumkin bo'lgan eng yaxshi tajribalarni ishlab chiqdim.

Amaliylikni saqlash uchun men ushbu ro'yxatni so'nggi bir hafta davomida amalda bo'lgan Git buyruqlari ro'yxatiga kiritmoqdaman.

Deyarli har bir ishlab chiqaruvchi Git va, ehtimol GitHub-dan foydalanadi. Ammo o'rtacha dasturchi, ehtimol, ushbu uchta buyruqdan 99 foizini ishlatadi:

git qo'shing - barchasi
git spread -am ""
git push kelib chiqishi ustasi

Agar siz bir kishilik guruhda, hackatonda yoki uloqtirishda ishlaydigan ilovada ishlasangiz, barchasi yaxshi, lekin barqarorlik va parvarish ustuvor bo'la boshlaganda, tozalash ishlari olib boriladi, dallanma strategiyasiga yopishadi va yozadi. izchillikli xabarlar muhim ahamiyat kasb etadi.

Men tez-tez ishlatiladigan buyruqlar ro'yxatidan boshlayman, chunki yangi tug'ilgan chaqaloqlar Git bilan nima mumkinligini tushunishni osonlashtiradi, so'ng yanada rivojlangan funktsiyalar va eng yaxshi amaliyotlarga o'tishni boshlaydi.

Doimiy ishlatiladigan buyruqlar

Git-ni omborda (repo) ishga tushirish uchun siz quyidagi buyruqni terishingiz kifoya. Agar siz Git dasturini ishga tushirmasangiz, repo ichida boshqa Git buyruqlarini ishlata olmaysiz.

git tashabbusi

Agar siz GitHub-dan foydalanayotgan bo'lsangiz va kodni onlayn saqlangan GitHub repo-kodiga o'tkazayotgan bo'lsangiz, siz uzoqdan repo ishlatmoqdasiz. Masofaviy repo uchun standart nom (shuningdek, taxallus sifatida tanilgan) kelib chiqishi. Agar siz loyihani Github-dan nusxa ko'chirgan bo'lsangiz, u allaqachon kelib chiqqan. Siz bu kelib chiqishni masofaviy reponing URL manzilini ko'rsatadigan git remote -v buyrug'i bilan ko'rishingiz mumkin.

Agar siz o'zingizning Git repoingizni ishga tushirgan bo'lsangiz va uni GitHub repo bilan bog'lashni istasangiz, GitHub-da uni yaratishingiz, taqdim qilingan URL-ning nusxasini ko'chirishingiz va GitHub tomonidan ta'minlangan URL-manzili bilan qo'shib qo'yishingiz kerak buyrug'idan foydalanishingiz kerak. o'rniga "". U erdan siz masofaviy repolaringizni qo'shishingiz, topshirishingiz va o'tkazishingiz mumkin.

Eskisi masofaviy omborni o'zgartirish kerak bo'lganda ishlatiladi. Aytaylik, siz repo-dasturni boshqa birovdan nusxa ko'chirdingiz va masofaviy omborni asl egasidan o'z GitHub hisob qaydnomangizga o'zgartirmoqchisiz. Masofaviy repo-ni almashtirish uchun set-url-dan tashqari, masofadan boshqarish manbasini qo'shib olish bilan bir xil jarayonni bajaring.

git masofadan turib -v
git uzoqni qo'shish 
git uzoqdan o'rnatilgan-url kelib chiqishi 

Repo nusxasini ko'chirishning eng keng tarqalgan usuli bu git klondan foydalanish va repo URL manzili.

Yodda tutingki, uzoqdagi omborxona siz reponi klonlashtirgan hisob bilan bog'lanadi. Shunday qilib, agar siz boshqa birovga tegishli bo'lgan reponi klonlashtirgan bo'lsangiz, yuqoridagi buyruqlardan foydalangan holda asl nusxasini o'zgartirmaguningizcha GitHub-ga o'tishingiz mumkin bo'lmaydi.

git kloni 

Siz o'zingizni filiallardan foydalangan holda tezda topasiz. Agar siz filiallar nima ekanligini tushunmasangiz, yanada chuqurroq bo'lgan boshqa darsliklar mavjud va ularni o'qishdan oldin ularni o'qib chiqishingiz kerak (bu erda bitta).

Git filiali buyrug'i sizning mahalliy mashinangizdagi barcha filiallarni ro'yxatlaydi. Agar siz yangi filial yaratmoqchi bo'lsangiz, siz git filialidan foydalanishingiz mumkin, va kabi filial nomini ifodalovchi .

Gitni tekshirish buyrug'i mavjud filialga o'tadi. Siz shuningdek yangi filialni yaratish va darhol unga o'tish uchun git checkout -b buyrug'idan foydalanishingiz mumkin. Aksariyat odamlar buni alohida filial va chiqish buyruqlari o'rniga ishlatishadi.

git filiali
git filiali 
git hisobi 
git chiqish -b 

Agar siz filialga bir nechta o'zgartirishlar kiritgan bo'lsangiz, uni "rivojlantiring" deb nomlang va siz o'sha filialni yana o'z master filialingizga birlashtirishni xohlasangiz, siz git birlashtirish buyrug'idan foydalanasiz. Magistratura tarmog'ini belgilab qo'yishni xohlaysiz, so'ngra magistral tarmog'iga birlashtirish uchun git birlashtirish dasturini ishga tushiring.

git birlashtirish 

Agar siz bir nechta odam bilan ishlayotgan bo'lsangiz, GitHub-da repo yangilangan holatda bo'lasiz, ammo sizda mahalliy o'zgarishlar bo'lmaydi. Agar shunday bo'lsa, masofaviy filialdan eng so'nggi o'zgarishlarni olish uchun siz git pull origin dan foydalanishingiz mumkin.

git pull kelib chiqishi 

Agar siz qanday fayllar o'zgartirilganligini va qanday kuzatilayotganligini ko'rishga qiziqsangiz, git holatidan foydalanishingiz mumkin. Agar har bir fayl qancha o'zgarganligini ko'rishni istasangiz, har bir faylda o'zgargan chiziqlar sonini ko'rish uchun git diff-dan foydalanishingiz mumkin.

git holati
git diff --stat

Murakkab buyruqlar va eng yaxshi amaliyotlar

Ko'p o'tmay, siz bajaradigan vazifalaringiz chiroyli ko'rinishini va izchil bo'lishni istagan joyga etib borasiz. O'zingizning majburiyatlaringizni tushunishni osonlashtirish yoki tasodifiy o'zgarishlarni qaytarish uchun siz o'z tarixingiz tarixi bilan tanishib chiqishingiz kerak bo'ladi.

Git jurnali buyrug'i bajarilish tarixini ko'rishga imkon beradi. Bajarganlaringiz tarixini ko'rish uchun bundan foydalanishni xohlaysiz.

Sizning topshiriqlaringiz raqamlar va harflarning tasodifiy seriyasidan iborat bo'lgan xabarlar va xeshlar bilan birga keladi. Masalan, xesh quyidagicha ko'rinishi mumkin: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

git log

Aytaylik, siz ilovangizni buzgan biror narsani qo'zg'adingiz. Uni tuzatib, biron bir yangi narsani surish o'rniga, bitta gunohni orqaga qaytarib yana urinib ko'ring

Agar siz o'z vaqtida orqaga qaytib, ilova oldingi majburiyatlaringizni tekshirishni xohlasangiz, buni to'g'ridan-to'g'ri filial nomi sifatida hash-dan foydalanib qilishingiz mumkin. Bu sizning ilovangizni joriy versiyadan ajratadi (chunki siz hozirgi versiyani emas, balki tarixiy yozuvni tahrirlamoqdasiz).

git chiqish c3d88eaa1aa4e4d5f

Keyin, agar siz ushbu tarixiy filialdan o'zgarishlarni amalga oshirsangiz va yana turtmoqchi bo'lsangiz, kuch bilan surish kerak bo'ladi.

E'tibor bergan: kuchni itarish xavfli va faqat kerak bo'lsa, amalga oshirish kerak. Bu sizning ilovangizning tarixini o'zgartiradi va siz undan keyin kelgan narsangizni yo'qotasiz.

git push -f kelib chiqishi ustasi

Qolgan vaqtlarda hamma narsani bitta narsada ushlab turish amaliy emas. Ehtimol, siz potentsial xavfli narsani sinab ko'rishdan oldin muvaffaqiyatingizni saqlamoqchisiz yoki siz xato qilgansiz va o'z versiyangiz tarixida xato qilishdan uyalishni istamoqchisiz. Buning uchun bizda rezitatsiya mavjud.

Aytaylik, siz o'zingizning mahalliy tarixingizda 4 ta topshiriq bor (GitHub-ga o'tmagan), siz orqaga va orqaga qaytib borgansiz. Sizning topshiriqlaringiz beparvo va qat'iy ko'rinishga ega. Rezazatsiyadan foydalanishingiz mumkin, bularni barchasini bitta, sodda topshiriqqa birlashtirish uchun.

git rebase -i HEAD ~ 4

Yuqoridagi buyruq sizning kompyuteringizning odatiy muharririni (agar Vim bo'lsa, uni boshqasiga o'rnatmagan bo'lsangiz) ochadi va o'zingizni qanday qilib o'zgartirishlaringizni o'zgartirishingiz mumkin. U quyidagi kodga o'xshaydi:

130deo9 eng eski buyurtma xabarini tanlang
4209fei ikkinchi eng eski buyurtma xabarini tanlang
4390gne uchinchi eng qadimgi xabarni tanlang
bmo0dne yangi xabarni tanlang

Bularni birlashtirish uchun, biz "tanlash" parametrini "tuzatish" ga o'zgartirishimiz kerak (kod quyida joylashgan hujjat ko'rsatadiki) buyruqlarni bekor qilish va topshirilgan xabarlarni o'chirish uchun. Shuni esda tutingki, vim-da, matnni tahrirlash uchun siz "a" yoki "i" tugmachalarini bosishingiz kerak va saqlash va chiqish uchun siz "shift + z + z" va "shift + z + z" tugmalarini kiritishingiz kerak. Mendan so'ramang, shunchaki.

130deo9 eng eski buyurtma xabarini tanlang
fixup 4209fei ikkinchi eng eski majburiyat xabari
fixup 4390gne uchinchi eng qadimgi xabar
fixup bmo0dne eng yangi xabar

Bu barcha majburiyatlarni "eng eski majburiyat xabari" xabari bilan birlashtiradi.

Keyingi qadam majburiyat xabari nomini o'zgartirish. Bu mutlaqo fikrlar masalasidir, ammo siz izchil tartibni davom ettirsangiz, qilgan barcha ishlaringiz yaxshi. Men Angular.js uchun Google tomonidan berilgan ko'rsatmalardan foydalanishni maslahat beraman.

Xabarni o'zgartirish uchun o'zgartirish bayrog'idan foydalaning.

git spread --amend

Bu shuningdek vim-ni ochadi va matnni tahrirlash va saqlash qoidalari yuqoridagi kabi bir xil bo'ladi. Yaxshi majburiyat to'g'risidagi xabarga misol berish uchun, qo'llanmada keltirilgan qoidalarga rioya qilish kerak.

feat: to'lovlar sahifasiga tasmali chiqish tugmachasini qo'shish
- tasmadan chiqish tugmachasini qo'shish
- chiqish uchun testlarni yozish

Qo'llanmada sanab o'tilgan turlarga rioya qilishning bir afzalligi shundaki, u yozuvlarni o'zgartirish jurnallarini osonlashtiradi. Shuningdek, siz muammolarni ko'rsatadigan altbilgida (yana ko'rsatmada ko'rsatilgan) ma'lumotlarni kiritishingiz mumkin.

Eslatma: agar siz biron bir loyihada ishlayotgan bo'lsangiz, uni qaytarib bermaslik va pulingizni yo'qotishdan ehtiyot bo'lishingiz kerak va kodni GitHub-ga yuborishingiz kerak. Agar siz versiyalar tarixini odamlarning og'zida o'zgartirishni boshlasangiz, xatolarni kuzatish qiyin bo'lgan hamma odamlarning hayotini qiyinlashtirishi mumkin.

Git-ga tegishli son-sanoqsiz mumkin bo'lgan buyruqlar mavjud, ammo bu sizning dastlabki bir necha yil dasturlashingiz kerak bo'lgan yagona buyruqlardir.

Sam Corcos Sightline Maps-ning etakchi ishlab chiqaruvchisi va hammuassisi bo'lib, u 3D bosib chiqarish xaritalari uchun eng intuitiv platforma, shuningdek, Phoenix va React yordamida kengaytiriladigan ishlab chiqarish dasturlarini yaratish uchun o'rta darajadagi o'quv qo'llanmasi - LearnPhoenix.io hisoblanadi.