How to set up Git in Windows

socialite.jpg.scaled1000Наскоро в академията се проведе лекция за source control системи, която засегна основните принципи свързани със съвместната разработка на софтуер. В тази статия ще ви покажа някои от функциите на GitHub, GUI програмата(за по-кратко ще я наричам gitapp) и по-точно:

  • Какво ни трябва за да започнем
  • Каква е разликата между commit и sync(push)
  • Как се клонира(clone) репозитори
  • Каква е разликата между clone и fork
  • Какво е pull и какво става, когато го направим
  • Как и защо се прави branch
  • Недостатъци
  • Защо  да работя с GitHub

Set Up Git

navigationGit2

Първо трябва да си направите акаунт в https://github.com, ако нямате вече такъв. След това трябва да изтеглите и инсталирате native клиента за windows – http://windows.github.com. В лявата страна на интерфейса може да видите локалните репозиторита на компютърът ви и тези от вашия гитхъб акаунт. На картинката в ляво се виждат хранилищата на моят компютър. Мога да вляза във всяко, там гит автоматично засича какви промени съм правил, докато съм работил по файловете. Създаването на локално хранилище става като натиснете бутона +add. Тук трябва да обърнете внимание, че когато изберете директория вашето хранилище ще бъде създадено в нея и всички папки и файлове в нея и поддиректориите ще бъдат добавени към него. Аз на пример съм сложил всичкият си код свързан с домашните в академията в хранилището TelerikAcademy, но не искам да споделям всичките си проекти. За целта съм си направил папка OnlineProjects, където съм добавил repository и когато искам да добавя нещо копирам проекта в нея. Добре е всяко хранилище да има файл README.txt, където да обясните с едно-две изречения какво има в него. Написаното в него се показва, когато някой кликне върху вашето репоситори в гитхъб, така че противно на очакванията – има смисъл да го пишете и наистина някой ще го прочете.

Commit & Sync

Вече знаете как да създадете собствено хранилище, сега е време да го качим и в гитхъб. gitcommit След като сте работили по файловете си можете да влезете в хранилището си и да пристъпите към следващата стъпка – commit. Това означава да добавите файловете по проекта към локалната база данни, където се съхранява вашият проект. Промените по файловете се виждат в ляво. Ако отворите някой ще видите промените по него. В зелено са маркирани добавените редове, а в червено изтритите. Можете да избирате кои файлове да бъдат къмитнати, заглавието на къмита е задължително – постарайте се да отразява промените направени по файловете, при нужда добавете и описание. След като сте добавили промените в локалното хранилище следва да ги синхронизирате с хранилището в гитхъб. Това става чрез бутона sync. Вече файловете навсякъде са еднакви и всички, които работят по този проект имат достъп до най-актуалната версия. В history се виждат всички направени къмити и какво засягат. Възможно е да върнете промените като изберете къмит и натиснете revert commit, а ако сте направили къмит, но още не сте го синхронизирали с roll back this commit се връщат всички несинхронизирани къмити.

Clone vs Fork vs ZIP

Има няколко начина да изтеглите repository от гитхъб. На този линк виждате моето репозитори свързано с домашните в академията. В горната част на екрана има бутон ZIP. Ако изберете него ще изтеглите като архив всички файлове съдържащи се в хранилището. Те няма да се асоциират по никакъв начин с gitapp или вашият профил. Избирайки Clone in Windows вие ще изтеглите репозиторито през gitapp и то ще се запази в default директорията за проекти зададена в програмата. След това ще можете да работите по същият начин както с локалните хранилища, които вие сте създали, няма да можете да синхронизирате, ако нямате права. Другият вариант да допринесете за даден проект, contribute или на български – да съучастничите е най-добре да форкнете(fork) репозиторито. Това означава да създадете собствен клон(нещо като личен branch), който се вижда във вашият профил и да имате локално копие на компютъра си. По този начин вие можете да работите по проекта и когато свършите даден модул давате заявка за Pull.

Pull и fork sync

Когато pull-нете вашата работа към главният бранч подавате заявка за присъединяване на вашият код към главният бранч. В нея се вижда историята на вашите къмити, коментарите и допълнително описвате какво е направено. Всеки пул може да се разглежда и обсъжда в секцията Pull Requests.

Докато работите на вашето форкнато копие е възможно да се появят промени, които да искате да добавите към проекта си. За съжаление все още няма директна поддръжка от gitapp-a това да се случи. За целта трябва да отворите шел в директорията на fork-а(дясно копче върху проекта open shell here). Въвеждате следните команди:

  • git remote add upstream https://github.com/user/project.git
  • git fetch upstream
  • git merge upstream/master

Първата команда добавя отдалечено репозитори с име upstream от даденият адрес(можете да го вземете в web страницата на проекта). Втората взема разликите между вашият бранч и там откъдето сте го форкнали. Последната слива вашият master с upstream.

Branch

gitbranchPanelСъздаването на клон(branch) е изключително важна част от version control-а. Бранчът представлява копие на главното(master) репозитори, но част от целият проект и асоцииран с него. Смисълът да го правите е, че ако омажете нещо няма да ревъртвате 100 къмита в главният проект или пък ако работата върви по-бавно няма да бавите другите. Всеки път, когато искате да започнете работа по даден бъг или подобрение в програмата е препоръчително да създадете нов бранч, който адресира точно тази промяна. Създаването и мърджването на бранчове през gitapp е многоgitbranchMergePub лесно. Когато сте в проекта си, натиснете бутона в дясно от sync и ще ви излезе панел с всички бранчове. Можете да ги сменяте с един клик. На първата картинка се вижда, че в момента съм в клона master, като имам и testBranch, в който имам код напълно независим от master. В manage се контролират всички локални бранчове. Можете да изберете откъде да създадете нов бранч, да публикувате вече създаден от вас бранч(така по него ще могат да работят и други) и да събирате бранчове. В долната част на втората картинка съм добавил с drag’n’drop двата бранча и при натискане на бутона merge ги събирам в master.

Недостатъци

Казахме доста интересни неща за гитхъб, сега е време да го наплюем. Като най-голяма треска за дялане мога да изтъкна, че не може да се тегли/бранчва/форква само една папка. Ако имаме хранилище с няколко проекта и искаме да работим само по един – трябва да теглим цялото хранилище. Това може да се избегне чрез създаване на subrepository, но не знам дали няма да създава повече работа, отколкото да спестява, ако решите да работите така. Вторият недостатък е че няма безплатни private хранилища. Сега ще кажете, че ставам нахален, но има системи, които предлагат ограничен брой такива. Апликейшъна за работа в win среда има още трески за дялане, като примерно синхронизация с форка и някои дребни бъгове на които се натъкнах. Бутон за къмит + синк също няма да е зле.

Защо да използвам GitHub

Това, което им дава предимство пред другите безплатни алтернативи е безпрецедентният контрол върху сорса. Всичко е подредено и систематизирано изключително добре. Всички канали за комуникация са налице. Огромно къмюнити, въпреки, че не е насочено много към технологии произлизащи от Microsoft. Приятен и удобен за работа интерфейс.

Posted in Programming Tagged with: , , , , , , , ,
One comment on “How to set up Git in Windows
  1. maria says:

    Здравейте :) Благоадря за ясните разяснения относно Гит Хъб.
    “Аз на пример съм сложил всичкият си код свързан с домашните в академията в хранилището TelerikAcademy, но не искам да споделям всичките си проекти. За целта съм си направил папка OnlineProjects, където съм добавил repository и когато искам да добавя нещо копирам проекта в нея.” Как става това една папка да се вижда от хора ,които аз избера.Когато опитам да направя ново репозитори,ми излиза форма за платен акаунт?! Пропускам ли нещо или не съм доразбрала?
    Във Вашата статия разбрах какво е това форкване :)Как да дам линк на някой по мой проект,пробвах но се оказа неработещ,бихте ли пояснили?

Leave a Reply

Your email address will not be published.