Имате файл, който променяте често и при всяка промяна правите негово копие, за да запазите предишната му версия? Така след 50-тата промяна вече имате 50 различни варианта на файла. До няколко версии назад си спомняте какво е променяно, но какво се е случило в по-старите? И какво ще стане ако искате и други хора да променят същия този файл? А ако имате проект с повече от един файл?
Точно в такива случаи, отговорът е система за контрол на версиите.
Контрол на версиите (version control)
Система за контрол на версиите се ползва за записване на промените по даден файл или колекция от файлове. Тя позволява да се запази история на промените, да се върне предишна версия, да се добави описание на промените (като например защо и на какво е извършена промяната и други).
Когато по един проект с множество файлове работят много хора, едно от нещата, което би било трудно без такава система, е да се съобразяват промените по различните части на проекта от всички участници.
Системата за контрол на версиите се развива през годините, като в началото ѝ стои локалната система за контрол на версиите (като RCS), при която файловете са били на локалния компютър на разработчика и само той е работил с тях.
След това се появява централизирана система за контрол на версиите (CVS, Subversion), която позволява много потребители да работят по един проект. Проектът се намира на един централен компютър, с който те осъществяват връзка.
Накрая се появява децентрализирана система за контрол на версиите (Darcs, Bazaar, Git, Mercurial, Fossil, Veracity), която решава най-големия недостатък на другите две – в случай на повреда в централния или локалния компютър, всички данни на проекта могат да бъдат загубени, тъй като се намират на едно физическо място. При децентрализираната система за контрол на версиите проектът се сваля и копира локално на компютъра на всеки участващ потребител, като така се създава бекъп. В случай на необходимост, проектът може да се възстанови от локалното копие на някой от потребителите.
Какво е Git?
Git e една от най-известните и използвани децентрализирани системи за контрол на версиите на файловете. С Git много потребители могат да работят едновременно по един и същ файл, без това да доведе до бъркотия и хаос в съдържанието на файла.
Git е създаден и разработен през април 2005г. от не кой да е, а Линус Торвалдс (човекът зад Linux ядрото). Торвалдс създава Git, за да го използва за разработката на неговия проект Linux ядро. От тогава до днес Git се развива и подобрява от множество потребители. Включително самият проект на Git използва тази система, като много разработчици извършват промени в кода му (C, Shell).
Git е създаден с идеята да е бърз, с прост дизайн, стабилна поддръжка на неправолинейна разработка – хиляди паралелни разклонения (branches), напълно децентрализирана организация и възможност да поддържа ефикасно големи проекти (като Linux ядрото).
Част от проектите, които използват Git са Linux Kernel, KVM, Bacula, CakePHP, Drupal, FFmpeg, GNOME, phpMyAdmin, Ruby on Rails и много други. Сред проектите, които ползват Mercurial са Dovecot, nginx, OpenOffice, Python, rpm, Vim и други.
Git сървър
За Git сървър можете да използвате Вашия cPanel хостинг акаунт. През Git Version Control в cPanel можете да създадете Git хранилище, с което да се свързвате отдалечено от Вашето устройство.
В уеб може да се намерят и други услуги, предлагащи Git сървър като GitHub, Bitbucket и GitLab.
Най-прост Git сървър, без да се инсталира допълнително приложение, може да се направи само със SSH достъп и подготвено Git хранилище на сървъра. Такъв основен Git сървър може да се ползва за частен проект с малко на брой потребители.
Съществуват и приложения за Git сървър, които могат да се инсталират на VPS сървър. Едно много използвано приложение, което много наподобява GitHub е GitLab. Такива приложения предлагат методи за управление, като контрол на достъпа, управление на множество Git хранилища, преглед през уеб и много други.
Git клиенти
Освен стандартния начин за работа с Git – използване на команди през терминал, съществуват и графични Git клиенти, които се инсталират локално на компютъра.
Текстовите Git клиенти се ползват през шела на операционната система и поради това можете да ги инсталирате и ползвате през терминала. За Linux базирани системи можете да инсталирате Git например с:
yum install git или apt-get install git
Windows потребителите могат да инсталират Git с графичния Git клиент на GitHub, който съдържа и Git текстов клиент (Git Shell).
Git клиент може да се ползва и през акаунт на споделен хостинг. Вижте какво е необходимо да направите, за да ползвате Git клиент в хостинг акаунта.
Да започнем с Git
За да започнете с Git, е необходимо да се запознаете с основните и най-често ползвани Git команди.
Основни понятия и команди в Git
🔗 Основни Git понятия и команди | Help
git repository (хранилище)
Работната директория на проекта. Git хранилище можете да създадете от всяка директория, намираща се локално на Вашия компютър. Или можете да клонирате хранилище намиращо се на друг компютър.
git branch (разклонение, клон, линия)
Git създава дървовидна структура на проекта с един основен клон, най-често наречен master. Всичко, което се разработва и променя се извършва по други разклонения, които рано или късно се сливат с основния клон и така се ражда нова версия на проекта. За разработката на различни аспекти от проекта може да се създадат специални разклонения, като development, features, hotfixes и други.
git tag
Всяка окончателно завършена и одобрена промяна се слива с master и представлява различна версия на проекта. Промяната може да се надпише с различен таг, например започвайки с v. 1.0.0.
git add
С командата add добавяте промените в индекса на Git, които смятате, че са готови за публикуване (commit). Файлът, в който са промените, преминава в статус „staged“. Всички промени във файлове, които са в статус „готови“ (staged), може да се публикуват след това с commit.
git commit
Публикуване на промените. Когато промените съдържанието на даден файл, намиращ се в директорията на проекта, ще трябва след това да направите commit заявка, за да публикувате тези промени. Ако използвате графичен Git клиент, Git ще Ви покаже, че е била извършена промяна и ще Ви попита, дали искате да направите commit (публикуване) на тази промяна.
git pull
Изтегляне на промени от едно хранилище/клон в друго хранилище/клон.
git push
Подаване на промените към отдалечено хранилище.
git merge
Сливане на промените в един клон или сливане на отделни клони. След като промените по файловете в даден клон (branch) са записани, можете да създадете pull заявка за сливане. Тази pull заявка ще е в статус изчакване за одобрение. След одобрение, посоченият клон ще бъде слят, използвайки git merge, с друг избран клон.
Създаване на локално Git хранилище
За да можете да създавате и управлявате Git хранилища на Вашето устройство, първо е нужно да инсталирате Git. От официалния сайт на Git свалете и инсталирайте официалното приложение за Git: https://git-scm.com/downloads (Windows)
🔗 Работа с Git на Windows | Help
След като сте инсталирали Git на Вашия компютър, можете да създавате Git хранилище от всяка директория. В директорията може вече да има файлове.
🔗 Създаване на Git хранилище през Git GUI/Bash (Windows) | Help
За да създадете Git хранилище, достъпете през Git шела избраната директория. И след това изпълнете командата:
git init
В директорията ще се появи поддиректория .git, в която се съдържат системните файлове на Git.
Създайте или поставете файл в директорията, например file.txt и изпълнете:
git status
Ще видите съобщението:
Untracked files: (use „git add …“ to include in what will be committed)
Това означава, че Git открива този файл, но не е инструктиран да го следи (за промени). С командата add добавяте промените в индекса на Git. За да подготвите промените за публикуване, изпълнете командата:
git add file.txt
И след това публикувайте промените с:
git commit -m „New file added“
„New file added“ е бележка към къмита, съвсем кратко описание на промените. Когато преглеждате историята на промените, ще виждате тези бележки, поради това използвайте смислено описание на промените.
Бележка: Локално Git хранилище можете да създадете на Вашето устройство, след като инсталирате Git на него, например можете да инсталирате Git GUI/Bash на Windows. Освен на Вашето устройство, Git хранилище можете да създадете в хостинг акаунта през Git Version Control в cPanel или през SSH достъп.
Важно: Не всички проекти, ползващи Git, са еднакви, с еднакви разклонения и процес на разработка. Всеки проект може да има различни изисквания за използването на клони и процеса по обновяване и прилагане на промените. Преди да клонирате някой проект и да започнете да допринасяте за развитието му, проверете документацията и README.md файла за упътване.
Интересно: Влезте в дълбините на Git и научете как да работите с него, само за 15 минути с Got 15 minutes and want to learn Git?