Similar presentations:
Git. Working directory
1. Git
Иван Домашних2. Базовые понятия
3. Working directory
4. Modification
5. Commit
Commit hashCommit message
Author
Date
6. History
7. Repository
repository + working directorytest/.git – repository + working directory
test.git – bare repository
8. Внесение изменений
9. add to staging area and commit
working directorygit add .
staging area (index)
git commit
repository
10. checkout file or reset file
working directorygit checkout filename
staging area (index)
git reset filename
repository
11. revert commit
git revert12. move & remove
move & removegit mv – переименовывает/перемещает файл*
git rm – удаляет файл
* Git прекрасно умеет отслеживать изменения сам,
* поэтому можно перемещаться файлы любимым способом
13. get status of working directory
# Edit hello.pygit status
# hello.py is listed under "Changes not staged for commit"
git add hello.py
git status
# hello.py is listed under "Changes to be committed"
git commit
git status
# nothing to commit (working directory clean)
14. log history
git log -n <limit>git log --oneline
git log --author="<pattern>“
git log --graph --decorate --oneline
git log --graph --decorate --oneline --all
git log --pretty=format:\"%h %ad | %s%d [%an]\" -graph --date=short
15. diff
git diff – разница между working directory и indexgit difftool – разница с помощью заданного тула
git difftool --gui – разница в GUI-туле
16. help
git help commitgit commit --help
git commit -h
17. Метки и ветки
18. HEAD
HEAD19. checkout to revision
git checkout <revision>HEAD
20. tag
git tag “v1.1”HEAD
v1.1
21. branch
HEADmaster
master – ветка по умолчанию
22. Развитие фичи
HEADCoolFeature
master
23. Развитие фичи
HEADCoolFeature
master
24. Развитие фичи
HEADCoolFeature
master
25. Что будет при коммите?
FeatureFeature
Feature
HEAD
master
HEAD
Feature
HEAD
HEAD
master
master
master
26. checkout branch
CoolFeaturemaster
HEAD
27. checkout branch
git checkout CoolFeatureCoolFeature
master
HEAD
28. create and checkout branch
git checkout –b CoolFeatureHEAD
HEAD
CoolFeature
29. merge
masterHEAD
30. Fast Forward Merge
CoolFeaturemaster
HEAD
31. Fast Forward Merge
CoolFeaturemaster
HEAD
32. rebase
HEADCoolFeature
master
33. rebase
Achtung! Команда меняет историюHEAD
CoolFeature
master
34. cherry-pick
CoolFeaturemaster
HEAD
35. cherry-pick
git cherry-pick <commit-hash>CoolFeature
master
HEAD
36. branch delete
CoolFeaturemaster
HEAD
37. branch delete
git branch –d “CoolFeature”master
HEAD
38. Конфликт
<<<<<<< HEAD:index.html<div id="footer">contact :
[email protected]</div>
=======
<div id="footer">
please contact us at [email protected]
</div>
>>>>>>> iss53:index.html
39. Reflog, gc
40. Операции над репозиториями
41. init
42. clone
git clone https://repos/repo.git43. Remotes
https://repos/repo.gitorigin = https://repos/repo.git
44. Remotes
https://repos/repo.githttps://fedya/repo.git
origin = https://repos/repo.git
fedya = https://fedya/repo.git
45. Remote branches
origin/f1origin/master
master
46. fetch
origin/mastermaster
47. fetch
origin/mastermaster
48. fetch
git fetchorigin/f1
master
origin/master
49. Что делать?
origin/f1#1 Новая ветка
master
origin/master
#2 Удаленные
изменения
50. #1 Новая ветка
origin/f1…
git checkout -b f1
?
51. #1 Новая ветка
origin/f1f1
…
git checkout -b f1
?
52. Начинаем править
origin/f1…
f1
#3 Локальные
изменения
53. #3 Локальные изменения
origin/f1…
git
?
f1
54. #3 Локальные изменения
f1origin/f1
…
git
?
55. Таблица веток
$ git branch -vvf1
7e424c3 [origin/f1]
master 1ae2a45 [origin/master]
f2
5ea463a
upstream branch or tracking branch
56. checkout upstream
origin/f1…
git checkout -b f1 origin/f1
git checkout --track origin/f1
git checkout -b f1
57. checkout upstream
origin/f1…
git checkout -b f1 origin/f1
git checkout --track origin/f1
git checkout -b f1
f1
58. push
origin/mastermaster
git push
59. push
origin/mastermaster
git push
60. Что делать?
…master
origin/master
#2 Удаленные
изменения
61. #2 Удаленные изменения
git merge origin/master?
…
master
origin/master
62. #2 Удаленные изменения
git merge origin/master?
…
master
origin/master
63. pull
origin/mastermaster
git pull origin =
git fetch + git merge origin/<current_branch>
64. pull
origin/mastermaster
git pull origin =
git fetch + git merge origin/<current_branch>
65. pull
origin/mastermaster
git pull origin =
git fetch + git merge origin/<current_branch>
66. Как начать фичу?
origin/masterf2
#1 Нет upstream
67. #4 Нет upstream
origin/masterorigin/f2
f2
git push
?
68. push ветки
origin/masterorigin/f2
f2
git push <remote> <localBranch>:<remoteBranch>
git push origin f2:f2
git push -u origin HEAD
69. Удаление ветки
Локальноgit branch -d <branchName>
Удаленно
git push origin --delete <branchName>
git push origin :<branchName>
70. Конфигурирование
71. Конфигурирование
git config --system%ProgramFiles%\Git\mingw64\etc\gitconfig
git config --global
%USERPROFILE%\.gitconfig
git config
<repo>/.git/config
72. Настройка авторства
.gitconfig[user]
name = username
email = [email protected]
команды
git config --global user.name Ivan Domashnikh
git config --global user.email [email protected]
73. Настройка для Windows
.gitconfig[core]
autocrlf = true
safecrlf = true
команды
git config --global core.autocrlf true
git config --global core.safecrlf true
autocrlf – преобразование \r\n в \n
safecrlf – проверка обратимости преобразования \r\n в \n
74. Выбор текстового редактора
.gitconfig[core]
editor = notepad
будет использоваться для ввода commit message
75. Выбор merge tool
.gitconfig[merge]
tool = TortoiseMerge
позволяет решать конфликты
76. Разрешение конфликта в TortoiseMerge
77. Git Alias
.gitconfig[alias]
co = checkout
ci = commit
st = status
br = branch
hist = log --pretty=format:\"%h %ad | %s%d
[%an]\" --graph --date=short
type = cat-file -t
dump = cat-file –p
undo = reset --hard HEAD~1
sm = submodule
78. Bash Alias
%USERPROFILE%\.bashrcalias less='less -r'
# --show-control-chars: help showing Korean or accented
characters
alias ls='ls -F --color --show-control-chars'
alias ll='ls -l'
alias gs='git status '
alias ga='git add '
alias gb='git branch '
alias gc='git commit'
alias gd='git diff'
alias go='git checkout '
alias gk='gitk --all&'
alias gx='gitx --all'
alias got='git '
alias get='git '
79. Git Bash везде
Если добавить C:\Program Files\Git в PATH,то git-bash будет доступен через Win+R и адресную строку
Проводника
80. Игнорирование файлов
.gitconfig[core]
excludesFile
для репозитория
<repo>/.git/info/exclude
в любой папке и ее подпапках
.gitignore
81. OpenSSH
1. выполнить в Git Bashssh-keygen -t rsa -C “keyname”
2. найти открытый ключ %USERPROFILE%\.ssh\id_rsa.pub
3. Зарегистрировать открытый ключ на сервере
82. PuTTY SSH
Git Extensions может использовать как PuTTY, так OpenSSH1. открыть в Git Extensions /Tools/PuTTY/Generate or
import key
2. сгенерировать ключ SSH-2 RSA, нажав Generate, а затем
поводив мышкой вплоть до генерации ключа
3. открытый ключ появится прямо в диалоговом окне – его
следует сохранить и зарегистрировать на сервере
4. на диск следует сохранить файл с расширением .ppk
5. теперь при выполнении clone/fetch/push можно нажать
Load SSH key и выбрать для использования закрытый
ключ *.ppk
83. Доверенные узлы
может требоваться доверие к удаленному репозиториюсписок доверенных
%USERPROFILE%\.ssh\known_hosts
для добавления в доверенные
выполнить в Git Bash
ssh <host>
e.g.
ssh github.com
для подтверждения соединения ввести
yes
84. Напоследок
85. amend
Можно добавить изменения в уже сделанныйкоммит
git commit --amend
86. reflog
Позволяет отобразить историю перемещенийHEAD
Спасает, когда на нужный коммит не указывает ни
тэг, ни ветка
git reflog
247ed61 HEAD@{0}: commit: Fix bug
b7cad06 HEAD@{1}: checkout: moving from master to coolfeature
b7cab06 HEAD@{2}: clone: from https://github.com/awesomeapplication
87. clean
Удаление недобавленных в git файловgit clean
88. reset
softпереносит HEAD и ветку
mixed
+ переписывает Index
hard
+ переписывает WD
89. flow
90. Чтиво
Классный практический курс на русскомhttps://githowto.com/ru
Про remote branches
Глава в Pro Git
Про reset
https://git-scm.com/blog/2011/07/11/reset.html
Основные фичи с картинками на английском
https://www.atlassian.com/pt/git/tutorial
Pro Git
https://git-scm.com/book/ru/v2
91. Кач
Githttps://git-scm.com/
Git Extensions
https://sourceforge.net/projects/gitextensions/
TortoiseGit
https://tortoisegit.org/
SourceTree
https://www.sourcetreeapp.com/