Git - какво клон
Какво е филиал?
За да разберете как действително Git работи с клонове, ние трябва да се върнем назад и да видим как Git съхранява данните в него. Както може би си спомняте от Глава 1, Git не съхранява данни като поредица от промени, или делти, както и серия от снимки (снимка).
За по-голяма яснота, нека приемем, че имате директория, съдържаща три файлове, и искате да ги добавите към индекса и може да се ангажира. Когато се добавят файлове към индекса за всеки от тях се изчисли контролната сума (SHA-1 хеш, които споменахме в Глава 1), а след това версия на файла ще бъде записан в Git-хранилище (Git се отнася към тях като двоични данни) и тяхното контролни суми на индекса се добавят:
Когато създавате ангажират прави Git ангажират. Git контролни суми всяка поддиректория (в този случай, само в главната директория) и съхранява тези обекти дървета в Git-хранилище. След това Git създава ангажират обект, който има метаданни и указател към дървото обект на основата на проекта. По този начин, Git ще бъде в състояние да пресъздаде на текущото състояние, когато това е необходимо.
Вашият най Git-хранилище сега съдържа пет обекти: едно петно за съдържанието на всяка от трите файлове, едно дърво, който посочва съдържанието на директорията и да определи съответните имена на файлове и петна, а един се ангажират с показалеца на един и същ обект дървото до корена, и с всички метаданни ангажират. Схематично, данните в тази Git-хранилище изглежда, както е показано на фигура 3-1.
Фигура 3-1. хранилище на данни с един ангажимент.
Ако се направят някои промени и да създадете нов ангажимент, а в следващия се ангажират спестява указател към поемат ангажимент, че отиде директно към него. След следващите две записвания на историята може да изглежда като фигура 3-2.
Фигура 3-2. Git'a възрази данни за няколко ангажира.
Клон в Git'e - това е просто една лека подвижна указател към една от тези ангажира. подразбиране клон в Git'e наречен господар. Когато създавате ангажира в началния етап, ви се предоставя клон господар. точки до последния комит направили. С всеки нов ангажимент тя се движи напред автоматично.
Фигура 3-3. Браншови сочи към историята на ангажира.
Какво ще стане, ако се създаде нов клон? Така че, това ще създаде нов индекс, който може да бъде преместен. Така например, създаване на нов клон, наречен тестване. Това се осъществява чрез клон на командния Git:
Тази команда създава нова показалка в същото време се ангажира, до мястото, където се намираш в момента (вж. Фиг. 3-4).
Фигура 3-4. Множество клони, сочещи към историята на ангажира.
Къде Git знам какво клон сте в момента? Той запазва специална показалка нарича HEAD (върха). Имайте предвид, че това е различно от концепцията за HEAD в друга чуждестранна валута, като Subversion или автобиографии, които може да сте свикнали да. В Git'e е показалец към местния клон на който сте. В момента сте на капитана на клон. Командата Git клон е създаден само нов клон, той не преминавате по него (вж. фиг. 3-5).
Фигура 3-5. HEAD файлови точки на сегашната власт.
За да превключите към съществуваща клон, трябва да се изпълни Git касата. Нека да преминем към новата тестване клон:
Това действие ще се премести на главата, така че да сочи към клона на изпитване (вж. Фиг. 3-6).
Фигура 3-6. HEAD сочи към друг клон при превключване на клонове.
Какво е значението на това? Нека да направим още един ангажимент:
Фигура 3-7 показва резултата.
Фигура 3-7. Клонът, което показва, HEAD, се движи напред с всеки ангажимент.
Това е интересно, защото сега си тестване клон е преместен напред, но главният клон все още сочи към ангажират сте били, когато сте стартирали Git касата. за да превключите клонове. Да се върнем към главния клон:
На Фигура 3-8, можете да видите резултата.
Фигура 3-8. Глава се премести в друг клон на checkout'e.
Тази команда е направил две неща. Той се премества показалеца HEAD обратно на капитана, и се връща на файлове във вашата работна директория назад клон, в съответствие със състоянието на дадено изображение, което показва, капитанът. Това също така означава, че промените, които правите оттук нататък, ще се разминат с по-стара версия на проекта. Тя е в действителност, ролки обратно промените, които сте имали време да се правите на тестване клон. така че можете да продължите да се премести в друга посока.
Нека отново vnesom няколко промени и да направи ангажират:
Сега историята на вашия проект отклонение (вж. Фиг. 3-9). Вие създадохте нов клон, ние се движим по него, е работил върху него малко, да се върне в основната бранша и е направил друга работа. И двете от тези промени са изолирани в отделни отрасли: можете да превключвате между клоните и ги обедините, когато сте готови. И всичко това е направено с прости команди и клон касата.
Фигура 3-9. Историята на различните отрасли.
Поради факта, че клонът в Git'e всъщност е обикновен файл, който съдържа 40-знаков контролна SHA-1 от ангажират да сочи към, създаване или изтриване на клонове са евтини. Създаване на нов клон е толкова бърз и прост като написването 41 байта във файла (40 символи и нов ред).
Това е много различно от това как разклоняване се извършва в най-SLE. Има го копира всички файлове на проекта в друга директория. Това може да отнеме няколко секунди или дори минути, в зависимост от размера на проекта, докато Git'e винаги се случва веднага. Също така, поради факта, че ние помним предците да се ангажират, намирането на подходяща база за сливане сливане се извършва автоматично за нас, и, като цяло, на сливането се извършва лесно. Тези функции ще ви помогнат да насърчи разработчиците да създават и използват клони.
Нека да разберат, защо трябва да го направят.