SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Приручаем Git
  Сергей Коржнев
       2GIS
GIT? WTF?
● stupid. contemptible and despicable. simple.
  Take your pick from the dictionary of slang.

● "global information tracker": you're in a good
  mood, and it actually works for you. Angels
  sing, and a light suddenly fills the room.

● "goddamn idiotic truckload of sh*t": when it
  breaks
Просто забавная картинка
Хранение данных в SVN
Хранение данных в GIT
Конфигурация
Файлы:
● /etc/gitconfig (git config --system)
● ~/.gitconfig (git config --global)
● .git/config    (git config)

$git config --global user.name "John Smit"
$git config --global user.email jo@example.com

$git config --list
Конфигурация. Красота.
[color]
   branch = auto
   diff = auto
   interactive = auto
   status = auto
[alias]
   st = status
   ci = commit
   co = checkout
   br = branch
   hist = log --pretty=format:"%h %ad | %s%d [%an]" --
graph --date=short
Просто красота.
############################################################################
# Apply Git and Subversion Integration
if [ -f /opt/local/etc/bash_completion.d/git ]; then
. /opt/local/etc/bash_completion.d/git
fi
scm_ps1() {
local s=
if [[ -d ".svn" ]] ; then
s=(svn:$(svn info | sed -n -e '/^Revision: ([0-9]*).*$/s//1/p' ))
else
if [[ $(declare -f __git_ps1) ]]; then # Only show if completion is there
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
s=$(__git_ps1 "(git:%s)")
fi
fi
echo -n "$s"
}
#export PS1="[033[00;32m]u[033[00;32m]@[033[00;32m]h:[033[01;34m]w[033[31m]$(scm_ps1)[033[00m]$ "
export PS1="${debian_chroot:+($debian_chroot)}[033[01;32m]u@h[033[00m]:[033[01;34m]w[033[01;33m]$(scm_ps1)[033[00m]$ "
#PS1='[033[01;32m]u@h[033[00m] [033[01;34m]W[033[01;33m]$(__git_ps1 " (%s)")[033[00m]$ '
############################################################################
git diff
● Измененные файлы еще не в индексе
  git diff
● Измененные файлы уже в индексе
  git diff --staged
  git diff --cached (git version < 1.6.1)
git commit
● git commit -a -m "description"
Выведение файла из под контроля GIT

● git rm --cached readme.txt
Изменение последнего комита
$ git commit
$ git commit --amend

$ git commit -m "initial commit"
$ git add forgotten_file
$ git commit --amend

Note: меняется hash-коммита
Отмена индексации файла
Changes to be commited:
 (use "git reset HEAD <file>..." to unstage)
Отмена изменений файла
git checkout readme.txt
git checkout .
Fetch и Pull
$ git fetch [remote-name] - стягивает данные с
удаленного репозитория, но не пытается
мержить с локальными доработками

git pull - делает то же самое, что и fetch, но с
мержем
Теги
● git tag -a v1.2 9fceb02 - добавить опосля
● git push - не отправляет теги
  ○ git push origin v1.5 - отправляет
  ○ git push origin --tags
Ветки
Создание ветки
● git branch <branch-name>
● git checkout -b <branch-name>
$ git branch testing
$ git checkout testing
$ vim test.rb
$ git commit -a -m 'made a change'
Merge. "Fast-forward" (перемотка).
$ git checkout master
$ git merge hotfix
Merge. Трехходовое слияние.
Merge. Трехходовое слияние.
Rebase
Rebase




$ git checkout experiment
$ git rebase master
Rebase




$ git checkout master
$ git merge experiment
Rebase
$ git rebase --continue

$ git rebase --skip - пропустить наложение
коммита и перейти к следующему

$ git rebase --abort - отмена работы команды
и всех внесенных изменений
Управление ветками
● git branch -v - ветки + их последние
  коммиты
Удаленные ветки
Удаленные ветки
Удаленные ветки
Отслеживание веток
● Создание локальной ветки, связанной с
   удаленной
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/origin/serverfix.
Switched to a new branch "serverfix"

● Удаление веток на удаленном сервере
$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
- [deleted]    serverfix
RefLog-сокращения
● git reflog
7fa2b31 HEAD@{0}: checkout: moving from WAPI-3160-tracker to WAPI-3574-
base-api14
bbe6894 HEAD@{1}: checkout: moving from master to WAPI-3160-tracker
bbe6894 HEAD@{2}: merge WAPI-3160-tracker: Fast-forward
110b3ad HEAD@{3}: checkout: moving from WAPI-3160-tracker to master
bbe6894 HEAD@{4}: merge master: Merge made by recursive.
462c426 HEAD@{5}: checkout: moving from master to WAPI-3160-tracker
110b3ad HEAD@{6}: pull : Fast-forward
Диапазон комитов




$ git log master..experiment
D
C

$ git log experiment..master
F
E
Бинарный поиск
$ git bisect start
$ git bisect bad
$ git bisect good v1.0
...
$ git bisect good
...
$ git bisect bad

...
$ git bisect reset
Git reset
git reset --soft HEAD^ - переходим в
состояние перед коммитом

git reset --hard HEAD^ - сносим последний
комит полностью
Other
● git revert 12abacd - создаем коммит,
  откатывающий коммит (фактически
  именно последний коммит)

● git show <hash>
● git blame <hash> (git annotate <hash>)
● git grep ...
● git branch -D new-branch — удалит ветку в
  любом случае.
● git branch -m new-name-branch —
  переименует ветку. (?)
● git cherry-pick <hash>
Источники
● http://habrahabr.ru/post/150673/ - книга
  "Pro Git"
● http://habrahabr.ru/post/60347/ - cool статья

Weitere ähnliche Inhalte

Was ist angesagt?

Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаAnastasia Lubennikova
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bashkuchinskaya
 
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)""Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"Artjoker
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Anastasia Lubennikova
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииIvan Kolodyazhny
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Badoo Development
 
Внутреннее устройство Git
Внутреннее устройство GitВнутреннее устройство Git
Внутреннее устройство GitTimur Batyrshin
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?Ivan Tsyganov
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git phpdevby
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Mikhail Kurnosov
 
История PermLUG
История PermLUGИстория PermLUG
История PermLUGAlexey Fedorov
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 

Was ist angesagt? (13)

Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
Romanova techforum bash
Romanova techforum bashRomanova techforum bash
Romanova techforum bash
 
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)""Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
"Опыт внедрения автоматизации на PHP проектах (Docker, Gitlab CI)"
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
 
Git
GitGit
Git
 
Логирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документацииЛогирование в Python: то, о чем не пишут в документации
Логирование в Python: то, о чем не пишут в документации
 
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
Эволюция php code coverage в Badoo. Доклад Ильи Агеева на LoveQA РИТ.
 
Внутреннее устройство Git
Внутреннее устройство GitВнутреннее устройство Git
Внутреннее устройство Git
 
PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?PiterPy#3. DSL in Python. How and why?
PiterPy#3. DSL in Python. How and why?
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...Пространственно-распределенная мультикластерная вычислительная система: архит...
Пространственно-распределенная мультикластерная вычислительная система: архит...
 
История PermLUG
История PermLUGИстория PermLUG
История PermLUG
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 

Andere mochten auch

Financial management an overview
Financial management   an overviewFinancial management   an overview
Financial management an overviewAshish Gupta
 
8287494393@ flat sale in dwarka sector-6
8287494393@ flat sale in dwarka sector-68287494393@ flat sale in dwarka sector-6
8287494393@ flat sale in dwarka sector-6Real Estate
 
Application form OF puri emerald bay 8287494393
Application form OF puri emerald bay 8287494393Application form OF puri emerald bay 8287494393
Application form OF puri emerald bay 8287494393Real Estate
 
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI Antonio De Poli
 
Как организовать мозговые штурмы применяя теорию ограничений
Как организовать мозговые штурмы применяя теорию ограниченийКак организовать мозговые штурмы применяя теорию ограничений
Как организовать мозговые штурмы применяя теорию ограничений2ГИС Технологии
 
Expert2 guru mitchell levy - marketing camp
Expert2 guru mitchell levy - marketing campExpert2 guru mitchell levy - marketing camp
Expert2 guru mitchell levy - marketing campPaul Wcislo
 
Saving Lives in Malakand
Saving Lives in MalakandSaving Lives in Malakand
Saving Lives in Malakandmzhaqx
 

Andere mochten auch (14)

Financial management an overview
Financial management   an overviewFinancial management   an overview
Financial management an overview
 
8287494393@ flat sale in dwarka sector-6
8287494393@ flat sale in dwarka sector-68287494393@ flat sale in dwarka sector-6
8287494393@ flat sale in dwarka sector-6
 
Application form OF puri emerald bay 8287494393
Application form OF puri emerald bay 8287494393Application form OF puri emerald bay 8287494393
Application form OF puri emerald bay 8287494393
 
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI
INFOGRAFICA - LE 11 BUGIE CHE VI RACCONTANO SU MARIO MONTI
 
Ansal highland park 103 sec
Ansal highland park 103 secAnsal highland park 103 sec
Ansal highland park 103 sec
 
KK_7_TKJ
KK_7_TKJKK_7_TKJ
KK_7_TKJ
 
JavaScript Unit Testing Using Jasmine And Tools
JavaScript Unit Testing Using Jasmine And ToolsJavaScript Unit Testing Using Jasmine And Tools
JavaScript Unit Testing Using Jasmine And Tools
 
Paises y gentilicios
Paises y gentiliciosPaises y gentilicios
Paises y gentilicios
 
My autobiography
My autobiographyMy autobiography
My autobiography
 
Как организовать мозговые штурмы применяя теорию ограничений
Как организовать мозговые штурмы применяя теорию ограниченийКак организовать мозговые штурмы применяя теорию ограничений
Как организовать мозговые штурмы применяя теорию ограничений
 
Expert2 guru mitchell levy - marketing camp
Expert2 guru mitchell levy - marketing campExpert2 guru mitchell levy - marketing camp
Expert2 guru mitchell levy - marketing camp
 
Introduction to marketing
Introduction to marketingIntroduction to marketing
Introduction to marketing
 
Приручаем linux-консоль
Приручаем linux-консольПриручаем linux-консоль
Приручаем linux-консоль
 
Saving Lives in Malakand
Saving Lives in MalakandSaving Lives in Malakand
Saving Lives in Malakand
 

Ähnlich wie Приручаем Git

Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Gitphpdevby
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)Anton Ivanov
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с GitDressTester
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающихVadim Drobinin
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Dmytro Olaresko
 
Антон Шумихин - Redmin&Git
Антон Шумихин - Redmin&GitАнтон Шумихин - Redmin&Git
Антон Шумихин - Redmin&GitGAiN@ESD
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.DrupalForumZP2012
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitIvan Evtukhovich
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Egor Stremousov
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним боротьсяВладимир Кожаев
 

Ähnlich wie Приручаем Git (20)

Chebit.Git
Chebit.GitChebit.Git
Chebit.Git
 
Git intro
Git introGit intro
Git intro
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Git for you
Git for youGit for you
Git for you
 
Git (presentation)
Git (presentation)Git (presentation)
Git (presentation)
 
Git presentation
Git presentationGit presentation
Git presentation
 
базовые принципы работы с Git
базовые принципы работы с Gitбазовые принципы работы с Git
базовые принципы работы с Git
 
Git для начинающих
Git для начинающихGit для начинающих
Git для начинающих
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Антон Шумихин - Redmin&Git
Антон Шумихин - Redmin&GitАнтон Шумихин - Redmin&Git
Антон Шумихин - Redmin&Git
 
Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.Системы управления версиями (VCS). Знакомство с Git.
Системы управления версиями (VCS). Знакомство с Git.
 
Git for experienced
Git for experiencedGit for experienced
Git for experienced
 
Распределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере gitРаспределенные системы контоля версия на примере git
Распределенные системы контоля версия на примере git
 
Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"Никита Шультайс. "Система управления версиями git"
Никита Шультайс. "Система управления версиями git"
 
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
 
Git
GitGit
Git
 
Gradle in Enterprise, Is it possible?
Gradle in Enterprise, Is it possible?Gradle in Enterprise, Is it possible?
Gradle in Enterprise, Is it possible?
 
Heroku. Zen cloud
Heroku. Zen cloudHeroku. Zen cloud
Heroku. Zen cloud
 
Release management with Gradle #JokerConf2016
Release management with Gradle #JokerConf2016Release management with Gradle #JokerConf2016
Release management with Gradle #JokerConf2016
 
Git basis
Git basisGit basis
Git basis
 

Приручаем Git