Git. Работаем в команде.

iMedicum

Git. Работаем в команде.

Мини-лекция для MSK команды. Владислав Лежнев aka LiVsI

Команды Git.

$ git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path]
[--info-path] [-p|--paginate|--no-pager] [--no-replace-objects]
[--bare]
[--git-dir=<path>] [--work-tree=<path>]
[--namespace=<name>] <command> [<args>]

PS: Да, я люблю git command line.

Часто используемые команды:

  1. Зная эти команды - можно решить большинство вопросов взаимодействия с другими разработчиками.
  2. Их совсем немного
  3. Они часто повторяются в циклах работы с git-репозитарием
  4. Они у каждого - свои
  5. Если мне нужен стандартный коммит - я использую
  6. 
    				git commit --interactive
    			

Часто используемые команды
по мнению git[1]:

add - добавить содержимое файлов в индекс git
bisect - выполняет бинарный поиск по истории коммитов.
branch - вывод, создание и удаление веток
checkout - получение ветки или части рабочего дерева
clone - клонировать репозитарий в указанную директорию

				еще не все :)
			

Часто используемые команды
по мнению git[2]:

commit - записать изменения в репозитарий
diff - показать изменения между объектами репозитария
fetch - загрузить содержимое и ссылки из внешнего репозитария
grep - напечатать строки с заданным содержимым
init - создание репозитария с нуля

				еще не все :)
			

Часто используемые команды
по мнению git[3]:

log - показать лог коммитов
merge - объеденить две или более истории разработки месте
mv - премесить или переименовать объект репозитария
pull - получить и смерджить изменения из удаленного репозитария
push - передать изменения в удаленный репозитарий

				еще не все :)
			

Часто используемые команды
по мнению git[4]:

rebase - пересадка части локальных коммитов
reset - сбросить текущее состояние
rm - удаление файлов из рабочего дерева и/или репозитария
show - показать объекты репозитария
status - показать статус рабочей директории
tag - операции с тегами

				Теперь - все
			

Основы работы в git - сценарии действий.

Абсолютно новенький репкозиторий

Вот что вышло

Как только вы опубликовали репку - она становится доступной

И дедке и бабке и внучке с жучкой.И они дружной толпой начинают в нее комитить

Чтобы не потерять контроль над кодом - следите, что меняется

git fetch
git merge origin/master
Или просто тяните в свой локальный репо изменения
git pull

Не скрывайте свой код от команды

Пока вы не опубликовали его в origin - он виден только Вам

git push

Ваша ветка - ваше персональное пространство, покажите его другим.

Прячем все по карманам

Хозяйке на заметку

Псевдонимы в Git
git config --global alias.co checkout
git config --global alias.st status

Хозяйке на заметку

Сколько коммитеров в iMedicum:
git log --pretty=format:"%an <%aE>" | sort -u | wc -l

Хозяйке на заметку

Древовидный граф
git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
Граф для текущей ветки
log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short

Оригинальный репкозитарий

Удаление origin веток
git push origin :BRANCH
Отслеживаемые ветки
git checkout --track origin/BRANCH
Тащим к себе и отслеживаем ветку
git checkout -b BRANCH origin/BRANCH

Теги

Не все изменения одинаково стабильны
Один из методов пометить стабильные состояния - это теги
Посмотреть
git tag
Посмотреть в ограниченном колличестве
git tag -l 'v1.4.2.*'
Создать
git tag -a v1.4 -m 'my version 1.4'

Теги

Отправка
git push origin --tags
Удаление
git tag -d tag_name
git push origin :refs/tags/tag_name
Перемещение
git tag -f tag_name
git push -f origin tag_name

Ищем баги: git bisect

Начало поиска: git bisect start; git bisect bad
Хорошее состояние: git bisect good tag|commit
Статус текущего состояния: git bisect bad или git bisect good
Нашли - заканчиваем поиск: git bisect reset

Вопросы?

При подготовке к лекции ни один стейкхолдер не пострадал

Почитать на досуге