Заметки по Git
"Fork You" - неофициальный слоган GitHub (перевод - Ответвись)
Git - система контроля версий (Version Control System - VCS), созданная Линусом Торвальдсом в 2005 году для управления разработкой ядра операционной системы Linux. Git сейчас наиболее востребованная VCS, ранее таковыми были SVN и Mercurial. Систем контроля версий великое множество, на этой вики странице можно посмотреть их сравнения между собой.
Документация по Git - официальный мануал на русском, интерактивный курс по Git - LearnGit.
1 - Как использовать Git
Можно создать собственный Git сервер для хранения кода под версионным контролем, но гораздо проще и быстрей воспользоваться готовыми решениями - хостингами проектов с системами контроля версий, такими как Bitbucket или GitHub. Bitbucket позволяет создавать неограниченное количество приватных репозиториев, но ваша команда не должна превышать 5 человек (также есть другие ограничения). GitHub позволяет создавать общедоступные репозитории, а приватные репозитории можно создать только на платном аккаунте, который будут стоить вам несколько долларов (на конец 2017 - 7$). Есть ещё проект GitLab, менее популярный вероятно за счёт молодости (запущен в 2011, тогда как GitHub и BitBucket в 2008), бесплатные приватные репозитории, контрибьют календарь и другие плюшки.
Прежде чем начать комитить свои проекты, необходимо настроить окружение. По сути единственное, что нужно сделать - установить Git в вашу систему. Официальная документация под разные ОС - Установка Git. В дальнейшем в зависимости от операционной системы или от окружения в котором вы находитесь, достаточно будет вызвать Git командой "$ git". Я же предпочитаю использовать терминал в IDE, например IDE от JetBrains или NetBeans, которые предлагают широкие возможности по работе с Git и по большей части имеют графический интерфейс. Использую терминал IDE, команды Git пишутся без знака доллара вначале - "git".
2 - Команды для настройки Git
Перед началом использования Git необходимо добавить несколько основных настроек с помощью команд "git config". Также эти команды помогут вам сменить или подкорректировать конфигурацию, особенно если вы используете несколько хостингов для контроля версий под разными аккаунтами. У меня была реальная путаница - используя глобальные настройки сделанные под BitBucket, я обновил репозиторий на Github и увидел логин из Bitbucket. Почему-то я сильно невнимательный. предположил, что логин должен был смениться после авторизации и клонирования проекта из GitHub.
Просмотреть текущую конфигурацию
git config --list
Задать глобально имя пользователя и email
git config --global user.name "John Galt"
git config --global user.email johngalt@atlogex.com
Добавить удаленный репозиторий с котором будут синхронизироваться версии кода:
git remote add https://github.com/Atlogex/wpstack
Исключение файлов и папок из git
Для того чтобы сразу исключить некоторые репозитории из системы контроля версии можно создать в корне проекта файл ".gitignore"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Решетка используется для комментирование кода # Исключить конкретный файл из git atlassian-ide-plugin.xml # Исключить из git папку IDE c именем ".idea" /.idea/ # Исключить все папки и катлоги внутри директории vendor /vendor/* # Вернуть исключенный файл с именем ".gitkeep" в git !vendor/.gitkeep # Исключить все файлы с расширением zip из git *.zip |
3 - Список основных комманд Git
Инициализация проекта
После выполнения команды будет создана папка .git в директории вашего проекта.
git init
Добавления файлов проекта под контроль Git
Точка в конце означает добавить все файлы в дирректории и поддиректориях.
git add .
Информация о текущем состоянии
Для отображение информации в коротком виде, добавьте директиву " -s".
git status
Добавление текущего среза
Директива "-m" задаёт комментарий для коммита.
git commit -m "Coment for my firstcommit"
Опция "--amend" добавит изменения в последний коммит (если не было push)
git commit --amend
Посмотреть текущее ветки проекта
git branch
Создание дополнительной ветки для проекта
Директива "-b" необходимо чтобы сразу перейти на новую ветку. В примере создаётся ветка с именем "myrefact" и происходит переключение на неё.
git checkout -b myrefact
Слияние веток
В команде указывается имя ветки которую нужно слить с текущей (той на которой вы сейчас)
git merge myrefact
Откат изменений на один из предыдущих коммитов
Revert - добавляет новый коммит, в котором будут убраны изменения из выбранного выми предыдущего коммита (сначала нужно узнать его хэш, например выполнив "git log").
git revert хеш_коммита
Откат изменений в файле
При необходимости вернуть файл в состояние, которое у него было в одном из прошлых коммитов, необходимо узнать хэш этого коммита и выполнить команду:
git checkout хешкомита имяфайл
Сброс изменений до одного из предыдущих коммитов
При необходимости сбросить текущее наработки, либо вовсе откатится на несколько коммитов назад, можно воспользоваться "git reset". Reset с опцией "--hard" удалит или перезапишет файлы из всех коммитов старше переданного! Подробнее о Git Reset.
git reset --hard хеш_коммита
Отправка изменений на сервер
Параметр "--all" отправит изменения на всех созданных ветках
git push --all
Получение изменений из удаленного репозитория
Pull - позволяет получить данные с удаленного репозитория и слить (сделать merge) с вашим кодом. Для запуска слияние в ручную, нужно использовать "fetch".
git pull
Клонирование репозитория
Склонировать репозиторий, если клонировать в не пустой каталог, будет ошибка. Разрешение проблемы Git - Клонирование в не пустой кталог. Клонирование автоматически присваивает ветку "master" удаленного репозитория к короткому имени "origin".
git clone git://github.com/Atlogex/wpstack
Просмотр истории коммитов
Для форматирование лога можно воспользоваться директивой "--pretty". Значения "short", "full", "fuller" будут выводят разное кол-во информации. А такой вариант "--pretty=oneline" выведет коммиты в одну строку.
git log