Git — приложение для управления версиями. Если вы работаете над каким-то проектом, даже простым, то лучше попробовать git, потом не сможете от него отказаться. Графические интерфейсы git описаны здесь. Так же будут полезны книга по git и интерактивный курс.
Установка git, простая:
apt-get install git
Основные команды git для терминала :
вызов справки:
git help commit
создать git репозиторий из текущего каталога (создаст скрытую папку .git):
git init
проверка состояния репозитория, какие из измененных файлов не попали в репу:
git status
добавление всех файлов в репозиторий (рекурсивно), вместо точки можно указать имя файла:
git add .
git add index.php
отмена изменений:
git сheckout
создать коммит, если опущен ключ -m, то вызовет редактор (для Ubuntu nano) для добваления комментария коммита:
git commit -m «Описание коммита»
добавляет тег текущей версии:
git tag v1
просмотр тегов:
git tag
после присвоение тегов становится доступным переключение по тегам, а не по хешу:
git checkout v1
возвращение к предыдущей версии:
git checkout <hash>
возвращается к последней версии в ветке master:
git checkout master
просмотр тегов в логах
git hist master --all
просмотр истории изменений
git log
одностраничный формат истории:
git log --pretty=oneline
другие варианты отображения:
git log --pretty=oneline --max-count=2
git log --pretty=oneline --since=’5 minutes ago’
git log --pretty=oneline --until=’5 minutes ago’
git log --pretty=oneline --author=<your name>
git log --pretty=oneline --all
рекомендуемый формат лога
git log --pretty=format:»%h %ad | %s%d [%an]» --graph --date=short
рассмотрим его в деталях:
--pretty=»…» — определяет формат вывода.
%h — укороченный хэш коммита
%d — дополнения коммита («головы» веток или теги)
%ad — дата коммита
%s — комментарий
%an — имя автора
--graph — отображает дерево коммитов в виде ASCII-графика
--date=short — сохраняет формат даты коротким и симпатичным
информация о ветках в клонированном репе:
git branch
создание новой ветки:
git branch newMaster
показать все ветки:
git branch -a
переключение на ветку master:
git checkout master
показывает коммиты удаленные из ветки:
git hist --all
слияние веток:
git checkout style
git merge master
git hist --all
слияние изменений:
git merge origin/master
отправка изменений в общий реп:
git push shared master
Настройка git
первичная настройка git:
git config --global user.name «Your Name»
git config --global user.email «Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.»
git config --global core.autocrlf input
git config --global core.safecrlf true
Последние две команды лучше прокомментировать. Настройка core.autocrlf с параметрами «true» и «input» делает все переводы строк текстовых файлов в главном репозитории одинаковыми. А core.autocrlf true — git автоматически конвертирует CRLF->LF при коммите и обратно LF->CRLF при выгрузке кода из репозитория на файловую систему (используют в Windows).
core.autocrlf input — конвертация CRLF в LF только при коммитах (используют в Mac/Linux). Если core.safecrlf установлен на «true» или «warm«, Git проверяет, если преобразование является обратимым для текущей настройки core.autocrlf.
core.safecrlf true — отвержение необратимого преобразования lf<->crlf. Полезно, когда специфические бинарники похожие на текстовые файлы.
core.safecrlf warn — печать только предупреждение, но принимает необратимый переход.
просмотр конфигурационного файла:
git config --list
Для пользователей Unix/Mac: git status, git add, git commit, git checkout — общие команды, для которых полезно иметь сокращения. Добавьте следующее в файл .gitconfig в вашем $home каталоге:
[alias]
co = checkout
ci = commit
st = status
br = branch
hist = log --pretty=format:\»%h %ad | %s%d [%an]\» --graph --date=short
type = cat-file -t
dump = cat-file -p
Работа с GitHub и Bitbucket
добавить на удаленный репозиторий:
git remote add origin https://github.com/rabamaster/test.git
git push -u origin master
клонировать с удаленного репа:
git clone https://github.com/rabamaster/test.git /папка/куда
получаем токен fda0c8d64c34687db8580bf054064c14e3333d9f
на https://github.com/settings/tokens
вытягивает репу с сервера в состоянии последнего коммита на сервере
git pull