Отдалеченото хранилище на Git
Досега работихме само в локалното хранилище. Всеки разработчик ще работи в своето локално хранилище, но в крайна сметка идва момент, в който ще трябва да “избута” кода в някое отдалечено хранилище. След като кодът попадне в отдалеченото хранилище, вече и други разработчици ще могат да го виждат и модифицират.

GitHub
За примерите тук ще използваме за отдалечено хранилище GitHub. Разбира се може да се използват и други услуги като GitLab или BitBucket.
Ново репозитори в GitHub
Отидете на https://github.com/ и създайте акаунт.
След като се регистрирате кликнете върху Стартиране на проект, за да създадете ново Git хранилище в GitHub. Дайте име на хранилището и щракнете върху „Създаване на репозитори“.
Например може да дадете име като git-blog-demo.
Това ще създаде отдалечено хранилище в GitHub и когато отворите хранилището, ще се отвори страницата със хранилището:
URL адресът на хранилището е маркираната част https://github.com/aditya-sridhar/git-blog-demo.git
За да насочите локалното си хранилище към отдалеченото хранилище, използвайте следната команда:
git remote add origin [repository url]
Git Push
git push origin <branch-name>
Изтласкайте (изпратете, Push) вашия branch, за да го качите някъде другаде:
Това ще качи вашия branch в отдалеченото репо наименувано origin (знайте, че това е URL, който може да е дефиниран първоначално по време на клонирането – за това повече по-долу, или при създаването на ново отдалечено репо).
След успешно натискане, вашите съотборници вече ще могат да изтеглят вашия branch, за да преглеждат вашите commit-и (вижте git pull по-долу).
😎 Като пряк път можете да въведете думата HEAD вместо име на branch, за да използвате автоматично branch-а, в който се намирате в момента. HEAD винаги се отнася до най-новата ви контролна точка, тоест най-новия commit за текущия branch.
Както бе споменато по-рано, всичко в git може да се разглежда като контролна точка. Ето списък на видовете контролни точки, за които знаете вече (отново технически се наричат „препратки“ и „ревизии“):
- HEAD
- <branch-name>, e.g. master
- <commit-hash>, e.g. e093542d01d11c917c316bfaffd6c4e5633aba58 (or e093542 for short)
Има още и:
- <tag-name>, напр. v1.0.0
- stash
И накрая, специални символи като ^, ~ и @ {} могат да се използват за промяна на препратки. Те са доста полезни.
За да изтласкате целия код от локалното хранилище в отдалеченото хранилище, използвайте следната команда:
git push -u origin master
Това изтласква кода от главния клон в локалното хранилище към главния клон в отдалеченото хранилище.
Git clone
Клонирайте вече съществуващо репозитори:
git clone https://github.com/cooperka/emoji-commit-messages.git
Това ще изтегли .git хранилище от интернет (в нашият случай от GitHub) на вашия компютър и ще извлече най-новата/последна “снимка” на репото (всички файлове) във вашата работна директория. По подразбиране всичко ще бъде запазено в папка със същото име като на репото (в този случай emoji-commit-messages).
✨ URL адресът, който ще посочите тук, се нарича remote origin / отдалечен източник (мястото, от което първоначално са изтеглени файловете). Този термин ще бъде използван и по-късно.
Git status
Вижте текущото състояние на вашия проект:
git status
Това ще отпечата основната информация, като например кои файлове са модифицирани наскоро.
Трябва да проверявате състоянието си по всяко време, когато сте объркани. Git ще отпечата допълнителна информация в зависимост от това какво се случва в момента, за да ви помогне да се ориентирате.
Git merge (с отдалечено репо)
Обединяване на промените на някой друг:
Това ще вземе всички commits, които съществуват в branch-а other-branch-name, и ще ги интегрира във вашия собствен текущ branch.
⚠️ Това използва всички данни за branch-ове, които се съхраняват локално, така че първо изпълнете git fetch, за да изтеглите най-новата информация – виж по-долу.
Например, ако някой друг добави няколко commits към главния branch – master на origin, можете да направите следното, за да изтеглите промените им и да актуализирате собствения си локален главен branch:
git checkout master # Make sure you’re on the right branch.
git fetch # Download any new info from origin.
git merge origin/master # Merge the ‘origin/master’ branch
into your current branch.
Името origin/master тук буквално означава контролна точка за origin/master на вашия компютър. Git използва тази нотация, за да разграничи едноименните клонове (напр. Master), разположени на различни места (например вашите собствени branches спрямо origin’s branches).
Допълнителни команди
Git pull
Като пряк път можете да използвате командата pull за едновременно извличане и обединяване на всичко. Това е по-често използвано от обединяването ръчно, както е по-горе:
git pull origin master
Тук разделяме думите origin и master (без наклонена черта, както е по-горе). Не искаме да използваме origin/master контролната точка намираща се на собствения ни компютър, (защото това са съхранявани файлове офлайн и вероятно са остарели). Вместо това искаме да извлечем директно от главния клон на отдалечената крайна точка, наречен origin. Внимавайте; разликата е важна!
За по-задълбочено разбиране как работи сливането и как се разрешават конфликти (със забавни снимки и графики), вижте официалните документи за обединяване.
git pull се използва за изтегляне на последните промени от отдалеченото хранилище в локалното хранилище. Кодът на отдалеченото хранилище се актуализира непрекъснато от различни разработчици, поради което git pull е необходимо:
git pull origin master
Git clone
git clone се използва за клониране на съществуващо отдалечено хранилище във вашия компютър. Командата за това е:
git clone [repository url]
Git fetch
Вземане на най-актуалната информация за дадено репо:
git fetch
Това ще изтегли последната информация за репото от произход (като всички различни клонове, съхранявани в GitHub).
Това не променя нито един от вашите локални файлове – просто актуализира данните за проследяване, съхранени в папката .git.