Git – это распределенная система управления версиями.
Для начала установим GIT
Первоначальные настройки
git config --list
Выводит список всех настроек.
Для начала зададим имя:
git config --global user.name "Dmitriy"
И зададим e-mail в глобальную настройку:
git config --global user.email "ip@polyakovdmitriy.ru"
Параметры установки окончаний строк:
Для предотвращения проблем, при работе на разных операционных системах.
для unix/mac:
git config --global core.autocrlf input
git config --global core.safecrlf warn
для виндовс:
git config --global core.autocrlf true
git config --global core.safecrlf warn
Установка отображения unicode
git config --global core.quotepath off
Создание репозитория
Для создания репозитория, нужно из папки проекта, набрать команду:
git init
Для добавления файлов в репозиторий:
git add index.html
git commit -m "create file"
Проверка состояния репозитория
git status
После внесения изменений в файл, например index.html
Можно или проиндексировать их командой
git add index.html
Или использовать команду, для отмены изменений:
git checkout --index.html
После индексации изменений, можно:
Снять индексацию изменений, командой:
git reset HEAD index.html
Командой commit – можно закомитить все проиндексированные изменения.
Для индексации всех изменений в каталоге и подкаталогах, можно использовать команду
git add .
Просмотр истории
git log
Формат истории настраивается, допустим будем использовать такой:
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
Чтобы не набирать такую длинную команду, можно задать алиас:
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
Получение старых версий
Для получения старой версии, нужно ввести команду:
git checkout <hash>
В качестве hash, используется версия, которая выводится при git config, достаточно использовать первые 7 знаков хэш-кода.
Для возврата к последней версии в ветке master, используется команда
git checkout master
Создаем теги версий
git tag v1
После этого можно использовать при откатывании название тега, вместо хэша:
git checkout v1
Для откатывания на предыдущую версию, которая перед тегом v1, можно использовать такую команду:
git checkout v1~1
Для того чтобы сделать коммит, который отменит предыдущий, можно набрать команду:
git revert HEAD --no-edit
Сброс коммитов до определенного:
git reset --hard v1
Изменение предыдущего коммита:
git commit --amend -m "Add fishka"
Создаем ветку
git branch <имяветки>
Переключаемся на созданную ветку
git checkout <имяветки>
Слияние веток
git merge master
Перебазирование
git rebase master
Лучше не использовать перебазирование, если ветка является публичной или расшаренной.
Клонирование репозиториев
git clone hello cloned_hello
Посмотреть ветки
git branch
Или все ветки
git branch -a
Извлечение изменений в клонированном репозитории
git fetch
Слияние извлеченных изменений
git merge origin/master
Или для слияния можно использовать
git pull
что эквивалентно:
git fetch
git merge origin/master
Добавление ветки наблюдения
git branch --track styles origin/styles
Создание чистого репозитория
git clone --bare hello hello.git
Добавление удаленного репозитория
git remote add shared ../hello.git
Отправка изменений в удаленный репозиторий
git push shared master
Извлечение общих изменений
git remote add shared ../hello.git
git branch --track shared master
git pull shared master