Якщо ви один з мільйонів у спільноті розробників, то, швидше за все, ви вже чули про концепцію управління версіями. Це потужний інструмент або система, яка допомагає вам подбати про свою роботу, що дозволяє швидко переміщувати файли, документи та інший збір інформації, пов’язаної з вашим проектом. І на ринку є численні інструменти для таких видів роботи, як власні, так і з відкритим кодом. Git - одна з найпопулярніших у світі систем управління версіями на сьогоднішній день, і величезна кількість проектів покладається на Git для контролю версій. Git - це безкоштовна та відкрита джерела розповсюдженої системи контролю версій, призначена для відстеження змін у вихідному коді під час розробки програмного забезпечення.
Проект Git представлений структурою даних, що називається сховищем, де зберігається вся інформація, що стосується проекту, включаючи повну історію проекту з моменту його створення. Він відслідковує всі зміни, внесені до файлів з часом, будуючи часові шкали під час виконання проекту. Репозиторій, в свою чергу, складається з набору окремих знімків вмісту проекту - колекції файлів і сховищ, які називаються комітами. Коли ви хочете поділитися розвитком свого проекту зі світом, вам доведеться підштовхнути його до віддаленого пристрою, до якого ви маєте доступ для запису. Ваші локальні відділення не синхронізуються автоматично з віддаленими сховищами - вам потрібно явно натиснути гілки, якими ви хочете поділитися.
Git розглядає свої дані більше як набір знімків, як міні-файлова система або версії проекту, який називається commits. Кожен раз, коли ви здійснюєте або зберігаєте стан свого проекту в будь-який час, Git робить знімок того, як виглядають ваші файли на даний момент, і зберігає посилання на цей знімок. Об'єкт фіксації містить метадані для кожної зміни, зробленої в сховищі, включаючи автора, виконавця, дату фіксації та повідомлення журналу. Кожна комісія вказує на дерево-об'єкт, який фіксує стан сховища в той момент, коли було здійснено фіксацію, все в один повний знімок. Коли ви вносите зміни до коду попутно, ви створюєте кілька комісій - окремий комітет для кожної внесеної вами зміни. Git призначає кожному виконувати унікальний ідентифікатор, який відстежує, що, коли та хто із внесених вами змін.
У кожного розробника є власне приватне сховище для відстеження їх змін. Ви вносите зміни на місцевому рівні, і коли ви будете готові поділитися ними з іншими розробниками, ви повертаєте їх у сховище, яким ви ділитесь. Команда зберігає зміни, які ви внесли лише до локального сховища, але не до віддаленого сховища. Ваші комісії не синхронізуються автоматично з віддаленим сховищем - вам потрібно явно натиснути на комітети, якими ви хочете поділитися. Використовуючи команду push, ви застосовуєте свої зміни до сховища вище. Кожен проект із відкритим кодом має свій спосіб приймати зміни. Деякі проекти використовують повністю розподілену систему управління версіями, де лише одна людина може натиснути зміни до основного сховища, тоді як існує спільна модель сховища, де всі розробники можуть перейти до спільного сховища.
- Натискання приходить після вчинення. Git фіксує записи та відслідковує зміни до сховища з кожним пунктом фіксації на деревооб'єкт, який фіксує стан сховища в той момент, коли це було здійснено, все в один повний знімок. Але коміти зберігають зміни лише в локальному сховищі, але не у віддаленому сховищі. Git push оновлює введені вами зміни та дозволяє надсилати їх у віддалений сховище, де всі розробники можуть отримати доступ до них. Використовуючи команду push, вона просто оновлює ваші зміни в сховищі вище.
- Git-комітети - це локальне значення, вони записуються лише на машині, на якій фактично відбуваються коміти. Команда "git commit" використовується для того, щоб сказати Git зберегти свої зміни в локальному сховищі, і ви повинні спеціально сказати Git, які зміни ви хочете включити до комісії перед використанням команди "git commit". Ви можете використовувати команду "git push" для переміщення комітетів з локального сховища у віддалене сховище. Команда "push" оновлює нові локальні комісії на віддаленому сервері. Підштовхування бере два аргументи: віддалене ім’я (походження) та ім'я гілки (головний).
Коротше кажучи, фіксація - це основна одиниця змін у Git. На відміну від інших централізованих моделей управління версіями, Git розглядає свої дані більше як набір знімків, які називаються комітами. Вони схожі на знімок всього вмісту сховища, разом з усією інформацією, що стосується проекту та взаємозв'язку цього стану сховища з іншими записаними станами, оскільки вміст еволюціонував з часом. Об'єкт фіксації містить метадані для кожної зміни, зробленої в сховищі, включаючи автора, виконавця, дату фіксації та повідомлення журналу. Але фіксація зберігає зміни лише в локальному сховищі, але не у віддаленому сховищі. Git push оновлює введені вами зміни та дозволяє надсилати їх у віддалений сховище, де всі розробники можуть отримати доступ до них.