Користувальницькькі налаштування

Налаштування сайту


git

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
git [2015/01/21 23:21]
wombat [К ранним коммитам]
git [2017/06/12 19:52] (поточний)
wombat gource
Рядок 1: Рядок 1:
 +====== 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://<​username>​@<​server>:<​port>/​home/​git/​project.git
 +  ​
 +
 +
 +===== Выбор ветки =====
 +
 +  git checkout <​branch_name>​
 +  ​
 +
 +===== Обновление с удалённого репозитория =====
 +
 +  git checkout <​branch_name>​
 +  git pull
 +
 +===== Создание ветки =====
 +
 +  git checkout -b <​branch_name>​
 +
 +((http://​www.git-scm.com/​book/​en/​Git-Branching-Basic-Branching-and-Merging#​Basic-Branching))
 +
 +
 +===== Слияние веток =====
 +
 +  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.''​
 +
 +То нужно устранить конфликты в содержимом конфликтующих файлов вручную,​ после чего повторить попытку слияния.
 +
 +http://​genomewiki.ucsc.edu/​index.php/​Resolving_merge_conflicts_in_Git#​Common_questions_for_when_git_fails_during_the_merge
 +
 +  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>​
 +
 +
 +
 +===== Изменение комментария =====
 +
 +==== К последнему коммиту ====
 +
 +
 +Если возникла необходимость изменить комментарий к сохранённому коммиту,​ не отправленному на сервер,​ нужно выполнить((http://​stackoverflow.com/​a/​179147))
 +
 +  git commit --amend
 +
 +Если изменения уже были отправлены на сервер,​ то после этого нужно отправить новую информацию на север
 +
 +  git push <​remote>​ <​branch>​ --force
 +
 +
 +==== К ранним коммитам ====
 +
 +Если нужно отредактировать комментарий не к последнему коммиту,​ а к некоторому более раннему,​ необходимо выполнить(( ​ http://​stackoverflow.com/​a/​180085))
 +
 +  git rebase --interactive $parent_of_flawed_commit
 +
 +где ''​$parent_of_flawed_commit''​ -- идентификатор коммита,​ предшествующего самому раннему из редактируемых.
 +
 +После этого откроется редактор со списком коммитов,​ начиная с самого старого из подлежащих редактированию. Возле каждого из них нужно выставить соответствующее слово, которое обозначает действие для данного коммита. Согласно подсказке,​ которую,​ Git показывает прямо в редакторе,​
 +
 +<​code>​
 +#  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
 +</​code>​
 +
 +После этого нужно следовать подсказкам 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]]
 +
 +
 +
 +
  
git.txt · В останнє змінено: 2017/06/12 19:52 by wombat