Git bilan ishlashda asosiy eslatmalar

Published on
6 mins read
––– views
git-notes
Photo by Yancy Min on Unsplash

Ushbu post men kabi 'git' orqali 'command-line' bilan ishlashni afzal ko'radigan dasturchilar uchun yozilgan. Agar siz GUI-ni yaxshi ko'rsangiz, umid qilamanki, siz hali ham bu yerda foydali narsalarni topishingiz mumkin.

Git alias

Git aliases are a powerful workflow tool that create shortcuts to frequently used Git commands

git alias bu sizga uzun bo'lgan buyruqlarni qisqartirib, o'zizga moslab yozish uchun yordam beradi(qisqacha o'zingiz uchun shortcut).

Syntax

$ git config --global alias.<shortcut> <original-command>

Aliasdan foydalanganda --global buyrug'ini qo'shib qoyishni unutmang aks holda boshqa proyektlarizda ishlamay qolishi mumkin

Git status

Commit qilishdan oldin o'zgarishlarni tekshirib oling:

$ git config --global alias.st status
# Endi `git status` o'rniga `git st` dan foydalanishingiz mumkin
$ git st
On branch v2
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: components/Twemoji.js
modified: css/tailwind.css
modified: data/blog/git-notes.mdx

Tip: git st alias qilgan buyrug'imizga --short buyrug'ini qo'shib qoysak git status qisqartirilgan holda ya'ni terminalda ortiqcha narsalarni chiqarmay ko'rsatadi. Aliasimizga git status shortni qo'wib qoyamiz.

$ git config --global alias.s 'status --short'
# endi `git st` buyrug'i o'rniga `git s` buyrug'idan foydalanamiz
$ git s
M components/Image.js
M data/blog/git-notes.mdx
?? public/static/images/misol.jpg

Ancha tozaroq ma'lumotlar chiqdi, shundaymi?
Git status short haqida yana koproq shu link orqali bilib olishingiz mumkin.

Git commit

$ git config --global alias.cm 'commit -m'

Commit qilib gitga o'zgarishlarini qo'shib olamiz

$ git cm "Initial commit"

Tip: Agar o'zgarishlar faqat mavjud fayllarga tegishli bo'lsa --all yoki -a bayrog'idan (ingliz tilida flag deb yuritiladi) foydalaning.

$ git config --global alias.cam 'commit -am'
# Hozir bu yerda ikkita git buyrug'ini ishlatamiz
$ git add style.css # `style.css` is already existed, not new file!
$ git cm "Update style"
# BU yerda shu ishni bitta buyruq bilan qilamiz
$ git cam "Update style"

Ko'proq ma'lumotni shu linkdan olishingiz mumkin.

Git stash

Stash the changes in a dirty working directory away

Git stash o'zgarishlarni githubni alohida joyida saqlaydi.

# Alias yaratish shartmas ozi oson xotiramizda qoladi
$ git stash

Alohida folderda turgan narsani qaytarib olib avvalgi folderda kodlarimiz qolmasligi uchun ushbu buyruqdan foydalanamiz:

$ git stash pop

Bu uchun alohida alias yaratib olamiz:

$ git config --global alias.sp 'stash pop'
# Hozir
$ git sp
# Oldin
$ git stash pop

Git stash haqida ko'proq ma'lumotni ushbu link orqali bilib olishingiz mumkin.

Git pull/push

pull rebase va force push buyruqlari bizga doim toza commit qilishga yordam berishadi!

  • pull rebase

    $ git config --global alias.prb 'pull origin --rebase'
    # Hozir
    $ git pull origin --rebase main
    # Keyin
    $ git prb main
    # Yoki
    $ git prb master

reabase yangi github foydalanuvchilari uchun maslahat berilmaydigan buyruqlardan biri

  • Xosh, rebasedan song muammo chiqsachi?

    git diff buyrug'i bilan muammolarni filtirlaymiz bu uchun ham alias yasab olamiz:

    $ git config --global alias.cf 'diff --name-only --diff-filter=U'
    # Barcha muammolarni ko'rish
    $ git cf
    # Barcha muammolarni bartaraf etganimizdan so'ng
    $ git add .
    # rebaseni tugatamiz
    $ git rebase --continue
  • force push

rebasedan keyin aksariyat holda push ishlamaydi bu holda repoga projectni majburan push qilishimiz uchun:

$ git config --global alias.pf 'push --force-with-lease'
# rebasingdan so'ng
$ git pf

Nima uchun --force buyrug'i emas?

TL;DR

Doim ham --force buyrug'idan foydalanish xato hisoblanadi agar 2 ta dasturchi bitta projectda ishlasa bu buyruq katta muammolar keltirib chiqarishi mumkin ya'ni repodagi o'zgarishlarga qaramay majburan push qiladi, bu holda bizga repoda o'zgarishlar bo'lmagan vaqtda push qiladigan buyruq --force-with-lease yordamga keladi.

Git checkout

$ git config --global alias.co 'checkout'
# Keyin
$ git co main

Yangi branch yaratamiz:

$ git config --global alias.cob 'checkout -b'
# Keyin
$ git cob feature-x

Tip: oldingi branchga checkout qilish uchun git co - dan foydalanamiz

Masalan:

$ git branch
dev
* branch
main
# hozirgi branch bu `branch`
# `dev` ga checkout qilamiz
$ git co dev
#`branch` dan foydalanish uchun qaytamiz
$ git co -
# O'rniga
$ git checkout branch

Git diff

$ git config --global alias.d 'diff'
# Masalan
$ git d style.css

Eslab qoling yoki yozib oling

Barcha qilgan Aliasingizni ~/.gitconfig faylda (Macos) da ko'rishingiz yoki tahrirlashingiz mumkin.

$ vim ~/.gitconfig
# Config filedan aliaslaringizni toping
[alias]
s = status --short
st = status
cm = commit -m
# ...

Bu ishni qilish uchun sizdan talab qilinadigan narsa vimni bilishingiz
Ushbu mem holatiga tushib qolishdan o'zingizni asrang.

vim-meme

Git workflow

# Stash qiling
$ git stash
# o'zgarishlarni yangilab oling
$ git prb main
# stashdagi o'zgarishlarni yuklab oling
$ git sp
# git statusni tekshiring
$ git s
# o'zgargan fayllarni tekshirib oling
$ git d # or git d file.ext
$ git add .
# Commit
$ git cm "commit message"
# yoki
$ git cam "commit message"
# o'zgarishlarni yana yangilang
$ git prb main
# Agar muammolar bolsa rebase qiling
$ git add file.ext
$ git rebase --continue
# Force push
$ git pf

Bu Open Source dasturchi hayoti

.gitignore va .gitkeep

.gitignore

Foydalanishga tayyor shablonlar

Tip: Fayl va papkalarni yoz

# hamma fayl va papkalarni ignore qilamiz
homework/*
# Faqat shu faylni push qilish uchun olib qolamiz
!homework/file-to-keep

.gitkeep

Bo'sh papkani repoga qanday yuklash mumkin?

.gitkeep faylini yarating, uni bo'sh papkaga qo'ying, endi siz buni push qilsangiz bo'ladi!

**.gitkeep o'rniga boshqa fayl ham qoyishingiz mumkin bu yerda hiyla qilyapmiz repoga projectni push qilganda bo'sh papkalar tashlab ketiladi biz shunchaki ichiga oddiy fayl yuklayapmiz.

Happy sharing

Ma'lumotnomalar