Гит

Водич за почетнике за Гит

Водич за почетнике за Гит

Развој софтвера је заједнички посао. Као софтверски инжењер, свој рад морате да делите са другима. Али дељење кода и сарадња могу се закомпликовати. Тешко је пратити разне промене које се дешавају током животног циклуса софтвера. Дакле, развојни тимови се ослањају на алате за контролу верзија како би помогли у процесу софтверске сарадње. Гит је један од најистакнутијих алата за контролу верзија у софтверској индустрији.

Савет: У овом упутству ћете научити како да користите основе Гита. Сваки одељак се завршава са неколико питања. Питања можете прочитати пре него што почнете да читате одељак. Ово ће вам помоћи да разумете и обратите пажњу на важне тачке.

Забавите се учећи Гит!

Гит: Кратки преглед

Гит је дистрибуирани систем контроле верзија. Прати све промене које унесете у своје датотеке и фасцикле. Олакшава вам уштеду недовршене производње. Ако постоји проблем, лако можете да проверите старију верзију датотеке или фасцикле. Ако је потребно, можете целокупну базу кодова вратити на старију верзију.

Развој Гита започео је 2005. године. Група кернела Линук користила је за одржавање свог кода у БитКеепер-у, власничком дистрибуираном систему контроле верзија. Међутим, БитКеепер је повукао бесплатно коришћење производа. Тако је Линус Торвалдс, творац и главни програмер Линука, дизајнирао нови систем дистрибуиране верзије отвореног кода који би удовољио захтевима Линук развојне заједнице. И Гит је рођен.

Као дистрибуирани систем контроле верзија, Гит не захтева централизовано тело за праћење кода. Старије централизоване контроле верзија као што су ЦВС, СВН или Перфорце захтевају да централни сервери воде историју промена. Гит може локално да прати све промене и ради пеер-то-пеер. Дакле, свестранији је од централизованих система.

Питања:

Инсталирање Гит-а

За Линук системе инсталација Гита је једноставна. Ако користите дистрибуцију засновану на Дебиану, попут Убунту-а, можете користити апт инсталл:

$ судо апт инсталирај гит-алл

За Федору, РХЕЛ или ЦентОС можете користити:

$ судо днф инсталирај гит-алл

Можете да проверите да ли је Гит инсталиран помоћу следеће наредбе:

$ гит --верзија

Требало би да вам покаже верзију Гита коју сте инсталирали, на пример:

гит верзија 2.17.0

Када инсталирате Гит, време је да подесите своје корисничко име и е-маил:

$ гит цонфиг --глобал усер.име "иоурусернаме"
$ гит цонфиг --глобал усер.е-пошта „[заштићена е-поштом]“

Можете да проверите да ли су конфигурације правилно постављене помоћу следеће наредбе:

$ гит цонфиг --лист
корисник.наме = вашеимекорисника
корисник.емаил = иоурусернаме @ пример.цом

Савет: Важно је подесити корисника.име и корисник.е-пошту јер се ове конфигурације користе за праћење ваших промена.

Питања

Концептуално разумевање Гит-а

Да бисте користили Гит, прво морате да разумете ова четири концепта:

Радни директоријум, простор за постављање и спремиште су локални за вашу машину. Удаљено спремиште може бити било који други рачунар или сервер. Замислимо ове концепте као четири кутије у које се могу сместити стандардни А1 папири.

Претпоставимо да ручно пишете документ на А1 папиру за својим столом. Овај документ чувате у радном оквиру директоријума. У одређеној фази свог рада одлучујете да сте спремни да задржите копију већ обављеног посла. Дакле, направите фотокопију тренутног папира и ставите га у оквир за инсценацију.

Оквир за инсценацију је привремено подручје. Ако одлучите да фотокопију одбаците у оквир за инсценацију и ажурирате је новом копијом документа радног именика, неће постојати трајни запис тог инсценираног документа.

Претпоставимо да сте прилично сигурни да желите да сачувате трајни запис документа који имате у оквиру за инсценацију. Затим направите фотокопију документа спремног оквира и преместите га у оквир спремишта.

Када га преместите у оквир спремишта, догађају се две ствари:

  1. Снимак документа се трајно чува.
  2. Уписује се датотека дневника која иде уз снимак.

Унос у евиденцији помоћи ће вам да пронађете одређени снимак документа ако вам затреба у будућности.

Сада у пољу локалног спремишта имате снимак свог рада и унос у дневник. Али доступно је само вама. Дакле, направите копију документа локалног спремишта заједно са датотеком дневника и ставите га у оквир у просторији компаније. Сада свако у вашој компанији може да дође и направи копију вашег документа и однесе га на свој сто. Кутија у залихи би била удаљено спремиште.

Удаљено спремиште је некако попут дељења документа помоћу Гоогле докумената или Дропбока.

Питања:

Ваше прво Гит спремиште

Једном када инсталирате Гит, можете започети стварање властитих Гит спремишта. У овом одељку ћете иницијализовати своје Гит спремиште.

Претпоставимо да радите на пројекту за веб развој. Направимо фасциклу која се зове пројецт_хелловорлд и променимо је у директоријум:

$ мкдир пројецт_хелловорлд
$ цд пројецт_хелловорлд

Можете рећи Гиту да надгледа овај директоријум следећом наредбом:

$ гит инит

Требали бисте видети излаз попут овог:

Иницијализовано празно Гит спремиште у / Усерс / закх / _ворк / ЛеарнГИТ / гит_туториал /
пројецт_хелловорлд /.гит

Сада ће све датотеке и фасцикле унутар пројецт_хелловорлд пратити Гит.

Питања:

Основне Гит наредбе: статус, евидентирање, додавање и урезивање

Команда статус приказује тренутно стање вашег радног директорија, а команда дневника приказује историју. Покушајмо са наредбом статуса:

$ гит статус
На мајстору гране
Иницијално урезивање
ништа за залагање (креирање / копирање датотека и коришћење „гит адд“ за праћење)

Излаз наредбе гит статус каже да сте на главној грани. Ово је подразумевана грана коју Гит иницијализује. (Можете креирати сопствене филијале. Више о огранцима касније). Такође, излаз говори да нема шта да се почини.

Покушајмо са наредбом лог:

$ гит лог
фатално: ваша тренутна грана 'мастер' још нема ниједну обавезу

Дакле, време је да креирамо неки код. Направимо датотеку која се зове индекс.хтмл:


Моја веб страница


Здраво Свете

За креирање датотеке можете користити уређивач текста. Након што сачувате датотеку, поново проверите статус:

$ гит статус
На мајстору гране
Иницијално урезивање
Непраћене датотеке:
(користите „гит адд ... "укључити у оно што ће бити почињено)
индекс.хтмл
ништа није додато у урезивање, али постоје датотеке без праћења (користите "гит адд" за праћење)

Гит вам говори да имате датотеку која се зове индек.хтмл у вашем радном директоријуму који није праћен.

Провјеримо индекс.хтмл се прати. Мораћете да користите команду адд:

$ гит додај индекс.хтмл

Можете и да користите „.”Могућност додавања свега у директоријум:

$ гит додај .

Сада поново проверимо статус:

$ гит статус
На мајстору гране
Иницијално урезивање
Промене које треба извршити:
(користите "гит рм --цацхед ... "до нестанцирања)
нова датотека: индекс.хтмл

Зелена означава да индекс.хтмл датотеку прати Гит.

Савет: Као што је поменуто у горњим упутствима, ако користите команду:

$ гит рм --цацхед индек.хтмл

Ваш индекс.хтмл ће се вратити на статус без праћења. Мораћете да је додате поново да бисте је вратили на сцену.]

Проверимо евиденцију поново:

$ гит лог
фатално: ваша тренутна грана 'мастер' још нема ниједну обавезу

Па иако Гит прати индекс.хтмл, у Гит спремишту још нема ничега о датотеци. Завршимо своје промене:

$ гит цоммит -м "Индекс предавања.хтмл "
Излаз би требао изгледати отприлике овако:
[мастер (роот-цоммит) ф136д22] Индекс предавања.хтмл
Промењена је 1 датотека, 6 уметања (+)
креирајте режим 100644 индекс.хтмл

Текст унутар наводника након „-м“ је коментар који ће ући у датотеку дневника. Можете користити гит цоммит без „-м“, али тада ће Гит отворити уређивач текста који ће тражити да напишете коментаре. Лакше је коментаре ставити директно у командну линију.

Сада проверимо нашу датотеку дневника:

$ гит лог
зарежи ф136д22040ба81686ц9522ф4фф94961а68751аф7
Аутор: Зак Х
Датум: Пон Јун 4 16:53:42 2018 -0700
Индекс предавања.хтмл

Можете видети да показује обавезивање. Успешно сте унели промене у своје локално спремиште. Ако желите да видите исти дневник на језгровит начин, можете користити следећу команду:

$ гит лог --онелине
ф136д22 Индекс предавања.хтмл

Крећући се напред, користићемо овај облик наредбе дневника, јер олакшава разумевање онога што се догађа.

Почнимо са уређивањем индекса.хтмл. Отворите индекс.хтмл датотеку у едитору и промените линију „Хелло ворлд“ у „Хелло ворлд! То сам ја!”И сачувај га. Ако поново проверите статус, видећете да је Гит приметио да уређујете датотеку:

$ гит статус
На мајстору гране
Промене нису инсцениране за урезивање:
(користите „гит адд ... "за ажурирање онога што ће бити почињено)
(користите „гит цхецкоут -- ... "за одбацивање промена у радном директоријуму)
измењено: индекс.хтмл
без додавања промена у урезивање (користите „гит адд“ и / или „гит цоммит -а“)

Промена је и даље у вашем радном директоријуму. Морате да га гурнете у сценско подручје. Користите команду адд коју сте раније користили:

$ гит додај .

Поново проверите статус:

$ гит статус
На мајстору гране
Промене које треба извршити:
(користите "гит ресет ХЕАД ... "до нестанцирања)
измењено: индекс.хтмл

Сада су ваше промене у сценском режију. Можете га предати у спремиште на трајно чување:

$ гит цоммит -м "Измењени индекс.хтмл до срећније поруке "
[мастер 0586662] Измењени индекс.хтмл до сретније поруке
1 датотека промењена, 1 уметање (+), 1 брисање (-)

Можете да проверите у евиденцији трајних промена:

$ гит лог --онелине
0586662 Измењени индекс.хтмл до сретније поруке
ф136д22 Индекс предавања.хтмл

У овом одељку сте научили да користите наредбе статуса, евидентирања, додавања и урезивања за праћење докумената у Гит-у.

Питања:

  • Шта ради гит статус?
  • Шта ради гит лог?
  • Шта ради гит адд?
  • Шта ради гит цоммит?

Повратак на старије датотеке користећи Цхецкоут

Када урежете датотеку у Гит-у, она креира јединствени хеш за свако урезивање. Можете их користити као идентификаторе за повратак на старију верзију.

Претпоставимо да се желите вратити на своју ранију верзију индекса.хтмл. Прво, погледајмо индекс.хтмл у тренутном стању:

$ цат индекс.хтмл

Моја веб страница


Здраво Свете! То сам ја!

Можете видети да имате новију верзију („Здраво свете! То сам ја!”). Проверимо евиденцију:

$ гит лог --онелине
0586662 Измењени индекс.хтмл до сретније поруке
ф136д22 Индекс предавања.хтмл

Хеш за претходну верзију је био ф136д22 („Здраво свете“).  Помоћу наредбе за наплату можете доћи до те верзије:

$ гит цхецкоут ф136д22
Напомена: провера „ф136д22“.
У стању сте 'одвојена ГЛАВА'. Можете погледати око себе, направити експерименталне промене
и извршите их, а можете одбацити све обавезе које направите у овом стању
без утицаја на било које огранке извршавањем другог плаћања.
Ако желите да креирате нову грану да бисте задржали обавезе које сте креирали, можете
урадите то (сада или касније) поновним коришћењем -б са наредбом за наплату. Пример:
гит цхецкоут -б
ХЕАД је сада на ф136д22… Индекс предавања.хтмл

Ако погледате садржај индекса.хтмл, видећете:

$ цат индекс.хтмл

Моја веб страница


Здраво Свете

Има само „Здраво свете“. Дакле, ваш индекс.хтмл је промењен у старију верзију. Ако проверите статус:

$ гит статус
ГЛАВА одвојена на ф136д22
ништа за залагање, радни директориј чист

Гит вам у основи говори да ХЕАД није у најновијем урезивању. Можете се вратити на најновији урезивање проверавањем главне гране помоћу следеће наредбе:

$ гит цхецкоут мастер
Претходна ХЕАД позиција била је ф136д22… Индекс предавања.хтмл
Пребачено на грану 'мастер'

Сада ако проверите статус:

$ гит статус
На мајстору гране
ништа за залагање, радни директориј чист

Црвено упозорење је нестало. Такође, ако проверите свој индекс.хтмл, требало би да се вратите на најновију верзију:

$ цат индекс.хтмл

Моја веб страница

Здраво Свете! То сам ја!

Команда одјаве води вас у различита стања. О наплати ћемо сазнати више у следећем одељку.

Питања:

  • Како користите гит цхецкоут команду за прелазак на старију верзију датотеке?
  • Како користите гит цхецкоут за повратак на најновију верзију датотеке?

Плаћање, гранање и спајање

Гранање је једна од најбољих особина Гита. Помаже вам да одвојите посао и више експериментишете. У осталим системима за контролу верзија, гранање је било дуготрајно и тешко. Гит је олакшао гранање и спајање.

Као што сте приметили у наредби статуса, када креирате ново Гит спремиште, налазите се у главној грани.

$ гит статус
На мајстору гране
ништа за залагање, радни директориј чист

Претпоставимо да правите веб страницу за свог пријатеља Давида. Желите поново да употребите код сопствене веб локације. Разгранавање је одлично решење. Назовимо грану давид_вебсите.

Можете издати следећу команду:

$ гит грана давид_вебсите

Можете да користите следећу наредбу да бисте видели све гране:

$ гит бранцх --лист
давид_вебсите
* господар

Звездица (*) поред мастер-а значи да сте још увек у главној грани. Можете погледати грану давид_вебсите помоћу следеће наредбе:

$ гит цхецкоут давид_вебсите
Пребачено на грану 'давид_вебсите'

Сада ако поново проверите листу грана, видећете:

$ гит бранцх --лист
* давид_вебсите
господару

Дакле, ви сте на грани давид_вебсите.

Променимо индекс.хтмл из „Здраво свете! То сам ја!“До„ Здраво свете! Давид је!”, А затим инсценирајте и извршите:

$ гит додај .
$ гит цоммит -м "Промењена веб локација за Давида"

Ако проверите евиденције, требало би да видите:

$ гит лог --онелине
345ц0ф4 Промењена веб локација за Давида
0586662 Измењени индекс.хтмл до сретније поруке
ф136д22 Индекс предавања.хтмл

А ваша индексна датотека би требала изгледати овако:

$ цат индекс.хтмл

Моја веб страница


Здраво Свете! Давид је!

Сада поново проверимо главну грану:

$ гит цхецкоут мастер
Пребачено на грану 'мастер'

Ако проверите статус и евиденцију:

$ гит статус
На мајстору гране
ништа за залагање, радни директориј чист
$ гит лог --онелине
0586662 Измењени индекс.хтмл до сретније поруке
ф136д22 Индекс предавања.хтмл

Приметите да немате трећу предају у мастеру. Будући да се то урезивање одржава само у грани давид_вебсите.

То се догодило

Претпоставимо да у овој фази одлучите да не желите да наставите са својим веб сајтом. Само ћеш бити програмер за Давида. Дакле, желите да спојите промене у грани давид_вебсите са главним. Из главне гране морате само да издате следеће наредбе (наредба статуса служи за проверу да ли сте на правом месту):

$ гит статус
На мајстору гране
ништа за залагање, радни директориј чист
 
$ гит спајање давид_вебсите
Ажурирање 0586662… 345ц0ф4
Убрзај
индекс.хтмл | 2 +-
1 датотека промењена, 1 уметање (+), 1 брисање (-)

Савет: Повлачите промене са давид_вебсите на мастер. Да бисте то постигли, морате бити главни.

Сада ако проверите евиденцију на мастеру, видећете да је тамо трећи урезивање:

$ гит лог --онелине
345ц0ф4 Промењена веб локација за Давида
0586662 Измењени индекс.хтмл до сретније поруке
ф136д22 Индекс предавања.хтмл

Успешно сте спојили грану давид_вебсите у мастер. И ваш индекс.хтмл за главну грану изгледа идентично грани давид_вебсите:

$ цат индекс.хтмл

Моја веб страница


Здраво Свете! Давид је!

Можете задржати грану давид_вебсите:

$ гит бранцх --лист
давид_вебсите
* господар

Или можете да га избришете:

$ гит подружница -д давид_вебсите
Избрисана грана давид_вебсите (била је 345ц0ф4).

Након брисања, више не бисте требали видети грану давид_вебсите:

$ гит бранцх --лист
* господар

Савет: Током спајања, ако Гит не може аутоматски да се споји, добиће вам грешке у сукобу спајања. У том случају морате ручно да решите проблеме спајања.

Питања:

  • Зашто вам треба гранање?
  • Како се гранају и спајају датотеке и фасцикле?

Удаљено складиште

До сада су сви ваши послови били локални. Увели сте промене у локално спремиште. Али време је да свој рад поделите са светом.

Гит удаљено спремиште је у основи још једна копија вашег локалног спремишта којем други могу приступити. Можете поставити сервер и учинити га удаљеним спремиштем. Али већина људи користи ГитХуб или Битбуцкет у ове сврхе. Тамо можете бесплатно да направите јавна спремишта којима може свако да приступи.

Створимо удаљено спремиште на ГитХуб-у.

Прво морате да отворите ГитХуб налог []. Када имате рачун, креирајте ново спремиште помоћу дугмета „Ново спремиште“. Користите „пројецт_вебсите“ као назив спремишта (ако желите, можете одабрати нешто друго).

Требали бисте видети картицу Цоде са упутствима попут ових:

... или креирајте ново спремиште на командној линији

ецхо "# пројецт_вебсите" >> РЕАДМЕ.доктор медицине
гит инит
гит адд РЕАДМЕ.доктор медицине
гит цоммит -м "прво урезивање"
гит ремоте додај порекло гит @ гитхуб.цом: иоурусернаме / пројецт_вебсите.гит
гит пусх -у порекло мастер

Копирајте следећу наредбу „гит ремоте адд оригин“ и покрените је у свој радни директоријум:

$ гит ремоте додај порекло гит @ гитхуб.цом: иоурусернаме / пројецт_вебсите.гит

Напомена: У вашем случају, ваше корисничко име требало би да буде оно што сте користили за креирање свог ГитХуб налога.

У горњој наредби сте упутили Гит-у локацију удаљеног спремишта. Команда говори Гиту да ће „порекло“ за ваш радни директоријум пројецт_хелловорлд бити „[заштићен е-поштом]: ваше корисничко име / веб локација_пројекта.гит ”.

Сада гурните свој код из главне гране у исходиште (удаљено спремиште):

$ гит пусх мастер мастер
Бројање предмета: 9, готово.
Делта компресија помоћу до 4 нити.
Стискање предмета: 100% (6/6), готово.
Писање објеката: 100% (9/9), 803 бајта | 0 бајтова / с, готово.
Укупно 9 (делта 2), поново коришћена 0 (делта 0)
даљински: Решавање делта: 100% (2/2), готово.
За гит @ гитхуб.цом: иоурусернаме / пројецт_вебсите.гит
* [нова грана] мастер -> мастер

Ако освежите прегледач у ГитХуб-у, требало би да видите да је индекс.хтмл датотека је тамо горе. Дакле, ваш код је јаван, а други програмери могу да га провере и измене на удаљеном спремишту.

Као програмер, радићете са кодом других људи. Дакле, вреди покушати проверити код са ГитХуб-а.

Идемо у нови директоријум где немате ништа. На десној страни ГитХуб спремишта приметићете дугме „Клонирај или преузми“. Ако кликнете на њега, требало би да вам да ССХ адресу. Покрените следећу команду са ССХ адресом:

$ гит клон гит @ гитхуб.цом: иоурусернаме / пројецт_вебсите.гит

Излаз би требао изгледати овако:

$ гит клон гит @ гитхуб.цом: иоурусернаме / пројецт_вебсите.гит
Клонирање у 'пројецт_вебсите' ..
даљински: Бројање предмета: 9, готово.
даљински: Компримовање објеката: 100% (4/4), готово.
даљински: Укупно 9 (делта 2), поново коришћена 9 (делта 2), паковање поново 0
Пријем предмета: 100% (9/9), готово.
Решавање делта: 100% (2/2), готово.
Провера повезаности ... готово.

То ће створити пројецт_вебсите у вашој чистој фасцикли. Ако уђете унутра, требали бисте видети индекс.хтмл са вашег пројецт_хелловорлд.

Дакле, постигли сте следеће:

  • Направио и унео промене у пројецт_хелловорлд
  • Код је отпремио на ГитХуб на веб локацији пројецт_вебсите
  • Преузели сте код са ГитХуб-а

Хајде још једна датотека из новог радног директорија пројецт_вебсите:

$ тоуцх РеадМе.доктор медицине
$ гит додај .
$ гит цоммит -м "Додато РеадМе.доктор медицине"
$ гит пусх мастер мастер

Ако освежите страницу веб локације ГитХуб пројецт_вебсите, требало би да видите РеадМе.мд фајл тамо.

Напомена: Када преузмете код са ГитХуб-а, радни директоријум аутоматски зна порекло. Не морате то да дефинишете командом „гит ремоте адд оригин“.

Питања:

  • Зашто требате користити удаљена спремишта?
  • Како постављате своје тренутно локално спремиште за повезивање са удаљеним спремиштем?
  • Како клонирате удаљена спремишта на ваш локални рачунар?

Закључак

Више информација о свим командама можете пронаћи у Гит документима []. Иако су доступни Гит УИ алати, командна линија је најбољи начин за савладавање Гита. Даће вам јачи темељ за развојни рад.

Даље истраживање:
  • хттпс: // гит-сцм.цом / доцс
  • хттпс: // гит-сцм.цом / боок / ен / в2
  • хттпс: // гит-сцм.цом / видеос
Бесплатни и отворени кодни покретачки програми за развој Линук игара
Овај чланак ће обухватити листу бесплатних покретача игара отвореног кода који се могу користити за развој 2Д и 3Д игара на Линуку. Бројни су такви мо...
Водич за сенку Томб Раидера за Линук
Схадов оф тхе Томб Раидер је дванаести додатак серији Томб Раидер - акцијско-авантуристичкој игри коју је створио Еидос Монтреал. И критичари и фанови...
Како појачати ФПС у Линуку?
ФПС је скраћеница за Фрејмова у секунди. Задатак ФПС-а је да мери брзину кадрова у репродукцијама видео записа или играчким перформансама. Једноставни...