Введение
Я достаточно давно использую git практически во всех проектах. За это время я успел многому научиться и хочу поделиться опытом с читателями. Как известно, все новое пугает. Так говорит половина моих знакомых, которые не захотели потратить пару часов, чтобы разобраться с git раз и навсегда. Скорее всего, после прочтения этой статьи и они, и вы поймете, что это проще, чем кажется.
Я постараюсь показать, как эта VCS (Version Controll System) помогает разрабатывать проект. Эта статья рекомендована к прочтению тем, кто только делает первые шаги в разработке больших проектов.
Итак, Git — это «распределенная система контроля версий», где «система контроля версий» означает то, что она запоминает историю изменения своих файлов, а распределенная значит то, что мы можем работать с ней без доступа к интернету.
Для того чтобы начать:
- Git акаунт на https://github.com
- Консоль или же графический интерфейс.
- Человек по ту сторону монитора, что сможет это поставить под свою ось, будь то Windows, Mac OS или Linux .
Моё окружение - это Mac OS X + Webstorm + Git + Bash .
Если у вас Windows, то, скорее всего, будет msysgit (git-bash) + TortoiseGit.
Как вы уже поняли, придется работать с консолью, потому вам будет необходимо усвоить несколько команд для установки git на вашу операционную систему.
Поговорим немного о том, как же установить git:
- Установка для Linux
Установить Git под Linux как бинарный пакет можно, используя обычный менеджер.
Если у вас установлена Fedora, можно воспользовать yum:
$ yum install git-core
Если же у вас дистрибутив, например, Ubuntu, то вам нужно:
$ apt-get install git
- Установка для Mac
Существует два способа установки Git на Mac OS X.
Первый - использовать графический компоновщик Git, который вы можете скачать здесь:
или же, для более продвинутых пользователей, просто вставьте следующую строчку в терминал
$ sudo port install gitweb + git-core +doc + bash_completion
- Установка в Windows
Настроить Git в Windows просто: у проекта msysGit процедура установки самая легкая. Просто скачайте *.exe инсталлятор на GitHub:
После установки у вас будет и консольная версия, и стандартная графическая.
Остались вопросы по установке?
Тогда вам сюда - https://goo.gl/lec2M0
Git — это коллекция инструментов для решения определенных проблем. Давайте рассмотрим компоненты Git пошагово:
Коммиты
Коммит (патч) — показывает некоторые изменения в файлах, что подверглись изменениям с момента предыдущего коммита. Коммит также содержит заголовки, в которых есть автор, время его создания и прочее. Git-коммит шифрует это в заголовке «parent», указывая, после какого коммита его нужно наложить.
Как применить коммит к другому коммиту?
Мы можем применить коммит только к полному набору файлов. Но после этого мы получим измененный набор файлов. Поэтому «коммит» также показывает состояние репозитория после добавления нового патча.
История Git — это вся цепочка изменений для воссоздания кодовой базы с нуля, коммит за коммитом. История коммиттов может выглядеть так:
- Commit C: Родитель — B.
Добавь “Systematics” в конец файла «readMe.txt».
- Commit B: Родитель — A.
Добавь “Bionic” в конец файла «readMe.txt».
- Commit A: Создай файл «readMe.txt», содержащий “Cyber”.
Commit A здесь первый, это значит, что у него нет родителя. Это значит, что его патч может только добавить новые файлы — в репозитории нет никаких существующих файлов для изменения. Во всем остальном это такой же коммит, как и все остальные.
Итак, мы начинаем с пустого файла. Затем мы применяем патч A, который дает текст “Cyber”. Затем мы можем применить патч B, который даст нам “Cyber Bionic”. Наконец, мы применяем C, который дает “Cyber Bionic Systematics”.
Визуализация Git изображает историю коммиттов слева-направо, описанное выше будет выглядеть так:
A → B → C.
Відео курси за схожою тематикою:
Тэги
Тэги — имена для коммитов, чем-то похожие на ветки. Однако, тэги должны быть постоянными: они, в основном, используются для названий версий релизов. Вы можете переключаться по тэгу, но тэг не может быть вашей «текущей веткой», и тэг никогда не появится автоматически, если вы коммитите впервые.
Также тэги (чаще всего) глобальные, с неограниченным пространством имен, как ветки.
Как просмотреть историю последних коммитов:
git log покажет название последних трех коммитов в ветке.
git log --oneline --graph --decorate намного лучше для просмотра (можете сами убедиться). Вы также можете установить tig, который делает, в основном, то же самое, но вы сможете использовать Enter на коммите, чтобы увидеть различия.
git log --follow показывает нам все изменения, только для конкретного файла (директории). --follow означает - следить за историей файла, включая изменение имени файла.
А сейчас время для команд, которые вы будете писать каждый день по многу раз
$ git status покажет, в какой ветке вы находитесь и какие файлы подверглись изменениям.
git add file_name добавляет только указанный файл (файлы) к патчу.
git add -A (all) добавляет к патчу все изменения, которые нужны вам в последующем коммите.
git commit -a откроет редактор для ввода текста коммита, затем будет создан коммит со всеми произведенными изменениями.
git commit -m “what is to change” запишет коммит и даст ему то описание, которое есть в скобках
git branch name создает новую ветку под названием name, основаную на коммите, но не переключается на нее. Для этого тебе понадобиться команда: git checkout -b origin/develop, которая создаст новую ветку, основанную на origin/develop, или на той, в которой вы находитесь, и переключится на нее.
git checkout производит переключение в ветку, которую вы укажите. Вы также можете перейти в удаленную ветку, в тэг или в конкретный коммит.
git rm file_name говорит Git, что ты собираешься удалить файл, а также удаляет его физически.
Конфликты слияния
Если вы делаете слияние или отправку изменений, возможно, ваши изменения будут конфликтовать с чужими. Git выведет сообщение:
"Автоматическое слияние не удалось, вы должны сделать это вручную".
Если вы посмотрите git status, то обнаружите новую секцию для конфликтующих файлов. И вам нужно это исправить, чтобы завершить слияние.
Откройте конфликтующий файл и увидите что-то вроде этого:
<<<<<<<
то что мы изменили
========
то что сделал ваш предшественник
>>>>>>>> origin/develop
Это говорит нам о том, что двое людей отредактировали одни и те же строки в том же самом файле по-разному, а Git не знает, что должно быть результатом.
Безкоштовні вебінари за схожою тематикою:
Просто отредактируйте файл, как нужно, и выполните git add -А, чтобы сообщить Git, что вы готовы к отправке. Когда все конфликты будут решены и все файлы добавлены через git add -A, сделайте простой git commit для полного слияния.
Примечание:
Проверяйте, что вы действительно исправили все конфликты в файлах после слияния.
Иногда, конфликт - это когда один программист отредактировал файл, а другой удалил этот файл. Когда такое случается, Git покажет тебе, кто что сделал.
Надеюсь, что статья дала вам много новых знаний. И если это так - то вперед, создавать первый репозиторий на github.com и закреплять все, что прочитали.
Статті за схожою тематикою