Частые команды для git

Статья ориентирована больше для новичков

Использование системы контроля версий для сайта является очень удобным и не использует ее наверно только ленивый. Отслеживание изменений в коде множество преимуществ

  • работать в команде, одновременно над разными или одной и той же задачей не боясь что-то затереть другому
  • всегда можно откатиться к определенному состоянию
  • внести изменения в сторонний модуль и сохранить возможность обновлять решение (после обновления можно сравнить версии и внести корректировки)
  • выгружать изменения сделанные локально на рабочем компьютере на сервер в одной командой и применить их на сервере тоже одной командой, вместо копирования по FTP
  • и многое другое

Ниже приведу примеры часто используемых команд

Примеры приводятся с учетом что используется Linux и git уже установлен

Создание репозитория

Для создания репозитория в текущем проекте переходим в дирректорию с проектом и вводим

git init

Статья ориентирована больше для новичков Использование системы контроля версий  для сайта является очень удобным и не использует ее наверно только ленивый.

Создался репозиторий и появилась соответствующая поддиректория.

Создание .gitignore

Далее можно создать файл .gitignore, чтобы задать правила для запрета отслеживания отдельных файлов и папок, например так

.idea/
/docker/
/github/
/bitrix/
/logs/
/node_modules/
log.txt
*.xml
/vendor/
/upload/
.phpunit.result.cache
.phpunit.cache/

Добавления файлов в список отслеживаемых

Чтобы гит начал отслеживать изменения в файлах, необходимо сначала добавить эти файлы в индекс. Это можно делать как по одному файлу, дирокетории, так и сразу все используя точку

git add robots.txt
или
git add .

Статья ориентирована больше для новичков Использование системы контроля версий  для сайта является очень удобным и не использует ее наверно только ленивый.-2

Отмена git add

Чтобы отменить добавление файла в индекс с сохранением изменений, необходимо выполнить команду

git reset path/filename

Сохранение изменений - git commit

После добавления изменений, необходимо их зафиксировать.

Перед фиксацией изменений, необходимо указать кто будет автором фиксации. Для этого нужно указать ваши имя и email адрес

git config --global user.name "Ivan Ivanov"
git config --global user.email ivan.ivanov@mail.ru

Добавляем файлы, изменения по которым нужно зафиксировать

git add .
git commit -m "Первый комит, инициализация"
Статья ориентирована больше для новичков Использование системы контроля версий  для сайта является очень удобным и не использует ее наверно только ленивый.-3

Отмена git commit

Если случайно добавили в лишние файлы в комит, используя команду git commit -am "...", можно отменить комит с сохранением изменений

git reset --soft HEAD~

Просмотр истории - git log

Зафиксировав изменения, можем посмотреть историю зафиксированных изменений

git log
Статья ориентирована больше для новичков Использование системы контроля версий  для сайта является очень удобным и не использует ее наверно только ленивый.-4

Создание удаленного репозитория

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

Для этого можно воспользоваться github.com, bitbuсket.org и тд. Также можно хранить репозиторий на своем сервере или временно в отдельной директории на своем компьютере.

Создаем директорию локально или на сервере, инициализируем гит без рабочего каталога

mkdir site.ru.git
cd site.ru.git
git init --bare

Указываем куда выгружать, удаленный репозиторий

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

git remote add origin /path-to/site.ru.git

Варианты пути

  • /path-to/site.ru.git - если хранится репозиторий на локальной машине
  • user:password@host:/path-to/site.ru.git
  • host:/path-to/site.ru.git

Последний вариант будет работать если у вас настроен вход по ключу на сервер.

Отправка изменений в удаленный репозиторий

Отправим сделанные зафиксированные изменения в удаленный репозиторий

git push
или git push origin master

Если это первая отправка, то нужно еще и подписаться на отслеживание изменений

git push -u origin master

Восстановление удаленного файла

Иногда в процессе разработки можно удалить лишний фал, для его восстановление можно использовать команду, которая восстановит файл до его последнего зафиксированного состояния

git checkout HEAD^ deleted_file.txt

Или используя часть идентификатора комита в котором был удален c7efa038f0d84

git checkout c7efa038f0d84^ -- deleted_file.txt

Ветвление

При работе нескольких разработчиков, удобно работать над задачей в отдельной ветке. Это позволяет в критических ситуациях быстро подготовить исправление, не думая о том, что часть файлов может вызвать другие проблемы (так как основная задача еще выполняется).

Переключение на другую ветку

Переключимся на другую ветку - task12 . Ключ -b сообщает что необходимо создать такую ветку.

git checkout -b task12

Применение изменений из другой ветки

После того как задача выполнена в отдельной ветке, изменения нужно перенести в основную ветку - master (может называться и main или иначе). Для этого переключаемся на основную ветку и объединяем

git checkout master
git merge task12

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

В процессе могут возникнуть сообщения о невозможности объединения, которые нужно решать уже вручную, и выбирать что нужно оставить а что убрать. Для этого есть соответствующие команды и инструменты.

error: failed to push some refs ... / Diverging branches can't be fast-forwarded, you need to either:..

Ошибки такого вида часто бывают когда есть изменения в удаленном репозитории и локально зафиксированы изменения. Лечится довольно просто

git rebase origin/master

Статья ориентирована больше для новичков Использование системы контроля версий  для сайта является очень удобным и не использует ее наверно только ленивый.-5