Git — это очень популярная система контроля версий и совместной разработки проектов с открытым исходным кодом. С помощью Git вы можете отслеживать изменения в исходном коде своих проектов, возвращать предыдущие версии в случае критических ошибок, а также делиться своим кодом со всеми желающими и принимать от них исправления.
Это мощная система, которая позволяет оптимизировать работу над вашими проектами. Здесь нет каких-либо требований к языку или структуре файлов, поэтому у разработчиков полная свобода действий. В этой статье мы рассмотрим как пользоваться git для начинающих пользователей. Рассмотрим все очень подробно, начиная от настройки, и до ветвей проектов.
Команда git
Уже по традиции, перед тем, как перейти к примерам и работе с командой давайте рассмотрим ее основные опции и параметры. Синтаксис git очень прост:
$ git опции команда аргументы
Сначала рассмотрим опции, они влияют на работу всей утилиты:
- -C — использовать указанную папку репозитория вместо текущей папки;
- -cпараметр=значение — использовать указанное значение параметра конфигурации;
- -p — прокручивать весь вывод с помощью less;
Теперь рассмотрим команды git, их немного больше и именно с помощью них вы будете выполнять все основные действия:
Что такое Git?
- add — добавить файл или папку в репозиторий git;
- am — применить все патчи из email;
- archive — создать архив файлов;
- bisect — использовать бинарный поиск для поиска нужного коммита;
- branch — управление ветками проекта;
- bundle — перемещение объектов и ссылок в архиве;
- checkout — переключение между ветками;
- cherry-pick — внести изменения в уже существующие коммиты;
- clean — удалить все неотслеживаемые файлы и папки проекта;
- clone — создать копию удаленного репозитория в папку;
- commit — сохранить изменения в репозиторий;
- diff — посмотреть изменения между коммитами;
- fetch — скачать удаленный репозиторий;
- init — создать репозиторий;
- merge — объединить две ветви;
- pull — интегрировать удаленный репозиторий с локальным;
- push — отправить изменения в удаленный репозиторий;
- tag — управление тегами;
- worktree — управление деревями разработки.
Аргументы зависят от используемой команды, поэтому более подробно мы будем разбирать их в примерах.
Как работает git?
Перед тем как идти дальше и рассматривать использование git для управления своими проектами, я бы хотел сказать несколько слов о том, как же работает эта технология, так сказать, основы работы git.
Итак, из всего выше перечисленного, вы, наверное, уже поняли, что контроль версий позволяет вам посмотреть изменения на любом этапе разработки, а также вернуться к любому моменту. Но это не совсем так. Изменения сохраняются в виде коммитов. По-русски — фиксация. Вы делаете начальный коммит, чтобы сохранить начальное состояние проекта, а затем для каждого изменения.
Что такое Git за 8 минут: Объясняем на пальцах
Это работает как снимки состояния.
Кроме того, git позволяет отправлять данные на удаленный сервер. Отправляются не только готовая версия, но и все снимки, таким образом, любой человек из команды может посмотреть историю изменений. К каждому снимку нужно делать комментарий, так работа с git будет проще и понятнее.
Как пользоваться Git?
Дальше я буду предполагать, что вы выполнили установку и базовую настройку git. Кроме установки, вам нужно указать правильный адрес электронной почты и имя пользователя для доступа к серверу Git, например, на GitHub. Если вы этого еще не сделали смотрите инструкцию установка Git в Ubuntu 16.04.
Обычно, структура проекта в Git будет зависеть от масштаба и сложности вашей программы. Но для начала мы будем использовать проект, состоящий только из одной ветви. Каждый проект содержит одну ветку по умолчанию, она называется master. Наш первый проект будет называться test.
Создание проекта
Когда настройка git завершена перейдем к вашему проекту. В самом начале вам достаточно создать папку для файлов проекта. Если вы собираетесь работать над несколькими проектами, создайте папку git в вашем домашнем каталоге, а уже туда поместите папки ваших проектов:
mkdir -p ~/git/testing ; cd ~/git/testing
Эта команда создаст нужную структуру папок и переводит текущий каталог в только что созданный. Теперь создадим первый файл нашего проекта:
Проект готов, но система контроля версий git еще не знает об этом.
Настройка проекта в git
Перед тем как git начнет отслеживать изменения, нужно подготовить все необходимые конфигурационные файлы. Сначала инициализируем пустой репозиторий в нашей папке:
После того как репозиторий будет создан, вам нужно добавить свои файлы в него. Каждый файл нужно добавлять отдельно или сказать утилите, что необходимо добавить все файлы явно. Пока вы не добавите файл сам он не будет отслеживаться. Новые файлы в будущем тоже нужно добавлять, они не добавляются автоматически. Сначала добавим текущую папку:
Если все прошло хорошо, то команда ничего не выведет.
Фиксация изменений
Изменения тоже автоматически не отслеживаются. Фиксация изменений выполняется с помощью команды commit. Вам нужно указать что было изменено с помощью небольшого комментария, буквально в несколько предложений. Хорошая практика выполнять фиксацию перед каждым серьезным изменением.
Таким образом, вы будете хранить все версии проекта, от самой первой и до текущей, а также сможете знать что, когда и где было изменено. Чтобы создать свой первый коммит выполните:
git commit -m «Initial Commit» -a
Команде необходимо передать два параметра, первый — это -m, ваш комментарий, второй -a, означает, что нужно применить действие ко всем измененным файлам. Для первого раза используется этот параметр, но обычно вам нужно указать измененные файлы или каталоги. Например, можно делать так:
git commit -m «Changed file» file
Отправка изменений
До этого момента мы делали все в локальном репозитории. Вы можете использовать git локально, если нужен только контроль версий, но иногда нужно обменяться информацией с другими разработчиками и отправить данные в удаленный репозиторий.
Сначала нужно добавить удаленный репозиторий с помощью команды remote. Для этого нужно передать ей URL:
git remote add origin https://github.com/Seriyyy95/testing.git
Затем можно посмотреть список удаленных репозиториев:
Вы можете использовать не только github сервера, но и любые другие. Теперь для отправки ваших изменений используйте такую команду:
git push origin master
Команда push указывает, что нужно отправить данные в удаленный репозиторий, origin — наш настроенный репозиторий, а master — ветвь.
Управление ветвями
Для простых проектов достаточно одной ветви. Но если проект большой и он имеет несколько версий, в том числе тестовую, то может понадобиться создать для каждой из них отдельную ветвь. Сначала смотрим доступные ветви:
Опция -a указывает что нужно вывести все ветви, даже не синхронизированные. Звездочка указывает на активную ветвь. Теперь создадим ветвь для разработки с помощью команды checkout:
git checkout -b develop
Переключаться между ветвями можно тоже с помощью той же команды:
git checkout master
$ git checkout develop
Теперь создадим еще один файл:
И добавим его в нашу новую ветвь develop:
git add develop
Сделаем коммит для внесенных изменений:
git commit -m «develop file» develop
Дальше проверим существует ли этот файл в основной ветке master или только в дополнительной. Смотрим текущую ветку:
Затем переключаемся на ветку master и снова смотрим:
git checkout master
$ git branch
$ ls
Здесь файла нет, так и должно быть. В git есть такая полезная вещь, как слияние. С помощью нее вы можете объединить две ветви. Например, переместить код из рабочей ветки в стабильную. Для этого достаточно выполнить команду merge:
git merge develop —no-ff
Перед тем как будет выполнено слияние вам нужно ввести комментарий, зачем это нужно. Затем если вы еще раз выполните ls, то увидите, что здесь уже есть нужный файл. Наши примеры git подошли к концу.
Выводы
В этой статье мы рассмотрели как пользоваться git для управления версиями своих проектов. Это только самая основная информация, и система контроля версий git может еще очень многое, но рассмотрение его дополнительных возможностей выходит за рамки данной статьи. Надеюсь, эта статья была вам полезной.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Источник: losst.pro
Мальчик заливает на FTP, мужчина поднимает Git
Зачем нужен контроль версий и что делать, если ваши друзья его используют.
Контроль версий — мегаполезная вещь, когда речь идёт о программировании в команде. Сегодня покажем, что это и как примерно пользоваться.
Зачем нужна система контроля версий
Допустим, у нас есть программист Вася, который пишет весь код у себя на компьютере. Вася — продвинутый программист, поэтому перед каждым большим изменением делает полную резервную копию всего кода. Так он не боится что-то поломать: всегда можно откатиться на предыдущую версию. Резервные копии он хранит на отдельной флешке. Если сгорит компьютер, флешка останется.
Скоро Вася понимает, что следить за изменениями в коде сложно: он не помнит, что менялось от версии к версии. Вася записывает изменения в блокнот, но это скоро перестаёт работать: блокнот не видит конкретные куски программы и не может показать, в каких конкретно местах что поменялось.
Через пару месяцев с блокнотом Вася понимает: надо что-то менять. Он идёт в интернет и читает статью про системы контроля версий (СКВ).
Что это такое
Системы контроля версий — это штуки, которые помогают разработчикам ориентироваться в коде и находить отслеживать изменения. СКВ могут вернуть нужные файлы в исходное состояние или показать вам только те изменения, которые вы сделали за определённое время.
Примерный сценарий: в прошлую пятницу Вася напился и ночью кодил пьяным. Утром в субботу пришли его друзья, он показал им свой код, и один из тимлидов сел переписывать его систему запросов к базе данных. Потом в воскресенье у него было свидание с девушкой, и она показала ему, что можно использовать другой обработчик ошибок.
В понедельник Вася понял, что не всё из того, что произошло на выходных, должно остаться в итоговом коде. Он открывает СКВ и видит все изменения, разложенные по времени, с подсветкой:
«Ага, тут я кодил пьяным. Вот место, которое я переписал. Нормально. Надо только поменять названия переменных».
«Это мои друзья кодили. Сносим всё, чертовы пижоны».
«А новый обработчик ошибок хорош. Возьму этот код в другие проекты».
СКВ прямо показывает: «Тогда-то было сделано такое-то изменение, вот, посмотри».
Как реализована
Сейчас есть три принципиальных модели реализации СКВ: локальная, централизованная и распределенная.
Самая простая реализация СКВ — локальная. Это значит, что все изменения и резервные копии хранятся у вас на компьютере в специальной базе данных. Вы не зависите от интернета, полностью контролируете код и можете разрабатывать секретные вещи.
СКВ посложнее — централизованная. Их придумали, чтобы несколько программистов могли работать над одним проектом не мешая друг другу. Такая система контроля версий состоит из сервера, на котором находится репозиторий, и рабочих станций, которые подключаются к серверу для работы над файлами. Репозиторий — это место, где хранятся все нужные файлы, проще говоря — папка со всеми рабочими файлами по проекту.
Когда над одним файлом или модулем работают несколько программистов, сервер смотрит, какие изменения вносит каждый программист, и если они делают разные вещи в одном и том же месте — выдаёт сообщение или блокирует работу одного из них. Типа: «Вы исправляете один и тот же кусок кода, окститесь».
Можно сделать так, что каждый скачивает себе рабочую копию всего репозитория, работает в нём, а в конце дня отправляет его обратно на сервер. Сервер смотрит, можно ли объединить эти файлы без ошибок, и если нет — показывает конфликтные места, где два программиста написали в одном месте разный код.
С такой организацией уже можно работать командой над одним проектом, но в ней есть одно слабое место — сервер. Если он выйдет из строя, команда потеряет проект.
Распределённые СКВ решают эти проблемы так: каждый разработчик получает не просто несколько нужных для работы файлов, а весь репозиторий целиком. Если сервер выйдет из строя, он просто возьмёт полный репозиторий у любого программиста и скачает его себе. Точно так же и с остальными членами команды — если что-то пошло не так, всегда можно взять актуальные файлы у других.
Совместная работа тоже стала проще: все программисты работают над своим кодом, а потом отправляют изменения на сервер. Но они не попадают сразу в репозиторий, а ждут одобрения главного разработчика или ответственного за продукт. Если он одобряет запрос на добавление кода — этот код становится частью репозитория и сразу доступен для скачивания другими участниками. Таких запросов на добавление может быть много, поэтому нужно постоянно проверять, что же именно делает новый код и нужно ли его добавлять в проект.
Причем тут Git
Git — это очень популярная система контроля версий. Её придумал в 2005 году Линус Торвальдс, разработчик ядра Linux, чтобы вместе с товарищами работать над новой операционной системой.
Основное преимущество Git — скорость работы, простота и работа с большими проектами. В отличие от других систем контроля версий, Git не записывает изменения к каждому файлу, а как бы фотографирует весь проект целиком.
Сам по себе Git — это инструмент для командной строки, у него нет графического интерфейса. Но у него довольно много приложений с графическим интерфейсом, и в них всё бывает довольно красиво. На сайте Git есть ссылки на популярные клиенты:
Не путать с GitHub — это онлайн-сервис, который основан на технологии Git. Он хранит репозитории в интернете, автоматически синхронизирует их с репозиториями у разработчиков, следит за обновлениями кода, позволяет редактировать код прямо в репозитории и копировать себе чужие репозитории. Ещё там есть встроенный трекер задач, система уведомлений, форум, переписка между пользователями и комментариями. А всё потому, что GitHub задумывался как социальная сеть для программистов.
Даже высокооплачиваемые менеджеры ходят в GIT
Если у вас в планах карьера в ИТ, заходите на огонек. Курсы, практика и поддержка от наставников, всё сделано заботливыми руками людей из Яндекса.
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Источник: thecode.media
Что такое GIT
GIT (читается как «гит») — это бесплатная программа, которую создал тот же человек, что придумал Linux — Линус Торвальд.
Конкретнее, GIT — это «система контроля версий». Так что же такое «система контроля версий»? Давайте посмотрим на примере.
Представим, что мы работаем в текстовом редакторе:
Допустим — о ужас! — Вы только что случайно удалили целую главу документа, над которой Вы работали целую неделю. Но не беда — Вы можете в любой момент отменить свое последнее действие, и вот, ничего не пропало!
Тем не менее, если Вы случайно удалите весь файл, или захотите вернуться к версии документа «на 6.09.20ХХ», у Вас ничего не выйдет. Почему? Потому что обычно текстовые редакторы хранят только изменения, сделанные в промежутке времени после того, как вы открыли документ, и до того как Вы его не закроете.
Но если для курсовой это может быть не так критично, то для разработки программного обеспечения это куда более важная проблема. Например, Вы работаете в Facebook — а им ежедневно пользуются миллионы людей. И вот были внесены какие-то правки, и через час половина пользователей не может получить доступ к своим учетным записям. Раз, и все сломалось! Нужно срочно вернуть предыдущую версию программы.
Или, возможно Вы долго работали над правками к своей собственной программе — и в какой-то момент решили, что они Вам не нужны. Вам придется «откатить» (вернуть) до версии программы, которая была у Вас до того, как Вы начали вносить правки.
Все эти примеры — с текстовым редактором или с кодом — объединяет то, что Вы работали с «версиями» документа. Вам может понадобиться версия кода состоянием на какую-то дату, последняя рабочая версия или просто предыдущая версия. И Вы можете все это делать, т.е. «контролировать» версии — с помощью Git.
Поэтому, Git называется «системой контроля версий».
Кроме того, у Git есть еще одна функция — он помогает команде разработчиков вместе работать над созданием ПО. Они могут вместе дополнять один и тот же проект. Git также позволяет управлять правами доступа — например, их можно настроить так что Вы не сможете внести правки, пока их не одобрит более опытный член команды.
Ого, круто придумали!
Да, Git — это очень удобно.
Тем не менее, Git — не первая система контроля версий в истории человечества Такие программы появились еще в 1980-х годах.
Это компьютер IBM 1981-го года.
1980-е — это когда люди программировали на Паскале, C и C++, а про Java, Python и JavaScript даже речи не было. Т.е. давно.
До Git были, например, такие системы контроля версий как SVN и Mercurial. Тем не менее, сейчас именно Git занимает лидирующие позиции.
А что это на заставке?
Как мы говорили выше, Git позволяет контролировать версии, а также работать команде разработчиков над одним проектом.
Именно для того, чтобы код был доступен «отовсюду» всем, сам проект и все изменения хранятся где-нибудь на облаке. Обычно это называется «удаленный репозиторий».
Удаленный — потому что данные хранятся не у Вас на компьютере, а где-то на сервере. А репозиторий — от англ. repository , т.е. какой-то сервер на котором хранится ПО, и откуда можно свободно скачивать написанный код. Часто сокращенно репозиторий называют «репо», или «репа» И по-англ. сокращают тоже — repo.
Ну так вот, есть несколько сайтов, где Вы можете размещать свой код бесплатно. Ну, как в Instagram можно зарегистрировать бесплатный аккаунт и хранить там свои фотографии, или как на MySpace можно вести бесплатный блог — точно так же есть сайты, где Вы бесплатно можете хранить свой код.
Наверное, самым крупным таким сайтом является GitHub. Картинка, с которой начинается статья — это октокот (от анг. octocat) , символ GitHub. Октокот — это сочетание осьминога и кота. Но кроме GitHub есть и другие платформы, которыми Вы можете воспользоваться (например, GitLab или Bitbucket).
Так что не надо путать Git и GitHub. Это не одно и то же!
Git — это система контроля версий, которая помогает Вас сохранять разные версии Вашего проекта во время его разработки. И таким образом, Вы всегда легко можете вернуться к любой нужной Вам версии.
GitHub — это одна из платформ, где Вы можете размещать код проекта. Для коммуникации с GitHub вы используете Git.
Итак, мы надеемся что теперь Вы понимаете, что такое Git и зачем он нужен. Чтоб прочитать следующую статью, где мы рассскажем как работает Git, жмите на ссылочку «Как работает Git»
Надеемся, что наша статья была Вам полезна. Можно записаться к нам на курсы по Java на сайте.
- ← Reflection API в Java. Класс Method. Часть 3
- Как работает GIT →
Источник: vertex-academy.com