git push ба git pull
Локал дахь commit-уудыг remote руу илгээж, remote-ийн шинэчлэлтийг локал руу татах хоёр үндсэн команд — git push ба git pull.
git push — remote руу илгээх
Локал commit-уудыг remote repository руу илгээх:
git push origin main
Синтакс:
git push <remote-нэр> <branch-нэр>
origin — remote-ийн нэр. main — илгээж буй branch.
Анх удаа push хийхэд нэвтрэх нэр, нууц үг (эсвэл Personal Access Token) асуух болно. SSH key тохируулсан бол асуухгүй.
git push -u — upstream тохируулах
-u тугийг ашиглан локал branch-ийг remote branch-тэй холбоно:
git push -u origin main
Branch 'main' set up to track remote branch 'main' from 'origin'.
Нэг удаа -u ашигласны дараа хожим зүгээр git push гэхэд Git origin main гэдгийг өөрөө ойлгоно:
git push # ← origin main гэж дахин бичих шаардлагагүй
-u нь --set-upstream-ийн товчлол. Шинэ branch анх удаа push хийхэд заавал ашиглана.
Upstream tracking
Upstream tracking нь локал branch болон remote branch хоорондын холболт. Тохируулсны дараа:
git status
On branch main
Your branch is ahead of 'origin/main' by 2 commits.
(use "git push" to publish your local commits)
Локал нь remote-оос хэдэн commit урагш байгааг, буюу remote нь хэдэн commit урагш байгааг харуулна. Ингэснээр синхрончлолын байдлыг хянахад хялбар.
Одоогийн tracking тохируулгыг харах:
git branch -vv
* main a1b2c3d [origin/main: ahead 2] feat: профайл хуудас нэмэх
git pull — remote-аас татах
Remote-ийн шинэчлэлтийг локал руу татах:
git pull
Upstream тохируулагдсан бол remote болон branch-ийг дахин заах шаардлагагүй.
Тодорхой remote ба branch заах:
git pull origin main
git pull нь дотроо хоёр үйлдэл хийдэг:
git pull = git fetch + git merge
git fetch— remote-ийн шинэ commit-уудыг татаж авна (ажлын фолдерт нөлөөлөхгүй)git merge— тэр commit-уудыг одоогийн branch-тэй нэгтгэнэ
git pull --rebase — merge-ийн оронд rebase
git pull --rebase
git pull --rebase = git fetch + git rebase
Ялгаа: remote-ийн шинэчлэлтийг merge хийхийн оронд rebase хийдэг тул merge commit үүсэхгүй, түүх шулуун үлдэнэ.
Олон хөгжүүлэгчтэй bagт git pull --rebase нийтлэг ашиглагддаг — merge commit-уудаас цэвэр байдаг.
Үүнийг анхдагч болгох:
git config --global pull.rebase true
Шинэ branch push хийх
Локалд үүсгэсэн шинэ branch-ийг remote руу анх удаа илгээх:
git switch -c feature/шинэ-боломж
# ... commit хийх ...
git push -u origin feature/шинэ-боломж
Force push — хүчлэн илгээх
Rebase буюу amend хийсний дараа remote-тай зөрчилдвөл хэвийн push хаагддаг. Хүчлэн бичиж хаях:
git push --force-with-lease
--force-with-lease нь -f / --force-оос аюулгүй — remote-д өөрийн мэдэлгүй шинэ commit байвал хүчлэн push хийхгүй, анхааруулна. Бусдын ажлыг санамсаргүйгээр устгахаас сэргийлнэ.
Хуваалцсан branch дээр force push хийхгүй байх — зөвхөн өөрийн branch дээр ашиглана.
Практик workflow
# Өглөө ажлаа эхлэхэд
git pull # Шинэчлэлт татах
# Ажлын явцад
git switch -c feature/шинэ-зүйл
# ... код бичих, commit хийх ...
# GitHub руу илгээх
git push -u origin feature/шинэ-зүйл
# Pull Request үүсгэх → GitHub дээр
# Code review → Merge → main шинэчлэгдэнэ
# main шинэчлэлт татах
git switch main
git pull
Дараагийн хичээлд:
git fetch ашиглан remote-ийн шинэчлэлтийг merge хийлгүйгээр зөвхөн татах аргыг судална.