реклама
Като уеб разработчици, много от времето, в което сме склонни да работим на сайтове за местно развитие, просто качваме всичко, когато сме готови. Това е добре, когато сте само вие и промените са малки, но когато имате работа с повече от една човек, работещ върху нещо или по голям проект с много сложни компоненти, това просто не е осъществимо. Точно тогава се обръщаме към нещо, наречено управление на версиите.
Днес ще говоря за софтуер за контрол на версии с отворен код, наречен Git. Това позволява на повече от един човек безопасно да работи по един и същ проект, без да се намесва един в друг, но това е и много повече от това.
Защо да използвате софтуер за контрол на версиите?
На първо място, името трябва да го даде. Софтуерът за контрол на версиите ви позволява да имате „версии“ на проект, които показват промените, които са направени в кода с течение на времето, и ви позволяват да изтеглите назад, ако е необходимо, и да отмените тези промени. Тази способност сама по себе си - да може да сравнява две версии или обратни промени, прави доста безценна при работа по по-големи проекти.
Вероятно дори сте се справили сами в даден момент, спестявайки копия на проект в различни точки, за да имате резервно копие. В система за контрол на версиите, просто промените ще бъдат записани - патч файл, който може да бъде приложен към една версия, за да бъде същата като на следващата версия. При един разработчик това е достатъчно.
Но какво ще стане, ако имате повече от един разработчик, който работи по проект? Тогава идва идеята за централизиран сървър за контрол на версиите. Те са стандарт от доста време, при което всички версии се съхраняват на централен сървър, а отделните разработчици проверяват и качват промените обратно на този сървър. Ако някога сте поглеждали историята на редактиране на страница в Уикипедия, ще имате добра представа как става това в сценарий на реалния свят:
Предимствата на система като тази е, че множество разработчици могат да правят промени и всяка промяна може да бъде приписана на конкретен разработчик. От друга страна, фактът, че всичко се съхранява в отдалечена база данни, означава, че не могат да се правят промени, когато този сървър се спуска; и ако централната база данни е загубена, всеки клиент има само текущата версия на каквото и да работи.
Това ни отвежда към Git и други т.нар разпределени системи за контрол на версиите. В тези системи клиентите не просто проверяват текущата версия на файловете и работят от тях - те отразяват цялата история на версиите. Всеки разработчик винаги има пълно копие на всичко. Все още се използва централен сървър, но ако се случи най-лошото, тогава всичко може да бъде възстановено от всеки от клиентите, които имат най-новите версии.
Git специално работи, като прави „снимки“ на файлове; ако файловете останат непроменени в определена версия, тя просто се свързва към предишните файлове - това поддържа всичко бързо и постно.
Може също да ви заинтересува да научите, че Git се използва за управление и развитие на ядро на Linux Linux - базовия градивен елемент, върху който са изградени всички Linux дистрибутори.
Какво е Github?
Въпреки че можете да стартирате свой собствен Git сървър локално, Github е едновременно отдалечен сървър, общност на разработчици и графичен уеб интерфейс за управление на вашия Git проект. Безплатно е да използвате за до 5 обществени хранилища - тоест когато всеки може да прегледа или разклати кода ви - с планове за ниски разходи за частни проекти. Горещо ви препоръчвам да се регистрирате за безплатен акаунт, за да можете да започнете да играете със собствените си проекти или да разкажете някой елс.
Разклоняване и разклоняване
Това са основни понятия на Git опит, така че нека отделим малко време, за да обясним разликата.
Вероятно сте чували работата „вилица“, когато се занимавате с Linux дистрибуции. Ако сте запознати с приложението за медиен център Plex, ще знаете, че първоначално е било вилица от подобен отворен код Xbox Media Center Aeon Nox 3.5: красива и приспособима тема за XBMCНастройте своя медиен център точно така, както искате. Aeon Nox 3.5 е най-новата версия на това, което е може би най-добрата тема за XBMC и е рядка комбинация: красива ... Прочетете още . Това просто означава, че в един момент в миналото някои разработчици взеха кода на XBMC и решиха да тръгнат по своя собствен път с него; това стана Plex.
Това, разбира се, е напълно позволено, когато проектът е с отворен код - можете да вземете кода, да правите с него всичко, което искате. С Git, ако смятате, че промените ви са достатъчно добри, за да бъдат върнати обратно в „главния“ проект, вие може да направи „заявка за изтегляне“ към автора, като ги помоли да изтеглят промените ви обратно в оригиналния си файл проект. Това ви позволява да имате стотици хиляди разработчици, които работят по даден проект във всеки един момент, никой от които не трябва задължително да бъдат одобрени за достъп до код - те просто копират кода, правят промени и искат да бъдат върнати обратно в господар. Разбира се, зависи от собственика на оригиналния проект дали реши да приеме промените ви или не.
Разклоняването е нещо, направено вътрешно по проект от оторизираните разработчици. Тя ви позволява лесно да отделяте конкретни проблеми или функции и да работите по тях, без да нарушавате главните файлове. След като сте доволни, че вашият клон се е справил с проблема, го обединявате обратно в главния. Във всеки момент може да има толкова клонове, колкото искате; те не си пречат помежду си. Можете също да обедините промените между клоните, без да докосвате главния.
Ето една чудесна диаграма на примерния работен процес от Винсент Дрисен:
Следващия път ще разгледаме как да настроите работещ пример на Git и да извършим промени в кода в клоновете. Контролът на версиите е огромна тема. Тук съм дал само най-краткия преглед, но като разработчик, който е свикнал само да прави промени и да ги отменя, ако не работят, цялата концепция ми избухна в ума - надявам се и тя да е ваша.
Вие сте опитен разработчик с опит в Git? Просто започвате и мислите, че бихте искали да отидете? Озвучете в коментарите!
Джеймс има бакалавърска степен по изкуствен интелект и е сертифициран като CompTIA A + и Network +. Той е водещ разработчик на MakeUseOf и прекарва свободното си време, играейки VR пейнтбол и настолни игри. Той изгражда компютри още от дете.