Съдържание
Промените в Git Те не са същите като в други системи за управление и контрол на версиите, тъй като съхранява само това, което наистина се е променило, намалява размера на файловете, генерирани за контрол, и също така му придава по -голяма гъвкавост.Аспектът, който контролира всичко това, е индекс който носи отговорността да знае кой, какво и кога от всички направени промени, затова, след като добавим различните аспекти към нашия индекс на клон обаждането е осъществено ангажирам.
Какво е ангажимент?В Git Знаем, че за да добавим промяна, трябва да направим a ангажирам на същото, след като е добавено към индекса на хранилището. Какво обаче е а ангажирам точно? Този въпрос не винаги си задаваме от начина, по който ние Git дръжки това е доста ясно, но а ангажирам е начинът по който Git регистрира текущото състояние на индекса на хранилището и го съхранява в съответния обект, по този начин всеки ангажирам тя е получена от предишната и по този начин структурата, която не претърпява промени, може да се използва повторно.
Управлението на ресурсите, което прави това толкова бързо, се дължи на сравненията SHA1 Следователно, ако елементите в индекса имат един и същ хеш, те не продължават да се задълбочават в промените си, тъй като са идентични и по този начин се вземат само променените файлове.
Начинът, по който ангажира ни позволява да установим йерархични структури, които дават сигурност за получаване на произхода на всички регистрирани промени, така че ако следваме най -добрите практики на Git Никога няма да се загубим, благодарение на уникалните идентификатори можем също да сме сигурни, че ако някоя функционалност е създала проблем, тя може да бъде намерена на точната точка, където е била включена.
Коментирахме как ангажира имам хеш SHA1 с които могат да бъдат идентифицирани, се оказва, че този хеш също ги прави уникални и неповторими, тоест ако имаме ангажирам и в друго хранилище се намира същия хеш, за да можем да знаем, че е същото ангажирам.
Поради това на ангажирам също се счита атомна, тоест като единична единица независимо, която съхранява състоянието на много директории или файлове, с това можем да се позовем на ангажирам като единица в нашето хранилище и по този начин да може да третира всеки един като елемент, който, въпреки че е свързан с предишния, е уникален.
Въпреки че хешът SHA1 служи като уникален идентификатор за ангажирам, неговата структура на 40 буквено -цифрови знака може да представлява проблем, когато искаме да комуникираме с друг разработчик и да обясним това ангажирам Говорим си.
Относителни именаЗа да разрешим този проблем, можем да установим относителни имена и по -лесно за запомняне ангажираТе не заместват хеша, а по -скоро работят като един вид етикет, който ни позволява да ги идентифицираме по по -човешки начин.
Да говорим за последното ангажирам от клон можем просто да се позовем ГЛАВА, тъй като това винаги ще се отнася за най -новите и най -новите ангажирамТъй като не винаги ще изискваме това, достатъчно е да използваме първите знаци на хеш, въпреки че не винаги ще бъде уникален, така че чрез добавяне на още знаци ще постигнем съответната уникалност.
Нека видим тогава командата, която трябва да използваме, за да постигнем последното:
git log -1 --pretty = запис на идентификатор на един ред
Сега ще видим на следващото изображение как идентифицираме a ангажирам в нашето тестово хранилище, за това първоначално ще намерим кой е SHA1 от ГЛАВА и тогава ще го наречем по първите му символи, да видим:
С предишния пример открихме инструмент за Git това може да бъде много полезно и е log команда, това е много мощно, тъй като ни позволява да локализираме различните ангажирам по бърз и точен начин, но той има много параметри и конфигурации, които могат да бъдат трудни за запомняне на първо място, но за да го използваме, не е нужно да ги изучаваме всички, можем да вървим малко по малко, докато свикнем с него използвайте.
Ако искаме да видим историята на коммитите, направете следното:
git log име на клон
С това ще получим подробна информация за историята от нашето клон и техния ангажираНека да видим как изглежда в нашата конзола в хранилището от тестове, които имаме:
След това забелязваме как ангажира са организирани от най -новите до най -старите, което ни позволява да видим малко историческата линия на промените, претърпени от клон избран за преглед на историческия дневник.
Тъй като работата по конзолата понякога е малко тежка, въпреки че е много необходимо, Git ни предлага инструмент, който ни позволява да прегледаме историята на ангажира графично и е gitk не е подкоманда на Git като например дневник, който вече видяхме, но той е независима команда и ни позволява достъп до по -подробна информация за клона и неговата история.
За да го използваме, просто трябва да изпълним следната команда:
gitk nameBranch
Нека да видим как изглежда изпълнението му в конзолата:
Въпреки че може да изглежда, че нищо не се е случило, скоро ще получим прозорец с графиката, поискана за клон посочени, както можем да видим на следната екранна снимка:
Увеличете
Можем да забележим, че имаме много по -големи детайли, в допълнение към подобрението в неговата визуализация.Реф Y Symrefs принадлежи на препратки Y символични препратки съответно първият съответства на идентификатор SHA1 на обект в рамката на обекта на нашето хранилище, от друга страна, втората съответства непряко на обект, въпреки името си той също е препратка.
Тази структура на препратките е много важно да се знае, тъй като ще ни позволи да разберем организацията на нашата директория на ангажира Y клони в рамките на Git, които се съхраняват в директорията .git / ref.
Създаване на символна препраткаАко искаме изрично да създадем a символна справка просто използвайте командата git symbolic-ref, и въпреки че е възможно да се използват имена като ГЛАВА за тези препратки не е препоръчително, тъй като в крайна сметка те могат да ни доведат до объркване, което може да причини повреда на нашето хранилище.
И накрая, нека видим как изглежда изпълнението на тази команда, когато я приложим към нашето тестово хранилище:
Друг интересен аспект на ангажира, е, че можем да работим с относителни именаТова прави намирането на диапазони за ангажименти много лесно, например, ако искаме да локализираме съществуващото между прегледите за определен период, можем да го направим.
За да постигнем това, трябва само да използваме името на клона плюс символа ^ и номера на редакцията. Например майстор ^ където се позоваваме на предпоследната промяна, направена в клон майстор.
История на хранилищетоПо този начин ще можем да се придвижваме през цялата история на нашето хранилище, което ни дава възможност за достъп по отношение на ангажира които ни направиха възможно да имаме настоящата, ако следваме структурата майстор 2 ще ни отведе до втория баща на ангажирам, тоест този, който е дал живот паралелно, също с ~ можем да получим достъп до бащата на бащата на настоящия ни ангажимент, тоест дядото, за да го поставим по някакъв начин в родословието.
Пример може да бъде господар 2 ~ 3 За да се позовем на историческите промени в нашето хранилище, ако искаме да получим името на относителен коммит, просто трябва да използваме следната команда:
git rev-parse RelativeName
Това ще върне SHA1 от ангажирам до които стигнахме. Нека видим на следващото изображение как можем да получим името на текущия коммит от master и с майстор ~ името на първия родител на същия, който би бил ангажирам от което започваме:
Тогава забелязахме как успяхме да получим две SHA1 различни и валидни в нашето хранилище, само използвайки относителни имена.
С това приключваме този урок, въведохме нови концепции за това какво ангажира в рамките на GitТова ни дава възможност да разберем по -добре структурите на нашите хранилища, като по този начин организацията ще изглежда по -логична и по този начин можем да бъдем много по -ефективни при управлението на промените в нашия код. Начинът, по който Git Управлението на различията го прави толкова специален и затова се е превърнал в един от водещите мениджъри на версии на съвременните технологии.Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка