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

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

Открыта

— Сегодня я расскажу тебе о двух самых популярных программах контроля версий – 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 учим, если ты не забыл. А все остальное – сам. Или тебе голова дана только для того, чтобы ею пить?

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

Комментарии (80)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
mgg
Уровень 47
13 июля 2023, 23:08
Когда говорим про системы контроля версий нельзя не сказать про методики работы с ними Gitflow
Алексей С
Уровень 33
7 июля 2023, 23:51
То чувство когда уже залил на гитхаб 13 репозиториев)
КамушекJava Developer в Иннотех
3 января 2024, 09:51
А я просто какой-то роболох...
SomeBody098веник в бане
14 октября 2024, 11:14
и я, не переживай XD
Deniel Java Developer
8 января 2023, 13:59
Ребят, а обязательно ли уметь прям полностью работать с GitBash, с консолью? Зачем она вообще, если всё можно почти сделать через Idea? Обязательно ли знать все эти команды с данного сайта. Я просто не понимаю, остановиться ли мне на этом поподробнее или нет...
Edward Northwind
Уровень 37
18 января 2023, 18:30
Крайне желательно понимать что и как делается, чтобы это не было какой-то магией. Ведь когда ты столкнешься с проблемами, ты уже будешь понимать как действовать.
Кристина
Уровень 29
14 февраля 2023, 12:13
стоит знать основные команды хотя бы. это совсем несложно
Наиль Гафиятов Enterprise Java Developer
14 апреля 2022, 14:11
Своевременная подача материала) Я уже на 20 уровне игры пушил в Git)
LuneFoxJava Developer в BIFITExpert
28 января 2022, 13:01
Писал (а точнее, дописывал) игры здесь на джавараше только с гитом, постоянно пуша изменения на гитхаб. Потому что писать приходилось с разных устройств, да и откатывался после всякой неудачной лабуды тоже нередко (движок не принимает половины стандартных библиотек, приходилось извращаться). Гит - невероятно удобная штука, даже если работаешь один.
KesЧайник в Банк
26 ноября 2021, 04:58
А ты такой: – А я тут гит пробую установить, но у меня еще ничего не получилось. Вы ведь меня не уволите, правда? Или ты можешь еще днем подойти к тимлиду и сказать: Установил гит, вытащил проект, порылся в документации, но там сотни файлов и пока что не все понятно. Где актуальная инструкция по сборке? Чувствуешь разницу? Разница есть. Быть уволенным после второй фразы чуть круче.
Anemon
Уровень 13
Expert
14 марта 2025, 21:26
Интересно, куда это ты пошел работать, что там за базовый вопрос сразу увольняют?
Kamoliddin
Уровень 41
27 октября 2021, 10:26
Edil Kalmamatov
Уровень 35
24 сентября 2021, 09:06
Под Windows использую GitExtensions
mgg
Уровень 47
13 июля 2023, 22:59
+1
Pig ManГлавная свинья в Свинарнике
9 февраля 2021, 20:30
"Мы тут Java учим, если ты не забыл. А все остальное – сам" - а теперь вспомним то, как нас с темами по java уже сотни раз точно так же отсылали поискать что-нибудь в интернете
Ars
Уровень 41
22 ноября 2021, 10:37
А ещё рассказывали про JS, Pascal которые тоже не Java
Андрей
Уровень 41
18 декабря 2020, 21:37
Может я ошибаюсь, но на мой взгляд, вместо того, чтобы резко лезть в консоль и учить 50 уроков по разным функциям гита, часть из которых возможно не понадобятся вообще либо понадобятся точно не скоро, проще было сделать 2 вещи: 1) завести аккаунт на гите (сложного в этом не вижу ничего, поэтому это можно считать пунктом 0, факультативным. 2) научиться делать загрузку и выгрузку изменений в гит из идеи, через GUI, а не консольными командами. Раз уж мы всё равно работаем в идее. Для начала - этого достаточно.
hidden #2729207
Уровень 47
4 сентября 2021, 09:37
Консольные команды позволяют полностью понять как и что работает в git, но возможно вы и правы. До момента пока сам настроил IDEA для работы со своими репозиториями на gutHUB убил день на изучение курсов по git и команд. И не пожалел.