====== GIT ====== В простейшем виде порядок работы с GIT-репозиторием примерно такой: - Создание нового локального репозитория или клонирование уже существующего репозитория. - Выбор рабочей ветки, если их несколько. - Внесение изменений в проект и их запись. - Обновление удалённого репозитория из локального рабочего каталога. ===== Создание репозитория ===== Создаём папку, которая станет репозиторием: mkdir MyProject cd MyProject Затем инициализируем её при помощи git. При этом создаётся вложенная подпапка ''.git''. git init Можно также внести настройки владельца репозитория: git config user.email "wombat@example.com" git config user.name "Vladimir" ===== Клонирование репозитория ===== git clone https://github.com/Vladimir/MyProject git clone ssh://@:/home/git/project.git ===== Выбор ветки ===== git checkout ===== Обновление с удалённого репозитория ===== git checkout git pull ===== Создание ветки ===== git checkout -b ((http://www.git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging#Basic-Branching)) ===== Слияние веток ===== git merge Если получаем ошибку вида : needs merge error: you need to resolve your current index first при каком-то действии, то текущее задание на слияние можно отменить так: git merge --abort ===== Разрешение конфликтов ===== Если при попытке слияния веток git выдаёт ошибку вида: ''Automatic merge failed; fix conflicts and then commit the result.'' То нужно устранить конфликты в содержимом конфликтующих файлов вручную, после чего повторить попытку слияния. http://genomewiki.ucsc.edu/index.php/Resolving_merge_conflicts_in_Git#Common_questions_for_when_git_fails_during_the_merge git add git add git commit git merge --no-ff ===== Внесение изменений ===== После редактирования некоторых файлов в проекте, можно в любое время проверить состояние своего локального GIT-репозитория: git status Его вывод покажет, какие были произведены изменения и подскажет, как их правильно сохранить. Обычно для сохранения своих изменений достаточно сделать следующее: git add git commit Последняя команда откроет текстовый редактор для вставки короткого (или не очень) комментария, описывающего внесённые изменения. Комментарий не может быть пустым. ===== Загрузка на сервер ===== git push origin ===== Удаление ветки ===== ==== локальной ==== git branch -d ==== удалённой ==== git push origin --delete ===== Изменение комментария ===== ==== К последнему коммиту ==== Если возникла необходимость изменить комментарий к сохранённому коммиту, не отправленному на сервер, нужно выполнить((http://stackoverflow.com/a/179147)) git commit --amend Если изменения уже были отправлены на сервер, то после этого нужно отправить новую информацию на север git push --force ==== К ранним коммитам ==== Если нужно отредактировать комментарий не к последнему коммиту, а к некоторому более раннему, необходимо выполнить(( http://stackoverflow.com/a/180085)) git rebase --interactive $parent_of_flawed_commit где ''$parent_of_flawed_commit'' -- идентификатор коммита, предшествующего самому раннему из редактируемых. После этого откроется редактор со списком коммитов, начиная с самого старого из подлежащих редактированию. Возле каждого из них нужно выставить соответствующее слово, которое обозначает действие для данного коммита. Согласно подсказке, которую, Git показывает прямо в редакторе, # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell После этого нужно следовать подсказкам Git. Чаще всего, всё сведётся просто к устранению конфликтов и выполнению команды git rebase --continue дл каждого конфликта. Для публикации исправленных записей используется команда git push origin <ветка> -f После чего необходимо оповестить всех участников проекта о необходимости скопировать эти изменения к себе. ====== Визуализация ====== ===== Картинка ===== ===== Видео ===== Программа [[http://gource.io/ | Gource]] умеет создавать красивое видео с визуализацией хода разработки, исходя из лога Git. gource -1280x720 -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libx264 -preset ultrafast -crf 1 -threads 0 -bf 0 gource.mp4 gource -1280x720 -o gource.ppm ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i gource.ppm -vcodec libx264 -preset ultrafast -crf 1 -threads 0 -bf 0 gource.mp4 gource -1280x720 -o - | ffmpeg -y -r 60 -f image2pipe -vcodec ppm -i - -vcodec libvpx -b 10000K gource.webm ====== Ссылки ====== ===== Книги ===== ==== На русском ==== [[http://www.git-scm.com/book/ru | Pro Git book]] ==== На английском ==== [[http://www.git-scm.com/book/ | Pro Git book]]