В простейшем виде порядок работы с 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://<username>@<server>:<port>/home/git/project.git
git checkout <branch_name>
git checkout <branch_name> git pull
git checkout -b <branch_name>
git merge <another_branch_name>
Если получаем ошибку вида
<file_name>: 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.
То нужно устранить конфликты в содержимом конфликтующих файлов вручную, после чего повторить попытку слияния.
git add <edited_conflicting_file1> git add <edited_conflicting_file2> git commit git merge --no-ff <another_branch_name>
После редактирования некоторых файлов в проекте, можно в любое время проверить состояние своего локального GIT-репозитория:
git status
Его вывод покажет, какие были произведены изменения и подскажет, как их правильно сохранить. Обычно для сохранения своих изменений достаточно сделать следующее:
git add <file> git commit
Последняя команда откроет текстовый редактор для вставки короткого (или не очень) комментария, описывающего внесённые изменения. Комментарий не может быть пустым.
git push origin <branch_name>
git branch -d <branch_name>
git push origin --delete <branch_name>
Если возникла необходимость изменить комментарий к сохранённому коммиту, не отправленному на сервер, нужно выполнить2)
git commit --amend
Если изменения уже были отправлены на сервер, то после этого нужно отправить новую информацию на север
git push <remote> <branch> --force
Если нужно отредактировать комментарий не к последнему коммиту, а к некоторому более раннему, необходимо выполнить3)
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
После чего необходимо оповестить всех участников проекта о необходимости скопировать эти изменения к себе.
Программа 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