Вот основные тезисы из текста:
- Git – это мощный инструмент для контроля версий, который является критически важным навыком для любого разработчика.
- Проблемы с файлами: при изменении файлов, трудно отслеживать изменения и найти виноватого, что может привести к потерям времени и конфликтам.
- Git решает эти проблемы: он позволяет отслеживать изменения файлов, найти виноватого и вернуть файлы к предыдущим версиям.
- Настройка Git: для начала работы с Git, нужно установить программу, задать имя пользователя и электронную почту, а также создать аккаунт на GitHub.
- Репозитории: Git может управлять любым количеством папок и файлов на компьютере, автоматически отслеживая изменения и храня их в истории.
- Локальный и удаленный репозитории: локальный репозиторий хранится на компьютере, а удаленный – в облаке на GitHub, что позволяет доступ к файлам с любого компьютера.
- Преимущества использования Git: это позволяет быстро откатывать изменения, найти и исправлять ошибки, а также делится файлами и проектами с командой.
Расшифровка видео
Приветствие
0:00
гид самая популярная система контроля версий в индустрии наверное второй по
0:05
важности навык для любого разработчика после какого-либо языка программирования гид используется в любой команде в
0:12
каждом проекте В любой компании в которую вы могли бы попасть в современном мире Именно поэтому для
0:18
начинающего разработчика просто критически важно уметь пользоваться гид хотя бы на базовом уровне но у него есть
0:24
одна проблема Если вы никогда раньше его не видели то начать его использовать вам скорее всего будет довольно сложно
0:30
основной его интерфейс консольный Прости Господи командам бесчисленное множество Кроме того когда вы их используете то не
0:37
всегда потом можете глазами явно увидеть Что произошло после этого И порой наваливайте жесткого совершенно кинжал
0:45
собственных проектах поэтому сегодня я очень простым языком расскажу вам обо
0:51
всех основных понятиях этого невероятно мощного инструмента Добро пожаловать на мой канал
1:00
вообще в этом ролике я расскажу вам супер простым языком Зачем вообще вам нужен гид а также научу вас использовать
1:06
его все основные команды Так что вы больше никогда не забудете Зачем нужна одна А зачем нужна другая знаю все это
1:14
дорогие друзья вы совершенно точно сможете справиться затем с Любой задачей связанной сгид из реального мира за
1:21
исключением может быть Только то и где вы запушили свой локальный конфиг впрот
1:26
и вас потом уволили но историю этих событий тоже сможет отследить Конечно вы
Зачем мне Git?
1:33
меня спросите дорогие друзья Влад а зачем мне вообще разбираться с этим душным китом Какие вообще профиты от
1:40
этого отвечу помните от Вас недавно ушла бывшая так вот она ушла потому что вы не
1:48
пользовались нормально потому что она это знала что когда у вас есть гид Вы
1:53
можете отслеживать изменения вообще любых файлов на вашем компьютере а когда вы работаете в деньги над одним и тем же
2:01
проектом то есть меняйте одни и те же файлы то для вас было бы очень важно всегда знать кто и когда там что поменял
2:08
чтобы очень быстро найти виноватого по сути Что такое написание кода написание кода Когда вы берете какой-то файл
2:15
текстовый пишете в нем какой-то текст Вот и все неважно даже что этот код делает важно то что это просто текст по
2:22
факту по сути Что такое вообще умение программировать это же умение нажимать кнопочки в правильном порядке так вот
2:30
Представьте что вы разработали революционное совершенно приложение например для вызова ваших пацанов на
2:37
стрелку за стадионом все в восторге от него короче но ещё Вы теперь придумали
2:42
для него новую какую-то гениальную фичу Ну например добавили промокоды на
2:48
покупку Балтики 9 для ваших Стрелок и это крайне важный функционал для всех ваших пользователей
2:54
фундаментальный который потребовал изменения огромного количества существующих их уже файлов в вашей
3:01
системе вы взяли все эти файлы собрали их в какой-то один исполняемый файл например там точка xz.jr и положили его
3:09
на какой-то сервер с которым взаимодействует ваши непосредственные пользователи вашего Великолепного
3:14
приложения теперь после этого действия они наконец-то имеют доступ к этой новой фиче которую вы добавили туда но вдруг
3:20
выясняется что после того как вы добавили все изменения на продакшн в
3:26
вашем коде оказывается бак который очень быстро находит пользователей и он очень сильно им мешает и новая часть за него
3:32
не работает и например старый функционал тоже разваливается пользователи в ярости очевидно И вам нужно срочно как-то
3:40
вернуть Всё назад как было и чтобы пользователи работали со стабильной версией всё ещё А вы могли ещё подольше
3:47
покопаться в вашем новом функционале и найти эту проблему чтобы её решить но как это сделать если у вас есть просто
3:54
физические файлы с кодом то вам придётся их просто открыть и
3:59
пытаться выпилить Этот новый код который потенциально поломан и еще при том не просто выпилить А подсохранить куда-то
4:06
чтобы Вы могли к нему вернуться потом и попытаться исправить этот баг А что если там ну тысячи строк просто куча файлов
4:13
измененных Это же очень сложно это займет вас кучу времени еще потом
4:18
собирать эти куски обратно вы просто задолбаетесь пользователи Они ведь не
4:24
ждут им безразлично не просто начинают кричать у меня ничего не работает Верните все как было ненавидеть вас а вы
4:31
вместо того чтобы очень быстро помочь занимайтесь тем что перекладываете текст
4:36
из одного файла в другой это одна из тех проблем которую решает гид изначально
4:41
при разработке вашего приложения Вы можете все его файлы взять и поместить
4:47
под контроль кита и с этого момента гид будет следить за всеми изменениями
4:53
внутри этих файлов на каких строчках они произошли что поменялось на что когда
4:59
это было кто это сделал и много другое в результате если у вас появляется вот
5:05
такая вот проблема но за вашими файлами следит гид то вы можете просто прийти и сказать Извините Мистер сердит Можно
5:12
пожалуйста взять все мои файлы и вернуть все как оно было до того как я там все сам
5:20
разломал и когда мое приложение процветало пользователи были счастливы и он просто возьмет и вот так вот вернет
5:27
Но более того он еще и сохранит внутри себя ту нестабильную версию он тоже не
5:33
просто удалит не потеряет она тоже там продолжит храниться и вы сможете отдельно на нее прийти То есть вы просто
5:40
просите все откатить он нам откатывает моментально эти файлы все собираете в
5:47
новый файл например и закидываете на пруд теперь получается что у пользователей снова вернулась та
5:53
стабильная версия с которой они работали до этого у них все нормально Они продолжают себя хорошо чувствовать
5:59
тем временем с вашей командой просите гид вам скинуть ту поломанную версию и
6:05
жестко потеете в нее чтобы найти тот самый баг который вам все уничтожил Но это даже не все возможности гитары это
6:12
всего одна из них но которая уже должна показать вам насколько это важно и крутая штука при разработке но прямо
6:19
сейчас мы поговорим обо всех основных остальных возможностях этого замечательного просто инструмента вообще
Настройка Git & GitHub
6:26
гид это просто специальная программа которую вы ставите себе на комп скачать
6:32
ее можно совершенно бесплатно без регистрации SMS официального сайта никаких вирусов и баннеров на вашем
6:39
компьютере не появится после этого не переживать далее просто устанавливаем ее
6:45
как любую другую прогу основной интерфейс для работы с гид консольной так что открываем любой совершенно
6:52
терминал на любой операционной системе которая у вас есть и начинаем
6:57
настраивать гид для работы нам нужно задать имя пользователя под которым мы
7:04
будем вносить Все изменения файлы за которыми следит гид чтобы Таким образом
7:10
он мог запомнить кто именно эти файлы менял на нашем компе ну это были мы
7:16
такие настройки задаются с помощью команды git config а печатаем это в консоли и затем указываем параметр
7:24
Global чтобы сказать что эти настройки будут применяться вообще к любому файлу
7:30
который мы отдадим под контроль Гита а затем указываем название настройки
7:36
которую хотим обновить чтобы обновить имя пользователя нужно написать username а далее в двойных кавычках
7:43
указываем конкретное значение которое мы хотим туда записать например в моем
7:49
случае это будет Влад Мишустин и поэтому я пишу там именно это точно по той же
7:56
схеме указываем email пользователей но теперь юзернейм пишем usermail а в кавычках указываем желаемый
8:04
e-mail очевидно теперь гид запомнил эти настройки и применит их К любым файлам
8:10
которые вы будете менять Именно под этим именем вы будете известны в истории
8:16
изменений того или иного файла теперь еще вам стоит создать аккаунт на портале github.com не путайте гид и гитхаб гид
8:26
это специальная программа которая у вас на компе следит за изменениями во всех
8:32
файлах тогда как это специальное веб-приложение которое позволяет вам
8:39
загрузить с вашего компа в облако Все изменения ваших файлов и хранить их там
8:45
чтобы другие люди тоже могли получить к ним доступ Зачем еще вам хранить эти
8:51
файлы в Облаке Затем что Представьте ситуацию вы написали огромное количество кода на своем компе которые у вас на
8:58
компе хранятся тут вы ловите все-таки вам тот самый баннер злополучный он у вас
9:05
высвечивается на весь экран со всеми необходимыми вещами там и значится вам
9:12
нужно тереть ваш жесткий диск чтобы его убрать это значит что вы потрёте и все
9:17
ваши файлы в последнее время изменённые в том числе и ваш кота это же огромный кусок работы который вы делали так вот
9:24
гейт позволяет весь ваш кот взять и загрузить его на github где он будет уже
9:32
храниться не на вашем компе где Всё может пойти прахом А в Облаке на куче
9:40
разных компьютеров с кучей копий и так далее То есть там точно с ним ничего не случится и вы всегда сможете получить к
9:47
нему доступ с любого вообще компьютера Но более того это значит что ваша команда например тоже может получить к
9:53
нему доступ то есть таким образом вы делитесь людьми своими файлами своими наработками своими проектами ключевым в
Репозиторий
10:00
Гид является репозиторий по сути репозиторий это просто папка с файлами
10:05
за который у вас на компьютере следит гид и в этой связи репозиториях на вашем
10:12
компе может быть Сколь угодно много то есть одна папка например с вашим проектом за ней следит гид это один
10:20
репозиторий другая папка с вашим дипломом которого нет это второй репозиторий и так далее все внутренние
10:27
папки и файлы репозитория также автоматически находятся под надзором под
10:32
контролем гид таким образом любое изменение любого файла в вашем
10:37
репозитории автоматически запоминается и отслеживается китом Теперь может быть
10:45
локальным и удаленным Локальный репозиторий это просто та самая папка с
10:51
файлами которые хранится на вашем именно на вашем компе за который следит тогда
10:57
как удаленный репозиторий вот этот самый локальный который у вас был Вы взяли и с помощью Гита загрузили
11:04
его например на github и теперь он хранится там вот это есть удаленный репозиторий То есть он создается на
11:11
основе локального это по сути копия вашего локального репозитория но которая теперь хранится не на вашем компьютере а
11:19
в Облаке где-то то есть удаленно и это значит что ваш локальный репозиторий и
11:26
созданный на его основе удаленной репозиторий постоянно связаны между собой и эту связь обеспечивает для вас
11:33
именно гид теперь как вашу обычную директорию превратить в Гид репозитории
11:38
для этого в терминале нужно перейти сначала в ту папку которую вы хотите сделать репозитории Это позволяет
11:46
сделать команда CD после которой нужно указать просто путь к этой самой папке в
11:51
которой вы хотите оказаться выполнив вы сразу переходите в указанную территорию
11:57
находясь здесь Вы теперь можете выполнить команду gitinid которая сообщает гиту о том что
12:06
эту директорию нужно превратить репозитории то есть по факту следить за
12:11
всеми файлами и папками что здесь находится с этого момента git знает все
12:17
теперь как создать удаленные репозитории сначала идем в ваш профиль на гитхабе и
12:24
там создаем пустой репозитории для этого достаточно клацнуть кнопочку
12:29
ввести название выбрать желаемые параметры доступа и сохранить в общем
12:36
Теперь у вас на гитхабе есть пустой удаленный репозиторий но еще ничего
12:42
вообще не знает о вашем локальном значит эту связь нужно проложить как-то для
12:48
этого локальном репозитории нужно выполнить команду
12:54
[музыка] и указать URL вашего репозитория
13:00
URL репозитория Мы возьмем как раз с гитхаба где только что создали все
13:05
необходимое в общем-то это наша команда которую мы только что написали говорит о том что нужно взять локальный
13:13
репозиторий в котором вы эту команду выполняете и добавить к нему удаленный
13:19
который доступен на github по вот такому
13:24
URL после исполнения этой команды ваш локальный и удаленный репозиторий
13:30
становится связанной но пока еще ничего никуда не копируются очевидно Теперь
13:36
дело изменения в файлах в вашем локальным репозиториям Когда вы готовы
13:41
Вы можете сказать гиту чтобы он опубликовал все их в удаленную копию но
13:47
Обратите внимание ничего делать не будет он опубликует
13:53
только когда вы явно ему скажете мы позже поговорим о том как это сделать поэтому не пережи и если вдруг вы
14:00
навалили какого-то жесткого кинжа локально что все это вдруг сейчас же увидят Нет пока вы это сами не
14:08
опубликуйте общественное мнение о вас останется хорошим Но это очевидно
14:13
временно а теперь как другим людям участникам вашей команды Например скачать тот код что вы в будущем
14:21
загрузите ваш новый удаленный репозиторий по сути они могут взять ваш
14:27
локальный репозиторий и на его основе создать на своих компьютерах локальные репозиторий то есть Обратите
14:34
внимание по сути это просто новая копия вашего удаленного репозитория на другом компьютере Но это именно другая вторая
14:41
копия То есть у вас на компе ваша копия локальной репозиторий у другого
14:46
участника вашей команды другая копия то есть другой локальный репозитории Но оба
14:52
они связаны с одним и тем же удалённым репозиториям То есть он для них общий
14:59
для того чтобы создать на своём компе локальный репозиторий полностью копирующий какой-то удалённый вам
15:05
сначала в консоли нужно перейти в папку Куда вы хотите скачать в общем-то копию
15:11
удалённого репозитора можно для этого использовать ту же команду CD например а далее запускаем команду git клоун и
15:19
после неё указываем URL удалённого репозитория urial удаленного репозитория берём
15:25
именно с github конечно То есть это как раз URL того репозитория который мы
15:31
хотим скачать себе на компьютер запускаем немножко ждем пока всё
15:37
скачается и бац у вас на компе появилась новая папка со всеми файлами что лежат в
15:44
том удаленном репозитории это папка сразу является вашим локальным
15:50
репозиторием то есть гид уже следит за всеми изменениями здесь и этот локальный
15:55
репозиторий уже автоматически связан с удалённым недавно больше ничего делать не нужно для этого но опять важно
16:02
понимать что когда вы здесь в этом новом локальном репозитории что-то меняете то
16:08
эти изменения ни в коем случае ги Том не будут автоматически отражены в удаленном только когда Вы снова явно скажете что
16:16
пожалуйста гид Загрузи их на github тогда он это сделает а до тех пор вы
16:21
просто меняете вашу локальную копию видите эти изменения только вы владелец
16:26
этой локальной копии теперь поговорим непосредственно О внесении изменений файлы вашим локальном репей истории у
Коммиты
16:33
меня здесь открыт просто текстовые файл redmi который находится в локальном репозитории связанном с удалённым на
16:41
гитхаб прямо сейчас этот файл пуст и предположим Я хочу внести в него
16:46
какие-то изменения Для этого мне в общем-то достаточно просто работать с
16:52
этим файлом на данном этапе я никак не привязан именно гид поэтому я просто добавлю сюда пару строчек для для
16:59
примера Как вы помните дорогие друзья git следит за всеми изменениями файлов в
17:04
репозитории поэтому давайте убедимся что это действительно так гид знает о том
17:10
что мы изменили этот файл для того чтобы понять в каком состоянии гид сейчас
17:16
видит наши файлы внутри репозитория можно выполнить команду Get statoes эта
17:22
команда выведет нам в консоль информацию обо всех не законыченных файлах в Гид
17:28
репозитории то есть о тех Чью версию мы изменили но еще не сохранили эти
17:35
изменения внутри Гита как вы можете видеть дорогие друзья гид показывает нам что прямо сейчас он видит один
17:43
измененный файл но который имеет состояние Это значит что гид знает что этот файл
17:51
изменен Но если вы прямо сейчас например все из него Удалите то не сможете
17:56
вернуться к точке где этот текст все еще был на месте то есть мы еще пока не
18:03
сохранили вот эту версию этого файла внутри Гита чтобы потом можно было к ней
18:08
вернуться при необходимости сохранение же конкретной версии файла внутри Гита
18:14
называется камитом то есть если я хочу чтобы в будущем у меня была возможность
18:20
всегда быстро прыгнуть именно на эту версию файла то я должен такой его
18:26
состояние закомитить в Гид и сделать Это довольно просто поскольку в процессе внесения
18:33
изменений в репозитории Вы можете поменять множество файлов то Прежде чем сделать каминт Вы должны сначала сказать
18:41
гиту какие именно из этих изменений вы хотите сохранить в виде отдельной версии
18:48
то есть комита внутри Гита чтобы всех измененных файлов выбрать нужные подготовить будущему комиту Используйте
18:55
команду после этой команды указать именно файлов или папок которые
19:03
вы хотите подготовить к сохранению чтобы сразу подготовить все файлы можно просто
19:08
написать точку которая указывает на директорию в которой вы прямо сейчас и находитесь то есть выбирает все файлы из
19:16
текущей директории теперь после того как мы выполнили гитар если мы снова выполним команду getstatos то Увидим что
19:23
теперь гид знает что изменения в нашем файле уже готовы к сохранению а не
19:31
просто пылятся безвестности то место где сейчас гит хранит информацию о том какие
19:36
именно файлы готовы к коммиту называется индекс или staging только те файлы что
19:44
находятся в индексе попадут в следующий коммент Когда вы добавили изменения в
19:49
индекс и теперь готовы сохранить их в истории гитара то вам необходимо выполнить команду
19:56
еще у нее есть после которого в кавычках можно указать
20:02
сообщение с описанием той версии файлов которую вы сохраняете это удобно чтобы
20:09
потом понимать что именно в этой версии содержится Когда вы выполните
20:16
то внутри гитара создастся новый как бы чекпоинт который так и называется КАМиТ
20:23
по сути теперь это значит что гид запомнил то состояние файлов которые вы
20:30
закомитили и теперь вы всегда можете вернуться именно к этому состоянию если
20:37
вам это будет нужно однажды коммитов можно делать много один за другим каждый
20:42
раз таким образом сохраняя различные версии ваших файлов гид хранит всю
20:48
историю коммитов поэтому Затем вы сможете вернуться как бы обратно во времени к любому из этих комитов
20:55
совершенно Если знаете его номер Давайте еще немного изменим наш файл ритме чтобы
21:00
повторить упражнение и создать еще один коммент детей с еще одной версии этого
21:06
файла добавим немного текста теперь выполняем команду чтобы поместить измененные файлы в индекс и сказать что
21:13
именно их Мы хотим в будущем закамитить и теперь после того как они были
21:21
добавлены в индексе мы можем сделать коммит командой git commit и здесь он
21:26
коммитит только те файлы что находятся в индексе очевидно и Раз уж теперь у нас
21:31
есть несколько коммитов то было бы здорово посмотреть как они выглядят сделать это можно с помощью команды Get
21:38
Logo эта команда выведет вам на экран информацию обо всех комитах которые вы
21:45
сделали до сих пор в хронологическом порядке Как видите дорогие друзья здесь есть номер конкретного комита также то
21:53
самое сообщение что мы указывали что позволяет нам гораздо лучше понять какая
21:58
версия наших файлов находится в этом комите и именно вот этот номер или еще
22:04
говорят нам как бы вернуться во времени к этой
22:09
версии которую мы сохраняли в этой точке Давайте посмотрим прямо сейчас мы смотрим на самую последнюю версию нашего
22:17
файла которую мы только что обновляли что если я быстро хочу вернуться к
22:22
предыдущей для этого я могу просто выполнить команду
22:28
и указать хеш-камита которому я хочу вернуться
22:34
Шах Как вы можете видеть дорогие друзья Мы вернулись Ровно к той версии нашего
22:40
файла которую мы сохранили в первый раз вы мне скажете что это не слишком Влад
22:46
впечатляющее и мы могли бы просто Control Z нажать но Представьте что у вас таких файлов 50 а также вы хотите
22:54
вернуться к какой-то версии которая существовала пару недель назад тогда гид
22:59
просто незаменим уже все эти коммиты находятся сейчас в вашем локальном репозитории Это значит что если вы
Публикация изменений
23:07
вместе с командой работаете над каким-то общим проектом то другие участники все
23:13
еще не видят те изменения что вы внесли в эти файлы не те версии что Вы
23:18
сохранили поскольку ваш локальный репозиторий связан с удаленным на github Вы можете с помощью гид взять все ваши
23:26
комменты которые вы сделали послать их из локального репозитория на удаленный
23:32
Чтобы другие участники вашей команды могли скачать эти коммиты себе из этого
23:37
удаленного репозитория для того чтобы загрузить сделанные коммиты в удаленной репозитории достаточно находясь внутри
23:45
вашего локального репозитория в терминале выполнить команду git Push после этой команды нужно указать имя
23:52
удаленного репозитория Куда вы хотите загрузить любой локальный где знает свой
23:58
удаленный под кодовым именем Origin чтобы не писать каждый раз URL поэтому пишем также после имени удаленного
24:06
репостория нужно указать имя ветки изменений в которую вы загружаете комменты а ветках мы поговорим чуть
24:13
позже Пока можно написать Мастер Это наша самая главная и Единственное пока
24:20
ветка изменения Она всегда есть жмем Enter и видим как гит начинает посылать
24:26
наши комменты состояние файлов в них на сервера github в наш удаленный
24:33
репозиторий теперь можно зайти на github наш репозиторий и увидеть там как раз
24:39
наш файл в актуальном состоянии здесь видно именно последние коммит Но на
24:45
самом деле на гитхабе хранится вся история тоже также доступна теперь Представьте что в вашей команде есть еще
24:52
один разработчик который хочет подтянуть себе из общего удаленного репозитория те
24:59
изменения что вы сделали фалеритми предположим он клонировал весь проект
25:05
еще до того как Вы теперь запушили свои кометы Поэтому у него на компе все еще
25:11
старое состояние этого файла Я здесь просто на своем компе создал вторую папку с еще одним локальным рекреатором
25:17
который привязан к тому же самому удаленному эту историю что и первый в общем-то Как вы можете видеть тут
25:24
состояние первое что у нас было изначально теперь
25:30
для того чтобы другому участнику вашей команды скачать ваши комменты из удаленного репозитория нужно из
25:37
директории его локального репозитория выполнить команду
25:44
после которой также нужно указать имя удаленного репозитория это Origin у нас
25:50
а также имя ветки из которой мы подгружаем коммиты это у нас мастер
25:56
запускаем гид быстренько подкачивает нам все недостающие файлы и Вуаля мы видим у
26:04
себя здесь самую последнюю версию изменений Хотя раньше мы смотрели на
26:10
старые файлы как бы кто-то обновил их в репе И теперь мы их получили но мы
26:16
получили не просто последнюю версию мы получили все коммиты всю историю если
26:22
выполнить теперь команду git Lock то мы увидим все те комит и что мы до этого
26:29
сделали в другом локальном репозитории затем запушили их в удаленный поэтому теперь я из этого уже из нового
26:36
локального репозитория могу перемещаться по ним точно так же как и автор в
26:42
оригинальном с помощью очень удобно теперь поговорим об еще одном фундаментальном понятии в Гид о
Ветки
26:50
ветках по сути ветка в Гид это всего-навсего последовательность коммитов которая имеет определенное имя
26:57
Вот и все поэтому в любом локальном или удаленном репозиторий который вы
27:03
создаете всегда есть как минимум одна ветка потому что коммиты они же откуда-то начинаются она это метка как
27:10
правило называется мастер или Main то есть самое главное единственная ветка но
27:16
вы можете создавать сколько угодно своих веток собственных зачем вам их вообще
27:21
создавать Представьте ситуацию что вы как разработчик работаете над каким-то
27:26
проектом и делаете огромную новую фичу она длинная там много файлов приходится изменить вы их меняете постоянно делаете
27:34
новые коммиты Чтобы не терять изменений оперативно развивать эту фичу но еще не
27:39
закончили работу вы еще в процессе поэтому вы бы не хотели чтобы
27:44
сомнения прямо сейчас попадали в общий репозитории потому что тогда другие люди получат к ним доступ они не окончены что
27:52
если вы там что-то поломали и тогда у других людей которые скачают этот удаленный репозиторий с общими
27:58
изменениями тоже их файлы будут возможно нестабильными приложения над которым вы
28:04
Вместе работаете сломается и у них потому что у вас есть бак в неоконченной фиче поэтому такую разработку совершенно
28:11
отдельной фичи очень удобно вести изолированно от ваших стабильных коммитов Чтобы другие люди могли тоже
28:18
работать с этим репозиторием совершенно независимо от вас именно это и позволяет сделать ветки Когда вы создаете ветку в
28:26
Гид то вы как бы отпочковываетесь от какой-то существующей последовательности комитов
28:31
совершенно новую отдельную изолированную с каким-то особым именем И именно
28:38
поэтому это и называется ветками то есть если вы их много создаете друг от друга то у вас визуально получится архитектура
28:45
очень сильно напоминающая дерево и каждая последовательность коммитов там отдельная это как раз ветка такого
28:51
дерева Давайте теперь посмотрим как именно работать с ветками в Гид и что
28:57
они вообще позволяют сделать во-первых в нашем локальном репозитории Мы сначала можем посмотреть какие ветки У нас есть
29:04
прямо сейчас для этого выполним команду Get brange Это команда покажет нам
29:11
список всех веток доступных прямо сейчас в нашем локальном репистории и сейчас у
29:18
нас здесь всего одна ветка это мастер та самая единственная самая главная редко
29:24
которая всегда есть в любом репозитории звездочка отмечена в этом списке ветка
29:31
на которой мы находимся прямо сейчас мы на Мастере чтобы нам создать новую ветку из ветки мастер достаточно выполнить
29:39
команду и после нее передать имя новой ветки
29:45
которую мы хотим создать имя может быть любым совершенно но Я рекомендую
29:50
называть ветки сообразно тем изменениям что в них будут содержаться Теперь если
29:56
мы снова получим список веток то Увидим что у нас их теперь две но находимся мы
30:03
пока все еще на ветке мастер потому что не переключались на новую просто создали
30:10
ее чтобы переключиться на новую ветку нужно выполнить команду все тот же и после неё передать уже не
30:18
комит А имя ветки на которую мы хотим перейти А теперь если снова посмотрим на
30:24
список веток то звездочка показывает нам что мы действительно уже переключились
30:31
когда мы создаем новую ветку то по умолчанию она создается на основе последнего коммита той ветки на которой
30:38
мы находились в момент создания таким образом прямо сейчас файлы ветки Мастер
30:45
и в нашей новой ветке абсолютно идентичны потому что новая в общем-то и
30:51
была создана на основе мастера но теперь если мы находясь в новой ветке изменим
30:57
наш файл readme и по старой схеме сделаем коммит наших изменений то этот
31:04
коммит будет сделан именно в этой ветке изменений они в Мастере что это вам дает
31:11
Теперь если я хочу переключиться на стабильную версию изменений в Мастере то
31:16
мне достаточно просто вернуться на ветку Мастер и все мои файлы автоматически
31:23
будут соответствовать последнему канику именно в Мастере делаем Deep Check Out
31:28
Master и в общем-то видим что ридный файл снова в начальном состоянии Откуда мы пришли а
31:36
теперь если мы захотим снова вернуться на вторую ветку и продолжить
31:41
неоконченную работу то просто делаем чекал на неё и обнаруживаем наш файл в
31:48
том состоянии где Боевая оставили Таким образом разные
31:53
разработчики могут работать в своих собственных разных отдельных совершенно ветках не мешая друг другу если кому-то
32:01
нужна стабильная версия то он просто берет мастер а вся работа ведется в
32:07
отдельных ветках которые затем могут оказаться в Мастере Когда будут доведены
32:12
до конца также Обратите внимание что прямо сейчас наша новая ветка является
32:17
локальной То есть она существует в нашем локальном репозитории но еще нет в
32:25
удаленном Так что другие разработчики не смогут ее пока увидеть чтобы опубликовать вашу новую ветку достаточно
32:32
снова выполнить команду [аплодисменты] находясь в локальной ветке которую вы
32:40
хотите опубликовать но последним параметром указать уже не ветку мастер А
32:45
то имя ветки которое вы хотите дать новой удаленной ветки на гитхабе в
32:51
которую загрузите теперь вашу локальную обычно называют точно так же как она
32:56
названа у вас и локально чтобы то же самое появилось на гитхабе запускаем в
33:01
этот момент коммиты из вашей локальной ветки также как и раньше публикуются в
33:07
удаленном репозитории но теперь и другие участники команды могут видеть вашу
33:12
ветку и переключаться между ею и мастером также как и вы если сделают в
33:19
общем-то теперь Представьте такую ситуацию что вы работали вот над этой большой фичей В отдельной ветке делали
Слияние
33:26
коммиты очень долгое время и наконец довели эту фичу До ума от тестировали
33:31
считать что она полностью стабильна соответственно хотите теперь перевести все ваши изменения из ветки для
33:38
разработки в основную ветку Мастер чтобы все получили к ним доступ То есть вы
33:44
хотите изменения всех файлов вашей рабочей ветки перенести по-быстрому вашу основную ветку из соединить их там со
33:52
всеми прочими изменениями из других веток которые другие разработчики тоже объединяют мастер и такая процедура в
33:59
гите называется слияние веток и есть два механизма для выполнения того что вы
34:06
хотите сделать первый механизм это и есть непосредственно слияние у нас все
34:13
еще есть ветка с нашими комитами И мы хотим перенести ее состояние ветку
34:21
мастер Для этого нам сначала нужно сделать чекал на ту ветку в которую мы будем
34:28
делать а затем выполнить команду gitmerage с
34:35
именем ветки из которой мы будем проводить слияние в этот момент гид
34:41
берет Все изменения из переданной ветки и добавляет все их ветку мастер в виде
34:48
всего одного нового комита Но берет вообще все что было в той ветке которую
34:54
мы можем убедиться в этом легко в общем-то достаточно выполнить теперь из Мастера команду git Lock и увидеть что
35:01
сначала идут пара наших старых коммитов А здесь вот появляется новый где и
35:07
написано что произошел в общем-то мерж также если мы находясь на ветке мастер
35:14
взглянем на состояние нашего файла то Увидим что оно ровно совпадает с тем что
35:21
мы до этого видели в нашей второй ветке То есть все эти изменения теперь попали в Мастер и существуют в виде одного
35:28
нового Коми та здесь опять же важно заметить что все это происходит в вашем
35:34
локальном репозитории Если вы хотите опубликовать результат мешал то нужно
35:39
сделать Push мастера в удаленной репетиторе но есть еще второй механизм
35:45
переноса изменений из одной ветки в другую Давайте вернемся на нашу вторую
35:50
ветку и сделаем в ней пару новых изменений файле redmi а затем еще сделаем пару
35:58
дополнительных коммитов Давайте глянем теперь в Get lock
36:04
и убедимся в общем-то что там действительно есть такие новые кометы
36:09
которые мы только что сделали вот они соответствующими сообщениями теперь предположим что мы снова хотим затащить
36:18
эти уже изменения тоже ветку мастер Но помните что мерж по факту создает в
36:25
Мастере просто один новый комит в котором лежат все изменения из второй ветки которую мы жили Ну что если я хочу
36:33
поддержать историю изменений и перевести вообще все коммиты из второй ветки в
36:38
мастера не просто там сделать какой-то один новый КАМиТ для этого я могу использовать команду
36:45
вместо команды процедура там такая же как и с миржом
36:50
переключаемся на ту ветку куда будем делать rebase а потом запускаем эту
36:56
команду указывая из какой ветки будем переносить кометы в нашу теперь находясь
37:02
ветки мастер смотрим гитлок в общем-то Как видите оба комита из нашей второй
37:09
ветки теперь находятся здесь вместе со своими сообщениями таким образом Если
37:15
для вас важна история коммитов вашей ветки то рибез лучше в этом плане Вы
37:22
можете выбрать для себя более удобный какой-то механизм оба из них рабочие Я
37:28
например использую обычно Если для вас это был супер ценный разбор то Поставьте пожалуйста лайк этому видео Я
37:35
обязательно сделаю еще один видос со всеми вот этими анимациями и совсем вот этим крутым форматом со скринкастами со
37:41
всем-всем про всякие Advance техники в Гид типа черепиков а также расскажу о
37:46
том как решать конфликты что очень-очень больная тема для начинающих Я надеюсь
Заключение
37:52
что это видео было очень ценным для вас дорогие друзья будет здорово если подпишитесь на канал оставите коммент
37:58
поставите лайк что угодно это правда очень сильно помогает также Приходите в мои Telegram
38:04
Instagram где я рассказываю огромное количество уникальных совершенно истории а моей работе в uber в жизни в
38:11
Амстердаме А других людях теперь в общем очень много интересного контента обязательно Приходите Спасибо вам и
38:19
увидимся [музыка]