Приручаем Git

761 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
761
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Приручаем Git

  1. 1. Приручаем Git Сергей Коржнев 2GIS
  2. 2. GIT? WTF?● stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.● "global information tracker": youre 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
  3. 3. Просто забавная картинка
  4. 4. Хранение данных в SVN
  5. 5. Хранение данных в GIT
  6. 6. КонфигурацияФайлы:● /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
  7. 7. Конфигурация. Красота.[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
  8. 8. Просто красота.############################################################################# Apply Git and Subversion Integrationif [ -f /opt/local/etc/bash_completion.d/git ]; then. /opt/local/etc/bash_completion.d/gitfiscm_ps1() {local s=if [[ -d ".svn" ]] ; thens=(svn:$(svn info | sed -n -e /^Revision: ([0-9]*).*$/s//1/p ))elseif [[ $(declare -f __git_ps1) ]]; then # Only show if completion is thereGIT_PS1_SHOWDIRTYSTATE=trueGIT_PS1_SHOWSTASHSTATE=trueGIT_PS1_SHOWUNTRACKEDFILES=trues=$(__git_ps1 "(git:%s)")fifiecho -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]$ ############################################################################
  9. 9. git diff● Измененные файлы еще не в индексе git diff● Измененные файлы уже в индексе git diff --staged git diff --cached (git version < 1.6.1)
  10. 10. git commit● git commit -a -m "description"
  11. 11. Выведение файла из под контроля GIT● git rm --cached readme.txt
  12. 12. Изменение последнего комита$ git commit$ git commit --amend$ git commit -m "initial commit"$ git add forgotten_file$ git commit --amendNote: меняется hash-коммита
  13. 13. Отмена индексации файлаChanges to be commited: (use "git reset HEAD <file>..." to unstage)
  14. 14. Отмена изменений файлаgit checkout readme.txtgit checkout .
  15. 15. Fetch и Pull$ git fetch [remote-name] - стягивает данные судаленного репозитория, но не пытаетсямержить с локальными доработкамиgit pull - делает то же самое, что и fetch, но смержем
  16. 16. Теги● git tag -a v1.2 9fceb02 - добавить опосля● git push - не отправляет теги ○ git push origin v1.5 - отправляет ○ git push origin --tags
  17. 17. Ветки
  18. 18. Создание ветки● git branch <branch-name>● git checkout -b <branch-name>
  19. 19. $ git branch testing
  20. 20. $ git checkout testing
  21. 21. $ vim test.rb$ git commit -a -m made a change
  22. 22. Merge. "Fast-forward" (перемотка).$ git checkout master$ git merge hotfix
  23. 23. Merge. Трехходовое слияние.
  24. 24. Merge. Трехходовое слияние.
  25. 25. Rebase
  26. 26. Rebase$ git checkout experiment$ git rebase master
  27. 27. Rebase$ git checkout master$ git merge experiment
  28. 28. Rebase$ git rebase --continue$ git rebase --skip - пропустить наложениекоммита и перейти к следующему$ git rebase --abort - отмена работы командыи всех внесенных изменений
  29. 29. Управление ветками● git branch -v - ветки + их последние коммиты
  30. 30. Удаленные ветки
  31. 31. Удаленные ветки
  32. 32. Удаленные ветки
  33. 33. Отслеживание веток● Создание локальной ветки, связанной с удаленной$ git checkout --track origin/serverfixBranch serverfix set up to track remote branch refs/remotes/origin/serverfix.Switched to a new branch "serverfix"● Удаление веток на удаленном сервере$ git push origin :serverfixTo git@github.com:schacon/simplegit.git- [deleted] serverfix
  34. 34. RefLog-сокращения● git reflog7fa2b31 HEAD@{0}: checkout: moving from WAPI-3160-tracker to WAPI-3574-base-api14bbe6894 HEAD@{1}: checkout: moving from master to WAPI-3160-trackerbbe6894 HEAD@{2}: merge WAPI-3160-tracker: Fast-forward110b3ad HEAD@{3}: checkout: moving from WAPI-3160-tracker to masterbbe6894 HEAD@{4}: merge master: Merge made by recursive.462c426 HEAD@{5}: checkout: moving from master to WAPI-3160-tracker110b3ad HEAD@{6}: pull : Fast-forward
  35. 35. Диапазон комитов$ git log master..experimentDC$ git log experiment..masterFE
  36. 36. Бинарный поиск$ git bisect start$ git bisect bad$ git bisect good v1.0...$ git bisect good...$ git bisect bad...$ git bisect reset
  37. 37. Git resetgit reset --soft HEAD^ - переходим всостояние перед коммитомgit reset --hard HEAD^ - сносим последнийкомит полностью
  38. 38. 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>
  39. 39. Источники● http://habrahabr.ru/post/150673/ - книга "Pro Git"● http://habrahabr.ru/post/60347/ - cool статья

×