JavaRush /Курсы /Java Collections /Коммиты и ветки

Коммиты и ветки

Java Collections
5 уровень , 2 лекция
Открыта

— Сегодня я расскажу тебе о двух самых популярных программах контроля версий – SVN и Git.

SVN работает примерно по той схеме, о которой я рассказывал на прошлой лекции. Git, работает немного сложнее, и на нем я собираюсь остановиться поподробнее.

— А можно мне каких-нибудь ссылок на документацию про SVN и про Git?

— Конечно, держи.

http://svnbook.red-bean.com/nightly/ru/svn-book.html

http://githowto.com/ru (это просто шедевр)

Итак — Git.

Принцип работы гита немного сложнее, чем SVN. Гит предлагает, чтобы кроме репозитория на сервере, у каждого пользователя был еще один репозиторий – локальный.

— А куда тогда комититься?

— Комитится пользователь всегда в свой локальный репозиторий.

— А серверный репозиторий?

— Для синхронизации локального и серверного репозитория есть специальные команды – Pull (вытащить) и Push (поместить/затолкнуть)

В этом есть смысл. Иногда программисту надо сделать очень большую работу на своем участке, которая может содержать несколько сотен коммитов, прежде чем ее можно добавить в общий репозиторий.

В SVN для этого пришлось бы заводить отдельную ветку, а затем мерджить ее с trunk’ом.

Гит просто предлагает всегда комититься в локальный репозиторий, а когда работа сделана, то переслать все изменения скопом в центральный репозиторий на сервер.

Такая работа кажется избыточной, пока ты пишешь мало кода, но когда время на выполнение задач вырастет до недель, ты поймешь, что просто не можешь все это время что-то писать и не комититься.

— А почему нельзя просто две недели делать свою работу, а потом закомититься один раз на сервер?

— Дело в том, что программа контроля версий предлагает очень много удобств.

Представь, что ты комитишься каждый день, и на 10-й день обнаружил, что то, что ты делал два последних дня, не будет работать, так как задумано. И ты бы хотел вернуться к коду 8-го дня и попробовать сделать задачу другим образом.

Тогда ты просто откатываешь (rollback) изменения в локальном репозитории за два последних дня и возвращаешься к нужному тебе состоянию кода.

— Т.е. и так можно делать?

— Ага. Более того, ты благодаря сохранению истории коммитов ты можешь узнать, кто, когда и зачем что-то коммитил, в рамках какой фичи/баги велась работа и какие десять файлов были изменены одновременно в рамках этой работы.

Допустим кто-то «фиксил багу» и поломал чужой функционал. Ты можешь просто откатить(rollback) его код и работать дальше, как будто его и не было.

— Ладно, это круто, убедил. А можно пару примеров, как все это работает?

— Конечно.

Клонирование (clone) центрального репозитория к себе на локальный компьютер:

Коммиты и ветки - 1

— Т.е. операция Checkout больше не нужна.

— Ага. А вот примеры операций Push:

Коммиты и ветки - 2

И Pull:

Коммиты и ветки - 3

— Ага. Более-менее ясно.

— Кстати, есть крутой сервис, называется GitHub.

Любой программист может там зарегистрироваться и создавать свои Git-репозитории. Советую тебе познакомиться с ним поближе.

Вот тебе пара полезных ссылок:

http://habrahabr.ru/post/125799/

http://githowto.com/ru

http://webhamster.ru/site/page/index/articles/comp/171

На заметку, под гит существует довольно много «клиентов».

Во-первых – это GitBash – где можно вводить команды текстом

Во-вторых – это TortoiseGit – хорошая программа, которая встраивается в проводник Windows и позволяет работать с файлами в Git-репозитории прямо из проводника.

Intellij IDEA имеет поддержку Git, и все сложные команды можно делать прямо из нее в пару кликов.

— И что мне учить?

— Рекомендую разобраться со всем этим.

Вот, пройдешь ты собеседование, придешь на работу. Тебе скинут ссылку на гит, твои логин и пароль и все. Дальше ты сам.

— Что сам?

— Сам ставишь гит, вытаскиваешь себе копию репозитория,…

Затем ты должен собрать и попробовать запустить проект.

А инструкция по сборке скорее всего тоже в Git’е (в Git-репозитории), как и документация по проекту.

К тебе подойдет твой тимлид вечером и скажет: — Ну что, с чем уже разобрался?

А ты такой: – А я тут гит пробую установить, но у меня еще ничего не получилось. Вы ведь меня не уволите, правда?

Или ты можешь еще днем подойти к тимлиду и сказать: — Установил гит, вытащил проект, порылся в документации, но там сотни файлов и пока что не все понятно. Где актуальная инструкция по сборке?

Чувствуешь разницу?

— Ага. Во втором случае я такой крутой программист и все дела, а в первом какой-то роболох, который не умеет даже проект из гита вытащить. Т.е. облажался еще до того, как дело дошло до программирования. Меня, небось, после этого и программировать-то не допустят.

— Вот ты сам и ответил на свои вопросы. Так что учи, разбирайся. Никто за тебя это не сделает.

— А ты мне не поможешь?

— Уже помог. Мы тут Java учим, если ты не забыл. А все остальное – сам. Или тебе голова дана только для того, чтобы ею пить?

— Ладно, я все понял. Спасибо, Билаабо!

Комментарии (81)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
mgg Уровень 47
13 июля 2023
Когда говорим про системы контроля версий нельзя не сказать про методики работы с ними Gitflow
Алексей С Уровень 33
7 июля 2023
То чувство когда уже залил на гитхаб 13 репозиториев)
Камушек Уровень 36
3 января 2024
А я просто какой-то роболох...
SomeBody098 Уровень 51
14 октября 2024
и я, не переживай XD
Deniel Уровень 42
8 января 2023
Ребят, а обязательно ли уметь прям полностью работать с GitBash, с консолью? Зачем она вообще, если всё можно почти сделать через Idea? Обязательно ли знать все эти команды с данного сайта. Я просто не понимаю, остановиться ли мне на этом поподробнее или нет...
Edward Northwind Уровень 37
18 января 2023
Крайне желательно понимать что и как делается, чтобы это не было какой-то магией. Ведь когда ты столкнешься с проблемами, ты уже будешь понимать как действовать.
Кристина Уровень 29
14 февраля 2023
стоит знать основные команды хотя бы. это совсем несложно
Наиль Гафиятов Уровень 49
14 апреля 2022
Своевременная подача материала) Я уже на 20 уровне игры пушил в Git)
LuneFox Уровень 41 Expert
28 января 2022
Писал (а точнее, дописывал) игры здесь на джавараше только с гитом, постоянно пуша изменения на гитхаб. Потому что писать приходилось с разных устройств, да и откатывался после всякой неудачной лабуды тоже нередко (движок не принимает половины стандартных библиотек, приходилось извращаться). Гит - невероятно удобная штука, даже если работаешь один.
Kes Уровень 41
26 ноября 2021
А ты такой: – А я тут гит пробую установить, но у меня еще ничего не получилось. Вы ведь меня не уволите, правда? Или ты можешь еще днем подойти к тимлиду и сказать: Установил гит, вытащил проект, порылся в документации, но там сотни файлов и пока что не все понятно. Где актуальная инструкция по сборке? Чувствуешь разницу? Разница есть. Быть уволенным после второй фразы чуть круче.
Anemon Уровень 13 Expert
14 марта 2025
Интересно, куда это ты пошел работать, что там за базовый вопрос сразу увольняют?
Kamoliddin Уровень 41
27 октября 2021
Edil Kalmamatov Уровень 35
24 сентября 2021
Под Windows использую GitExtensions
mgg Уровень 47
13 июля 2023
+1
hidden #2729207 Уровень 47
4 сентября 2021
Прошелся по курсу Алишева про Git и параллельно все команды отработал по нему, если кому пригодиться вот ссылка на основные команды (хотя конечно удобней в IDEA все делать сразу). https://yadi.sk/i/QhPF3i55Jone0Q
Pig Man Уровень 41
9 февраля 2021
"Мы тут Java учим, если ты не забыл. А все остальное – сам" - а теперь вспомним то, как нас с темами по java уже сотни раз точно так же отсылали поискать что-нибудь в интернете
Ars Уровень 41
22 ноября 2021
А ещё рассказывали про JS, Pascal которые тоже не Java