Git Intro
Кампус 2013, Ижевск

Андрей Лапин
Диадок, Ижевск
Системы контроля версий

•

Распределенные

•
•
•

•

Mercurial
Bazaar

Централизованные

•
•
•

•

Git

SVN
TFS
CVS

Лока...
Базовые понятия
• Репозиторий
• Commit
• Hash
• Ветка
Клиенты: GitExtensions, TortoiseGit
Работа с удаленным репозиторием
Базовые операции
• git init
• git add <filename>
• git commit -a –m <message>
• git commit -a --amend –m <message>
• git s...
git reflog
File moving by Git
Файл .gitignore
Пример файла .gitignore:

settings
#exceptions
!Settings/UnchangeableFiles/
[Bb]in
[Dd]ebug*/
[Rr]elease*/...
Клонирование репозитория
• git clone git@github.com:trurl123/test.git
• git clone git@github.com:trurl123/test.git myfolde...
Операции с удаленным репозиторием
• git fetch --all
• git push [сервер] [ветка]
• git pull
• git remote add <alias> <url>
Хранение данных в Git
• Папка .git
• Снапшоты
• Сжатие
• Удаленные репозитории
Ветки
Ссылки на ревизии
• Revisions
•
•
•
•
•
•
•

<sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e
<refname>
HEAD,...
Пример из крышек и тильд
G

H

I

 /
D

J
 /

E

F

|

/ 



 | /

|

|/
B

|
C



/

 /
A
A =
B = A^

= A^0
= A^1

C = A^...
Команды по работе с ветками
• git merge brname
• git rebase master
Merge
Подумайте, что вы вливаете в свою
ветку
• branch vs origin/branch
Rebase
Проблемы rebase
• Не переписывайте ветки на сервере!
• Не делать rebase после merge
Pull, merge and rebase
• pull = fetch + merge
• pull --rebase == fetch + rebase
Временные ветки
• git stash
• git stash apply
Жизненный цикл ветки (real)
git checkout -b myBranch master
... commits
git push
git fetch
git merge origin/master
… fix a...
Текущий коммит в ветке
• git commit –m <message>
• git pull --rebase
• git push
ПРАКТИКА
Генерация SSH ключа
$ ssh-keygen -t rsa -C "email@example.com"
...
# Enter file in which to save the key
(/c/Users/you/.ss...
Конфигурирование: настройки
пользователя
Имя пользователя:
$ git config --global user.name "MyName"
E-mail пользователя:
$...
Задание
Впиши себя!

https://github.com/trurl123/test
Примеры проблем и их
решение
Откат изменений:
отмена одного старого коммита

git revert <hash>

git log
↓
commit dcb4...
Revert "+someone"
This reverts...
Откат изменений:
отмена нескольких последних коммитов
git reset [--hard|--mixed] <commit>
e.g.:
git reset --hard HEAD~3
Почистить папку от результатов
компиляции
• git clean
Удалить ветку на сервере
• git push origin :brName
Удалить ветки у себя, когда на сервере
кто-то удалил ветки
• git remote prune origin
Стянуть коммит из другой ветки к себе
без мерджей
• git cherry-pick
Что бы почитать:
$ git help
$ git help <command>
Pro Git: http://git-scm.com/book
Git magic: http://www-cs-students.stanfo...
Git intro
Upcoming SlideShare
Loading in …5
×

Git intro

1,098 views

Published on

Git intro for SKB Campus

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,098
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Git intro

  1. 1. Git Intro Кампус 2013, Ижевск Андрей Лапин Диадок, Ижевск
  2. 2. Системы контроля версий • Распределенные • • • • Mercurial Bazaar Централизованные • • • • Git SVN TFS CVS Локальные системы управления • RCS
  3. 3. Базовые понятия • Репозиторий • Commit • Hash • Ветка
  4. 4. Клиенты: GitExtensions, TortoiseGit
  5. 5. Работа с удаленным репозиторием
  6. 6. Базовые операции • git init • git add <filename> • git commit -a –m <message> • git commit -a --amend –m <message> • git status • git log
  7. 7. git reflog
  8. 8. File moving by Git
  9. 9. Файл .gitignore Пример файла .gitignore: settings #exceptions !Settings/UnchangeableFiles/ [Bb]in [Dd]ebug*/ [Rr]elease*/ Thumbs.db */bin/*.exe *.bak *.log
  10. 10. Клонирование репозитория • git clone git@github.com:trurl123/test.git • git clone git@github.com:trurl123/test.git myfolder • SSH and HTTP
  11. 11. Операции с удаленным репозиторием • git fetch --all • git push [сервер] [ветка] • git pull • git remote add <alias> <url>
  12. 12. Хранение данных в Git • Папка .git • Снапшоты • Сжатие • Удаленные репозитории
  13. 13. Ветки
  14. 14. Ссылки на ревизии • Revisions • • • • • • • <sha1>, e.g. dae86e1950b1277e545cee180551750029cfe735, dae86e <refname> HEAD, ORIG_HEAD, MERGE_HEAD <refname>@{<date>}, e.g. master@{yesterday}, HEAD@{5 minutes ago} <refname>@{<n>} <rev>^, e.g. HEAD^, HEAD^1, HEAD^2 <rev>~<n>, e.g. master~3 • Ranges • • • • r ^r1 r1^@ r1^! • см. также «git help revisions»
  15. 15. Пример из крышек и тильд G H I / D J / E F | / | / | |/ B | C / / A A = B = A^ = A^0 = A^1 C = A^2 = A^2 D = A^^ E = B^2 = A^1^1 = A^^2 F = B^3 Ranges = A^^3 = A~1 = A~2 G = A^^^ = A^1^1^1 = A~3 H = D^2 = B^^2 = A^^^2 I = F^ = B^3^ = A^^3^ J = F^2 = B^3^2 = A^^3^2 = A~2^2 D D F ^G D ^D B B...C ^D B C C^@ F^! D G G H E G E I G H H D I H I J H D I J D F J D J F D F B E B C F B C F
  16. 16. Команды по работе с ветками • git merge brname • git rebase master
  17. 17. Merge
  18. 18. Подумайте, что вы вливаете в свою ветку • branch vs origin/branch
  19. 19. Rebase
  20. 20. Проблемы rebase • Не переписывайте ветки на сервере! • Не делать rebase после merge
  21. 21. Pull, merge and rebase • pull = fetch + merge • pull --rebase == fetch + rebase
  22. 22. Временные ветки • git stash • git stash apply
  23. 23. Жизненный цикл ветки (real) git checkout -b myBranch master ... commits git push git fetch git merge origin/master … fix after merge git checkout -B master origin/master git merge myBranch git push
  24. 24. Текущий коммит в ветке • git commit –m <message> • git pull --rebase • git push
  25. 25. ПРАКТИКА
  26. 26. Генерация SSH ключа $ ssh-keygen -t rsa -C "email@example.com" ... # Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter] $ clip < ~/.ssh/id_rsa.pub Account Settings -> SSH Keys -> Add SSH key $ ssh -T git@github.com >yes • См. https://github.com/kontur-edu/kampus-izh-201311/tree/master/01-git
  27. 27. Конфигурирование: настройки пользователя Имя пользователя: $ git config --global user.name "MyName" E-mail пользователя: $ git config --global user.email m@il.ru
  28. 28. Задание Впиши себя! https://github.com/trurl123/test
  29. 29. Примеры проблем и их решение
  30. 30. Откат изменений: отмена одного старого коммита git revert <hash> git log ↓ commit dcb4... Revert "+someone" This reverts commit 6460 commit 6460... +someone
  31. 31. Откат изменений: отмена нескольких последних коммитов git reset [--hard|--mixed] <commit> e.g.: git reset --hard HEAD~3
  32. 32. Почистить папку от результатов компиляции • git clean
  33. 33. Удалить ветку на сервере • git push origin :brName
  34. 34. Удалить ветки у себя, когда на сервере кто-то удалил ветки • git remote prune origin
  35. 35. Стянуть коммит из другой ветки к себе без мерджей • git cherry-pick
  36. 36. Что бы почитать: $ git help $ git help <command> Pro Git: http://git-scm.com/book Git magic: http://www-cs-students.stanford.edu/~blynn/gitmagic/intl/ru/ http://pcottle.github.io/learnGitBranching/

×