Ачааллж байна...
Өмнөх хичээлд бид GitHub гэж юу болохыг ойлгож, бүртгэл үүсгэж, local ба remote гэсэн хоёр ертөнц болон тэдгээрийг холбох хоёр сумын тухай ярьсан. Энэ хичээлд дээш чиглэсэн сумыг анх удаа ажиллуулна. GitHub дээр хоосон repository үүсгэж, таны компьютер дээрх зарлагын бүртгэлийг түүнтэй холбож, анхны push хийнэ. Энэ үйл явцын дунд Git танаас GitHub-д нэвтрэхийг хүснэ. Нэвтрэх ажиллагаа зөвхөн анхны удаад шаардлагатай бөгөөд Бүлэг 1-ийн 3 дугаар хичээлд суулгагч дээр үлдээсэн Git Credential Manager гэдэг хэрэгсэл түүнийг танд хялбар болгоно.
Хичээлийн төгсгөлд та browser-оо нээж, өөрийн кодыг GitHub-ийн хуудсанд харах болно. Энэ бол таны код таны компьютерээс анх удаа гарч, дэлхийн аль ч өнцгөөс хүрч болохуйц болсон мөч юм. Мөн push-ийг өдөр тутмын ажилдаа хэрхэн хэрэглэхийг, git status remote-ийн тухай юу хэлдгийг сурна. Бид Түвшин 1-ийн удирдлагатай бүтээлд Git-д оруулсан зарлагын бүртгэлийн төсөл дээр ажиллана.
Хэн нэгэнд илгээмж явуулахын тулд хоёр зүйл хэрэгтэй: хүлээн авагчийн хаяг, мөн илгээмжийг тэр хаяг руу авч явах үйлдэл. Хаягийг нэг удаа хаягийн дэвтэртээ бичээд, дараа нь "ээж" гэх мэт товч нэрээр дууддаг. Харин илгээмж явуулах бүрт хаягийг дахин бичих шаардлагагүй, "ээж рүү явуул" гэхэд хангалттай.
Git-д remote гэдэг нь яг тэр хаягийн дэвтэр юм. Бид GitHub дээрх repository-ийн хаягийг нэг удаа бүртгэж, түүнд товч нэр өгнө. Тогтсон заншлаар тэр нэр нь origin буюу "эх" байдаг. Дараа нь push бол илгээмж явуулах үйлдэл: таны local дээрх шинэ commit-уудыг тэр хаяг руу авч явна. Анхны илгээмжийн үед шуудангийн газар таныг хэн болохыг шалгана, энэ бол нэвтрэх алхам. Дараа нь таныг таньж, дахин асуухгүй.
Алхам 1: Эхлэх байдлаа шалгах
VS Code-д зарлагын бүртгэлийн фолдероо нээж, terminal-д бичнэ үү.
Command:
git status
git log --onelineГаралт:
On branch main
nothing to commit, working tree clean
9f2b6e0 (HEAD -> main) Format amounts with thousands separator
a4c81f2 Initial commitmain дээр, цэвэр, Түвшин 1-ийн удирдлагатай бүтээлийн хоёр commit байна. Push хийхийн өмнө цэвэр байдал чухал, учир нь зөвхөн commit хийгдсэн зүйл л илгээгдэнэ. Commit хийгээгүй өөрчлөлт таны компьютер дээр үлдэнэ.
Мөн одоогоор remote бүртгэгдээгүй байгааг шалгая.
Command:
git remoteГаралт:
Хоосон. Хаягийн дэвтэр тань одоохондоо хоосон байна.
Алхам 2: GitHub дээр хоосон repository үүсгэх
Browser-оо нээж GitHub-д нэвтэрнэ үү. Баруун дээд буланд “+” тэмдэг бий, түүнийг дараад “New repository” сонгоно уу. Шинэ repository үүсгэх хуудас нээгдэнэ.
[Зураг: “+” цэс, New repository сонголт]
Хуудасны талбаруудыг нэг нэгээр нь бөглөе. Repository name талбарт expense-tracker гэж бичнэ үү. Энэ нэр таны local фолдерын нэртэй ижил байх албагүй ч ижил байвал ойлгомжтой. Нэр нь зураасаар холбогдсон, жижиг үсгээр бичигдсэн байх нь салааны нэрийн адил тогтсон заншил. Description буюу тайлбар талбар сонголт бөгөөд “Personal expense tracker written in Python” гэх мэт нэг өгүүлбэр бичиж болно.
Дараа нь Public эсвэл Private сонгоно. 3.4 дүгээр хичээлд хувийн өгөгдлийн тухай шийдвэр гаргасан бол, мөн энэ төслийг portfolio-доо ашиглахаар төлөвлөж байгаа бол Public сонгоорой. Хэрвээ одоохондоо итгэлгүй байвал Private сонгож, хожим тохиргооноос Public болгож болно. Энэ сонголтыг хүссэн үедээ өөрчилж болдог.
Одоо энэ хуудасны хамгийн чухал хэсэг ирлээ. Доод хэсэгт README файл нэмэх, .gitignore сонгох, license сонгох гэсэн сонголтууд байна. Эдгээрийн аль нэгийг ч бүү сонгоорой. Бүгдийг нь хоосон, анхдагч байдлаар нь орхино. Учир нь эдгээрийн аль нэгийг сонговол GitHub repository-д өөрийн анхны commit-ыг үүсгэнэ. Тэгвэл GitHub дээрх цомог таны local цомгоос өөр түүхтэй эхэлж, анхны push тань татгалзагдана. Бид өөрийн түүхтэй цомгоо хоосон газар руу илгээх гэж байгаа тул GitHub-ийн repository яг хоосон байх ёстой.
Бөглөж дууссаны дараа доод хэсгийн “Create repository” товчийг дарна уу.
[Зураг: New repository хуудас, нэр бөглөсөн, README/.gitignore/license сонгоогүй]
Алхам 3: GitHub-ийн зааврыг унших
Repository үүсгэсний дараа GitHub хоосон repository-ийн хуудсыг харуулна. Тэнд хэд хэдэн заавар бий бөгөөд тэдгээрийн нэг нь “…or push an existing repository from the command line” буюу "эсвэл байгаа repository-оо command line-аас push хий" гэсэн гарчигтай. Энэ бол яг бидний нөхцөл. Тэр хэсэгт дараах гурван мөр байна, таны username-тэй.
git remote add origin https://github.com/bat-dorj/expense-tracker.git
git branch -M main
git push -u origin main[Зураг: хоосон repository хуудас, “push an existing repository” хэсэг тодруулсан]
Эдгээрийг шууд хуулж бичихийн оронд нэг нэгээр нь ажиллуулж, тус бүр юу хийдгийг ойлгоё. Хаягийн дээд хэсэгт HTTPS ба SSH гэсэн сонголт байвал HTTPS сонгогдсон байх ёстой. Хаяг “https://”-ээр эхэлсэн эсэхийг шалгаарай.
Алхам 4: Хаягийг бүртгэх
GitHub-ийн хуудаснаас эхний мөрийг хуулж, VS Code-ийн terminal-д буулгаж ажиллуулна уу. Хаяг таны username-тэй байх ёстой.
Command:
git remote add origin https://github.com/bat-dorj/expense-tracker.gitГаралт:
Чимээгүй, амжилттай. Command-ыг задалъя. “git remote add” нь "шинэ remote нэмэх", “origin” бол бидний өгч буй товч нэр, хаяг нь GitHub дээрх repository-ийн бүтэн хаяг. Хаягийн төгсгөлийн “.git” нь энэ хаяг вэб хуудас биш, Git-ийн repository гэдгийг заана. Шалгая.
Command:
git remote -vГаралт:
origin https://github.com/bat-dorj/expense-tracker.git (fetch)
origin https://github.com/bat-dorj/expense-tracker.git (push)“-v” нь verbose буюу дэлгэрэнгүй гэсэн утгатай. Хаягийн дэвтэрт нэг бичлэг байна: origin болон түүний хаяг. Хаяг хоёр удаа харагдаж байгаа нь Git нэг remote-д хоёр зориулалттай хаяг хадгалдагтай холбоотой: “(fetch)” нь татахад, “(push)” нь илгээхэд ашиглагдана. Ихэнх тохиолдолд хоёулаа ижил байдаг.
Алхам 5: Салааны нэрийг баталгаажуулах
Command:
git branch -M mainГаралт:
Энэ command нь одоогийн салааг main гэж нэрлэнэ. “-M” нь move буюу шилжүүлэх, өөрөөр хэлбэл нэр солих гэсэн утгатай. Бид Бүлэг 1-ээс эхлэн main нэрийг тохируулсан тул таны салаа аль хэдийн main нэртэй, энэ command юу ч өөрчлөөгүй. GitHub энэ мөрийг master зэрэг хуучин нэр ашигладаг хүмүүст зориулж бичдэг. Ажиллуулахад ямар ч хор хөнөөлгүй тул GitHub-ийн зааврыг бүрэн дагалаа.
Алхам 6: Анхны push
Одоо гол мөч ирлээ.
Command:
git push -u origin mainЭнэ command-ыг задалъя. “git push” нь илгээх, “origin” бол хаана руу, “main” бол аль салааг. Харин “-u” бол онцгой: энэ нь “upstream тохируулах” гэсэн утгатай бөгөөд Git-д "миний local main салаа цаашид origin дээрх main салаатай холбоотой" гэж хэлдэг. Энэ холболтыг нэг удаа тохируулсны дараа цаашид зүгээр git push гэж бичихэд хангалттай болно.
Анхны push-ийн үед таныг GitHub-д нэвтрээгүй тул Enter дарсны дараа “Connect to GitHub” гэсэн гарчигтай жижиг цонх гарч ирнэ. Энэ бол Git Credential Manager юм. Цонхонд “Sign in with your browser” буюу “browser-оороо нэвтрэх” гэсэн товч байна, түүнийг дарна уу.
[Зураг: Git Credential Manager-ийн “Connect to GitHub” цонх]
Таны browser нээгдэж, GitHub-ийн хуудас гарна. Хэрвээ та browser дээрээ GitHub-д нэвтэрсэн бол шууд зөвшөөрөл хүссэн хуудас харагдана. Тэнд Git Credential Manager таны GitHub бүртгэлд хандах эрх хүсэж байгааг харуулна. Хэрвээ нэвтрээгүй бол эхлээд нэвтрэх хуудас гарна, хоёр шатлалт баталгаажуулалт идэвхтэй бол утасныхаа кодыг ч оруулна. Зөвшөөрөл хүссэн хуудсан дээр ногоон товчийг дарж зөвшөөрнө үү. Дараа нь browser “Authentication Succeeded” буюу "Нэвтрэлт амжилттай боллоо" гэсэн мессеж харуулна. Тэр табыг хааж, VS Code руу буцаарай.
[Зураг: browser дээрх зөвшөөрлийн хуудас]
Энэ үйлдлээр та GitHub-ийн нууц үгээ terminal-д хэзээ ч бичээгүй гэдгийг анзаараарай. Git Credential Manager GitHub-аас аюулгүй түлхүүр авч, түүнийг Windows-ийн нууц санд хадгалсан. Цаашид push хийх бүрт Git тэр түлхүүрийг автоматаар ашиглах тул энэ цонх дахин гарахгүй.
Terminal-д буцаж ирэхэд push дууссан байна.
Гаралт:
Enumerating objects: 11, done.
Counting objects: 100% (11/11), done.
Delta compression using up to 8 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (11/11), 1.21 KiB | 1.21 MiB/s, done.
Total 11 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/bat-dorj/expense-tracker.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.Энэ гаралт эхэндээ урт, техникийн мэт харагдах ч хоёр хэсэгт хуваавал ойлгомжтой. Эхний зургаан мөр нь Git илгээмжээ хэрхэн бэлтгэсэн тухай тайлан. “Enumerating objects” нь "объектуудыг тоолж байна", “Counting” нь "тоолж байна", “Compressing” нь "шахаж байна", “Writing” нь "бичиж байна" гэсэн утгатай. Git таны бүх commit, файлуудыг жижиг хэсгүүд болгон тоолж, хэмжээг багасгахын тулд шахаж, сүлжээгээр илгээсэн. Мөр бүрийн төгсгөлийн “done” нь тухайн шат дууссаныг заана. Тоонууд таны төслийн хэмжээнээс хамаарах тул таных өөр байна. Энэ хэсгийг уншихдаа зөвхөн бүх мөр “done”-оор төгссөн эсэхийг харахад хангалттай.
Сүүлийн гурван мөр бол жинхэнэ мэдээ. “To https://github.com/bat-dorj/expense-tracker.git” нь илгээмж хаашаа явсныг заана. “* [new branch] main -> main” нь "шинэ салаа: таны local main GitHub дээрх main болсон" гэсэн утгатай. Од тэмдэг ба “new branch” гэдэг үг GitHub дээр main салаа анх удаа үүссэнийг харуулна. Сум “->” нь чиглэлийг заана: зүүн талынх таны local салаа, баруун талынх remote дээрх салаа. Хамгийн сүүлийн мөр “branch ‘main’ set up to track ‘origin/main’” нь “main салаа origin/main-ийг дагахаар тохируулагдлаа” гэсэн утгатай бөгөөд энэ бол “-u”-ийн үр дүн.
Алхам 7: Кодоо GitHub дээр харах
Browser дээрх GitHub-ийн repository хуудсаа дахин ачаална уу. Хоосон зааврын оронд одоо таны файлууд харагдана: .gitignore, data фолдер, main.py, report.py, storage.py, formatting.py. Файл бүрийн хажууд түүнийг хамгийн сүүлд өөрчилсөн commit-ын message харагдана. Дээд хэсэгт “2 commits” гэх мэт тоо байна. Аль нэг файлын нэр дээр дарвал түүний агуулгыг харна. Таны компьютер дээр бичсэн код одоо интернэтэд, таны GitHub хуудсанд байна.
[Зураг: файлуудтай repository хуудас]
.gitignore-ийн ажлыг энд өөрийн нүдээр шалгах сайхан боломж байна: venv, pycache GitHub дээр огт харагдахгүй. Хэрвээ та data файлаа .gitignore-д нэмсэн бол тэр ч бас харагдахгүй. Таны хар жагсаалт GitHub-ийг ч мөн хамгаалсан.
Одоо terminal-д буцаж ирээд status-ээ харъя.
Command:
git statusГаралт:
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree cleanШинэ мөр гарч ирлээ: “Your branch is up to date with ‘origin/main’” буюу "Таны салаа origin/main-тай шинэчлэгдсэн байдалтай". Upstream тохируулснаас хойш git status таны local салааг GitHub дээрх хувилбартай харьцуулж, тэдгээр нь ижил байгаа эсэхийг хэлж өгдөг болсон.
Энд нэг нарийн зүйлийг ойлгох хэрэгтэй. origin/main гэдэг нь GitHub дээрх main өөрөө биш, харин таны компьютерийн санаж буй “GitHub-тай хамгийн сүүлд ярилцахад тэнд main ийм байсан” гэсэн тэмдэглэл юм. Зүйрлэлээр бол энэ нь найзаас тань сүүлд ирсэн захидал: найзынхаа тухай хамгийн сүүлийн мэдээ, гэхдээ тэр захидлаас хойш юу болсныг мэдэхгүй. Хэрвээ хэн нэгэн GitHub дээр шууд өөрчлөлт хийсэн бол таны origin/main тэр тухай мэдэхгүй, та GitHub-тай дахин ярилцах хүртэл. Энэ ойлголт 4.4 дүгээр хичээлд маш чухал болно. Одоохондоо “up to date” гэдэг нь "миний мэдэж байгаагаар хоёр цомог ижил" гэсэн утгатай гэдгийг санахад хангалттай.
Анхны push нэг удаагийн ёслол байсан бол өдөр тутмын push маш энгийн. Жижиг өөрчлөлт хийж үзье. VS Code-д .gitignore-ийг нээж, төгсгөлд нь дараах хоёр мөрийг нэмж хадгална уу.
# Logs
*.logCommand:
git add .gitignore
git commit -m "Ignore log files"
git statusГаралт:
[main 1d3e5a7] Ignore log files
1 file changed, 3 insertions(+)
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree cleanCommit хийгдсэний дараа status-ийн мөр өөрчлөгдлөө: “Your branch is ahead of ‘origin/main’ by 1 commit” буюу "Таны салаа origin/main-аас 1 commit-оор түрүүлж байна". Өөрөөр хэлбэл таны local цомогт GitHub-д хараахан очоогүй нэг зураг байна. Хаалтан дотор Git дараагийн алхмыг зөвлөж байна: “local commit-уудаа нийтлэхийн тулд git push ашигла”. Энэ мөр нь push хийхээ мартсан эсэхийг тань үргэлж сануулна.
Command:
git pushГаралт:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 312 bytes | 312.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/bat-dorj/expense-tracker.git
9f2b6e0..1d3e5a7 main -> mainЭнэ удаад “-u origin main” бичих шаардлагагүй байлаа, учир нь upstream аль хэдийн тохируулагдсан. Нэвтрэх цонх ч гарсангүй. “remote:” гэж эхэлсэн мөр бол GitHub өөрөө хэвлэсэн мессеж бөгөөд хүлээн авсан өгөгдлөө боловсруулсныг мэдэгдэж байна. Хамгийн чухал мөр нь сүүлийнх: “9f2b6e0..1d3e5a7 main -> main”. Энэ нь “GitHub дээрх main 9f2b6e0-ээс 1d3e5a7 руу шинэчлэгдлээ” гэсэн утгатай. Хоёр цэгийн тэмдэглэгээг 3.3 дугаар хичээлийн merge-ээс таньж байгаа: “-аас ... хүртэл”. Энэ удаад “[new branch]” гэсэн бичиг алга, учир нь салаа GitHub дээр аль хэдийн бий.
Одоо git status бичвэл дахин “up to date” гэж харуулна. GitHub хуудсаа дахин ачаалбал commit-ын тоо 3 болж, .gitignore-ийн хажууд “Ignore log files” message харагдана. Өдөр тутмын мөчлөг ингэж нэг мөрөөр өргөжиж байна: засах, add, commit, push.
Хэр олон удаа push хийх вэ
Өмнөх хичээлд GitHub зөвхөн таны илгээсэн зүйлийг хадгалдаг гэж хэлсэн. Тиймээс энгийн дадал бол ажлын өдрийн төгсгөлд, эсвэл ажлын утга бүхий хэсэг дуусах бүрт push хийх явдал. Commit бүрийн дараа push хийх шаардлагагүй, гэхдээ хэдэн өдрийн commit-ыг илгээлгүй хадгалах нь нөөц хуулбарын санааг үгүй болгодог. “Ahead of ‘origin/main’” мөр таны status-д удаан хугацаагаар байж байвал энэ нь push хийх цаг болсны дохио юм.
Хүсвэл GitHub дээрх repository хуудсандаа дээд хэсгийн “commits” тоон дээр дарж үзээрэй. Таны гурван commit жагсаалтаар, message, зохиогч, огноотойгоор харагдана. Энэ бол git log-ийн browser дахь хувилбар юм. Аль нэг commit дээр дарвал тэр commit-ын өөрчлөлтийг ногоон, улаан мөрүүдээр харуулна, яг л git diff шиг. 2.3 дугаар хичээлд terminal-д уншиж сурсан зүйл тань энд ч яг адилхан хүчинтэй.
Remote аль хэдийн бүртгэгдсэн байх.
error: remote origin already exists.“origin нэртэй remote аль хэдийн байна” гэсэн утгатай. Хэрвээ та git remote add-ийг хоёр удаа ажиллуулсан бол энэ мессеж гарна, юу ч эвдрээгүй. git remote -v-ээр хаяг зөв эсэхийг шалгаарай. Хэрвээ хаягийг буруу бичсэн бол дараах command-аар засна.
git remote set-url origin https://github.com/bat-dorj/expense-tracker.gitRepository олдохгүй байх.
remote: Repository not found.
fatal: repository 'https://github.com/bat-dorj/expense-tracer.git/' not found“remote:” мөр GitHub-аас ирсэн бөгөөд “Repository олдсонгүй” гэж байна. Доорх мөр Git-ийн дүгнэлт. Хамгийн түгээмэл шалтгаан нь хаягийн үсгийн алдаа: энд “tracker”-ийн оронд “tracer” гэж бичигджээ. git remote -v-ээр хаягаа шалгаад дээрх set-url command-аар засна уу. Хоёр дахь боломжит шалтгаан нь нэвтэрсэн бүртгэл тань өөр бүртгэл байх, private repository-г зөвхөн эзэмшигч нь харж чадна.
Имэйлийн нууцлалаас болж push татгалзагдах. Хэрвээ та өмнөх хичээлд “Block command line pushes that expose my email” сонголтыг идэвхжүүлсэн бол анхны push дээр дараах мессеж гарч болно.
remote: error: GH007: Your push would publish a private email address.
remote: You can make your email public or disable this protection by visiting:
remote: https://github.com/settings/emails
To https://github.com/bat-dorj/expense-tracker.git
! [remote rejected] main -> main (push declined due to email privacy restrictions)
error: failed to push some refs to 'https://github.com/bat-dorj/expense-tracker.git'"Таны push нууц имэйл хаягийг нийтлэх гэж байна" гэсэн утгатай. Таны зарлагын бүртгэлийн commit-ууд имэйлээ нууцлахаас өмнө, хуучин имэйлээр хийгдсэн тул GitHub таныг хамгаалж татгалзсан. “! [remote rejected]” мөр нь GitHub хүлээж аваагүйг заана. Хоёр шийдэл бий. Эхнийх нь хамгийн энгийн: тэр хоёр commit-д хуучин имэйл тань харагдахыг хүлээн зөвшөөрч, GitHub-ийн Settings, Emails хэсэгт блоклох сонголтыг унтрааж, push хийгээд, дахин идэвхжүүлэх. Хоёр дахь нь цэвэр шийдэл: таны түүх хоёрхон commit-тэй тул 3.4 дүгээр хичээлийн "Хувийн өгөгдлийг commit хийсэн байх" хэсэгт тайлбарласан аргаар .git фолдерыг устгаж, шинэ имэйлтэйгээр төслөө Git-д дахин оруулах. Аль аргыг сонгох нь таны шийдвэр.
GitHub дээр README-тэй repository үүсгэсэн байх.
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/bat-dorj/expense-tracker.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.“! [rejected]” нь татгалзсан, “(fetch first)” нь "эхлээд тат" гэсэн утгатай. Hint мөрүүд “remote дээр таны local-д байхгүй ажил байна” гэж тайлбарлаж байна. Энэ нь Алхам 2-т анхааруулсан нөхцөл: GitHub дээр README эсвэл .gitignore сонгосон тул GitHub өөрийн commit үүсгэсэн. Энэ мессежийн тухай 4.4 дүгээр хичээлд дэлгэрэнгүй ярина. Одоохондоо хамгийн энгийн шийдэл нь GitHub дээрх repository-г устгаж, хоосноор дахин үүсгэх явдал. Repository хуудсанд Settings руу ороод, хамгийн доод талын “Danger Zone” хэсгээс “Delete this repository”-г сонгож, зааврыг дагана уу. Дараа нь Алхам 2-оос дахин эхэлж, энэ удаад юуг ч бүү сонгоорой.
Нэвтрэлт амжилтгүй болох.
fatal: Authentication failed for 'https://github.com/bat-dorj/expense-tracker.git/'"Нэвтрэлт амжилтгүй боллоо" гэсэн утгатай. Ихэнхдээ та нэвтрэх цонхыг хаасан эсвэл browser дээр зөвшөөрөл өгөөгүй үед гарна. git push -u origin main-ийг дахин ажиллуулж, энэ удаад зааврыг бүрэн дагаарай. Хэрвээ нэвтрэх цонхны оронд terminal-д “Username for ‘https://github.com’:” гэсэн асуулт гарч байвал Git Credential Manager идэвхгүй байна гэсэн үг. Ctrl+C дарж зогсоогоод дараах command-ыг ажиллуулж, push-ээ дахин оролдоно уу.
git config --global credential.helper managerБуруу GitHub бүртгэлээр нэвтэрсэн байх. Хэрвээ танд хоёр бүртгэл байгаа бөгөөд Git буруугаар нь нэвтэрсэн бол Windows-ийн хадгалсан түлхүүрийг устгах хэрэгтэй. Windows-ийн Start цэснээс “Credential Manager” гэж хайж нээгээд, “Windows Credentials” хэсгээс “git:https://github.com” гэсэн бичлэгийг олж, Remove дарна уу. Дараагийн push дээр нэвтрэх цонх дахин гарч, зөв бүртгэлээр нэвтрэх боломж олгоно.
Илгээх салаа олдохгүй байх.
error: src refspec main does not match any
error: failed to push some refs to 'https://github.com/bat-dorj/expense-tracker.git'“src refspec main does not match any” нь "илгээх гэж буй main гэсэн эх салаа олдсонгүй" гэсэн утгатай. Хоёр шалтгаан бий: таны repository-д нэг ч commit байхгүй, эсвэл таны салаа өөр нэртэй, жишээ нь master. git log --oneline болон git branch-ээр шалгаарай. Commit байхгүй бол эхлээд commit хийнэ үү. Салаа өөр нэртэй бол Алхам 5-ын git branch -M main түүнийг засна.
Remote бол GitHub дээрх repository-ийн хаягийг товч нэрээр хадгалдаг хаягийн дэвтэр бөгөөд тогтсон нэр нь origin. GitHub дээр repository үүсгэхдээ README, .gitignore, license сонгохгүй, хоосон үлдээнэ. git remote add origin <хаяг> хаягийг бүртгэдэг, git remote -v түүнийг харуулдаг. git push -u origin main анхны push хийж, local main-ийг origin/main-тай холбодог. Анхны push дээр Git Credential Manager browser-оор нэвтрэх ажиллагааг удирдаж, түлхүүрийг Windows-ийн нууц санд хадгалдаг тул нууц үгээ terminal-д хэзээ ч бичихгүй. Push-ийн гаралтын гол мөр нь “main -> main” бөгөөд анх удаа “[new branch]”, дараа нь "хуучин..шинэ" хэлбэрээр харагдана. origin/main бол GitHub-тай сүүлд ярилцсан үеийн тэмдэглэл. git status “up to date” эсвэл “ahead by N commits” гэж хэлж, push хийх шаардлага байгаа эсэхийг сануулдаг. Upstream тохируулсны дараа өдөр тутам зүгээр git push хангалттай.
Дараагийн хичээлд доош чиглэсэн сумыг ажиллуулна. GitHub дээрх repository-г өөр фолдер руу clone хийж бүрэн хуулбар авч, тэр хуулбараас өөрчлөлт push хийгээд, анхны фолдерт git pull-аар тэр өөрчлөлтийг татаж авна. Ингэснээр хоёр чиглэлийн сумны зураглал бүрэн болно.
Бүртгэлтэй болсноор энэ сургалтын бүх хичээлд хандах эрх авна.