Работа с Git. Забери статью себе на стену, чтобы не потерять!
Git - распределенная система управления версиями (англ. VCS или CVS, Control Version System). Один из самых необходимых и полезных инструментов при разработке чего-угодно (от простых статей и медиа-файлов до больших и сложных проектов). При командной разработке - Git вообще незаменим и стал практически стандартом ведения работы. Поэтому, уважающему себя разработчику нужно знать Git и уметь с ним работать.
Основные команды для работы с Git:
- Создание нового репозитория
Для того чтобы создать новый репозиторий git необходимо открыть папку где вы хотите его разместить и выполнить команду
git init
- Получение репозитория
Создать локальную рабочую копию репозитория можно командой
git clone /путь/к/репозиторию
Когда используется удаленный сервер, команда будет
git clone юзер@хост:/путь/к/репозиторию
- Рабочий процесс
Ваш локальный git репозиторий состоит из трех "сущностей". Рабочий каталог (Working Directory) содержит файлы. Индекс (Index) или область подготовленных файлов (Staging Area), содержит информацию о том, что должно войти в следующий коммит и HEAD указывает на последний коммит что вы сделали.
- Подготовка и коммит
Чтобы подготовить изменения (добавить их в Индекс) используйте
git add <имя_файла>
git add *
Это первый шаг в основном рабочем процессе. Сделать коммит подготовленных изменений можно командой
git commit -m "Описание коммита"
Теперь изменения закреплены в локальном репозитории и на них указывает HEAD, но еще не в удаленном репозитории.
- Отправка изменений
Чтобы отправить эти изменения в ваш удаленный репозиторий, выполните
git push origin master
Можно изменить master на любую другую ветвь чтобы отправить изменения на неё.
Если вы еще не клонировали существующий репозиторий и хотите подключить ваш к удаленному, вам нужно добавить его, выполнив
git remote add origin <адрес_сервера>
Теперь вы можете отправлять изменения на удаленный репозиторий
- Ветвление
Ветки используются для разработки функционала изолированного от остального. Ветка master используется по умолчанию когда вы создаете репозиторий. Используйте другие ветки для разработки и слияние в master когда разработка завершена.
Создать новую ветку с названием "feature_x" и переключиться на неё можно командой
git checkout -b feature_x
Переключиться обратно на master
git checkout master
Удалить ветку
git branch -d feature_x
Ветка не будет доступна тем, кто пользуется с вами удаленным репозиторием пока вы не отправите её туда
git push origin <имя_ветки>
- Обновление и слияние
Обновить ваш локальный репозиторий, можно командой
git pull
которая заберет изменения из удаленного репозитория и проведет слияние с активной веткой.
Для того чтобы слить другую ветку с активной (например master), используйте команду
git merge <имя_ветки>
В обоих случаях git пытается автоматически слить изменения. К сожалению, это не всегда возможно и результатом станет конфликт. Вы ответственны за разрешение возникших конфликтов, путем ручного редактирования файлов указанных git. После изменений вам надо пометить их как слитые
git add <имя_файла>
перед слиянием вы можете предварительно посмотреть на изменения
git diff <имя_ветки> <имя_другой_ветки>
- Замена локальных изменений
В случае если вы сделали что-то не то, вы можете заменить локальные изменения, используя команду
git checkout — <имя_файла>
Произойдет замена изменений в вашем рабочем каталоге, на то что сейчас находится в HEAD. Изменения уже внесенные в индекс, так же как новые файлы будут сохранены.
Если же вы хотите удалить все ваши локальные изменения и коммиты, получите (fetch) последние изменения с сервера и укажите локальной ветке master на них вот так
git fetch origin
git reset —hard origin/master
- Твики и удобные команды
Встроенный в git графический интерфейс
gitk
Использовать цветной вывод в терминале
git config color.ui True
Выводить в логе коммит на одной строке
git config format.pretty oneline
Интерактивный способ добавления в индекс
git add -i