ПИШЕМ, ОБСУЖДАЕМ, ПЕРЕЖИВАЕМ...

Работа с Git – применять или нет
27 Марта 2016

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

   Git — это программа для контроля версий программ. В этой статье будет дан краткий обзор программы. Git написан Линусом Торвальдсом, автором Linux. Программа относится к классу программ контроля версий. Как и такие программы, как SVN (Subversion) , CVS. Можно встреть в интернете мнение, что git сложнее, чем SVN, здесь: кому-как.

   К примеру, чтобы что-то делать с проектом в SVN, надо часто использовать команды из командной строки на любое удаление или добавление файла - с git проще, вы просто работаете с файлами любыми средствами, а после с помощью нескольких команд можно увидеть изменения и выполнить сразу добавление или удаление файлов пакетами.

Но для начала нужно понять, зачем вообще нужна эта программа.

   Для программиста-одиночки можно выделить ряд преимуществ работы с git:

- В одном репозитарии (одна папка) у вас хранится сразу вся история проекта с разными версиями, можно создавать экспериментальные ветки, в случае успешного кода их затем объединять в стабильные ветки. Так же возможно легко переходить в «прошлое»: быстро устранить баг в стабильной версии, а потом продолжать работать в экспериментальной альфа-версии.

- Легко просматривать, что вы изменили вчера и сейчас: удобно, смотреть утром на работе, когда нужно вспомнить, на чем остановились вчера.

- Еще git - удобное средство резервирования и синхронизации: можно разместить репозитарий на сервере, и с него подтягивать дома рабочие файлы, которые делали на работе,  а после правок заливать изменения обратно.

- В git каждый клонированный репозитарий не только рабочая площадка, но и полноценный репозитарий. Если вы работали на ноутбуке, а сегодня сервер с репозитарием недоступен, то ваша локальная версия на ноутбуке - репозитарий со всей «историей».

- Для git не обязательно постоянно быть в сети, достаточно «подтянуть» с сервера изменения, если были, и отключить ноутбук от интернета. Все, можно работать как удобно и как нужно: делайте коммиты, пишите и просматривайте, что вы изменили. Только лишь, когда вы захотите «сбросить» все изменения в ваш главный репозитарий, тогда вам нужна сеть.

   Если же вы команда, то преимущества те же, что выше, плюсом к ним добавляется возможность легкого ведения группового проекта. Яркий пример — ядро Linux, именно оно ведется Git-ом, и даже единичное увеличение подверсии ядра включает в себя большое количество commit-ов и работу большого количества программистов.


Что нужно четко понимать в git?


   Отличительная идеология git от многих других программ контроля версий: наличие index.

   Index — «промежуточный слой» между вашим рабочим файловым деревом, и тем, что должно быть добавлено в репозитарий. В репозитарий добавляется только то, что есть в индексе, а в индекс вы добавляете из рабочего дерева то, что необходимо добавить затем в репозитарий. Для некоторых по началу это может показаться запутанным и непонятным, но в процессе работы все встает на свои места.

   Ветвление — одна из свойств git. Ветвить можно не просто разные версии программ, но и по «мелочи». Допустим: вы хотите добавить новую фичу в программу. Если вы начнете работать на текущей стабильной версии, вы рискуете создать ситуацию, когда в рабочей версии будет найден баг, вам надо будет быстро его исправить, а вы не закончили и не отладили проект с вашей новой фичей. В итоге может возникнуть неожиданная ситуацию. Как поступаем: создаем подветку, делаем свою новую фичу. Если необходимо, можно быстро переключаться между ветками. Ветвление в git —процесс не ресурсоемкий, им удобно пользоваться и даже нужно.

   Также, при групповой работе надо знать, что git не локирует файлы на время редактирования кем-либо: один и тот же файл могут править несколько программистов. Принцип тут такой — если изменения происходили в «далеких» местах друг от друга в файле, git их объединит автоматически, если же нет — будет создан конфликт, требующий ручного исправления.

Заключение

   Как и в любой программе, в git нужно научиться разбираться для эффективной работы с ней. Он, конечно, не додумает за программиста программный код, когда вы объединяете две ветки в одну с разным кодом в одном месте. Однако может сделать работу максимально правильно, упростив жизнь целой команде.