15
Git для опытных пользователей Слава Семушин, web-разработчик в Новосибирске vyacheslav.semushin @softline.ru

Git for experienced

Embed Size (px)

Citation preview

Page 1: Git for experienced

Git для опытных пользователей

Слава Семушин,web-разработчик в Новосибирске

[email protected]

Page 2: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Содержание

Настройка под себя

Игнорирование файлов

Редактирование и отмена коммитов

Разрешение конфликтов

Использование git stash

Использование хуков (hooks)

Полезные ссылки

Вопросы

Page 3: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Настраиваем под себя

Где находится конфиг .git/config ~/.gitconfig

Как его изменить git config git config –global в редакторе

Как посмотреть настройки git config –list

Где почитать man git-config

Page 4: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Настраиваем под себя

Личная информация git config --global user.name "Slava Semushin" git config --global user.email "[email protected]" git config --global core.editor vim

Выделение цветом git config --global color.branch auto git config --global color.diff auto git config --global color.status auto

Псевдонимы (aliases) git config --global alias.stat status git config --global alias.switch checkout git config --global alias.pick cherry-pick

Page 5: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Игнорирование файлов

.gitignore рекурсивен поддерживает простейшие регулярные выражения

Узнать больше можно в man gitignore

Page 6: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Изменение коммитов

Исправляем описание git commit --amend

Откатываем коммит, но оставляем изменения git reset --soft HEAD^

Откатываем коммит полностью git reset --hard HEAD^

Откатываем «правильно» git revert HEAD^

Ещё множество возможностей даёт git rebase

Page 7: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Как выглядит конфликт

Page 8: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Как разрешается конфликт

Правим файл

Сообщаем о том, что конфликт исчерпан git add

Коммитим git commit

Page 9: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Как принять одну из сторон во время конфликта

Диспозиция git status git diff –merge

Наша сторона (бранч в который мержим) git diff --ours git checkount --ours file

Другая сторона (бранч который мержим) git diff --theirs git checkout --theirs file

Page 10: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Как автоматизировать разрешение конфликта

Активировать git rerere (REuse REcorded REsolution) git config --global rerere.enabled 1

«Словить» конфликт

Разрешить его как обычно

Вдобавок есть git rerere status git rerere diff

Page 11: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Прячем незакоммиченые изменения

Сохранить git stash save

Получить список сохранённых git stash list

Применить последний git stash pop

Ещё больше инфы в man git-stash

Page 12: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Работа с хуками

Где .git/hooks/

Для чего рассылка оповещений проверка коммитов

Как использовать скопировать поправить сделать исполняемым (chmod +x)

Множество подробностей есть в man githooks

Page 13: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

По заявкам радиослушателей

Проблема с правами при push-е umask

Обновление настроек после изменения remote git config remote.origin.url <new-url> Git Magick, “Приносим извинения, мы переехали”

Мульти push http://stackoverflow.com/questions/5620525/git-pushing-to

-two-repos-in-one-command

Page 14: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Ссылки

Про git rebase (и не только) http://kb.etersoft.ru/Работа_с_git

Как использовать git rerere http://progit.org/2010/03/08/rerere.html

Удачная модель ветвления http://habrahabr.ru/blogs/Git/106912/

Интерактивная шпаргалка с командами http://www.ndpsoftware.com/git-cheatsheet.html

Page 15: Git for experienced

SOFTWARE ● SERVICES ● EDUCATION ● CLOUDРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Египет, Румыния, Аргентина, Молдова, Колумбия

Ещё вопросы?