Содержание
- 2. Мотивация
- 3. Единое место хранения кода Удобное объединение изменений от разных разработчиков История изменений с описанием и авторством
- 4. А зачем система контроля версий вам?
- 5. Систем контроля версий море… CVS SVN Git Perforce TFS Fossil Bazaar Mercurial Veracity
- 6. Распределенная Каждому по репозиторию Консольная Состоит из утилит командной строки Кроссплатформенная Много разных GUI Поддерживается хостингами
- 7. А кто уже пользовался Git? А другой системой контроля версий?
- 8. Как будем изучать?
- 9. GUIов много, на любой вкус и цвет, каждый со своими особенностями, а придется что-то выбрать Как
- 10. Примеры GUI на Git Extensions Тонкая надстройка над консолью с минимумом магии Удобные команды, управление с
- 11. Задания на Git Bash + Git Graph для Linux, Maс или Windows Как будем изучать? Задания
- 12. VS Code для разрешения конфликтов Показывает конфликт он как есть Подсветка конфликта, кнопки быстрых действий Подсвечивает
- 13. VS Code для редактирования Подсвечивает Markdown Умеет открывать папку Как будем изучать?
- 14. Особенностей и нюансов много, а времени мало Если освоить правила, в нюансах легко разобраться Сформулируем 10
- 15. Формат Правило и теория к нему Практические задания Синхронизация А потом много практики в реальной жизни,
- 16. S1. Все локально A1. Трехсторонний merge в три шага R2. Удаленное изменение — это push A2.
- 17. H1. Гибкое конфигурирование и качественная документация Гибкая настройка под любой процесс Документация ко всем командам Алиасы
- 18. Конфигурируется под команду и продукт У команд Git множество опций Поведение команд по умолчанию можно настраивать
- 19. Git должен знать, кто вносит изменения: git config --global user.name "John Doe" git config --global user.email
- 20. git help commit git commit --help git commit -h Чтобы не запоминать все опции команд! Git
- 21. Подсказки при неверных командах Полезно читать вывод хотя бы при освоении Git!
- 22. Полная запись: git branch --delete awesome-feature Короткая запись: git branch -d awesome-feature Полная усиленная запись: git
- 23. Через .gitconfig [alias] it = !git init && git commit -m 'Initial commit' --allow-empty st =
- 24. Через .gitconfig [core] autocrlf = true safecrlf = true Через команды git config --global core.autocrlf true
- 25. Через .gitconfig [core] autocrlf = input Через команды git config --global core.autocrlf input Даже если получено
- 26. Сохранять в репозиторий нужно только исходные файлы! Остальное — в игнор!
- 27. В любой папке и ее подпапках .gitignore Через .gitconfig [core] excludesFile Дополнительно в репозитории /.git/info/exclude Коллекция
- 28. H1. Гибкое конфигурирование и качественная документация Structure Actions Remote
- 29. S1. Все локально Все данные хранятся в локальных репозиториях, изменения между ними можно синхронизировать
- 30. Репозиторий – хранилище кода со всей историей изменений git init – создать репозиторий для папки Репозиторий
- 31. Клонирование Чтобы работать над существующим проектом надо скопировать репозиторий локально – склонировать git clone – склонировать
- 32. Fork на GitHub GitHub
- 33. Fork на GitHub Сделать форк
- 34. Bare-репозиторий — репозиторий без рабочей директории git init --bare – создать bare-репозиторий Обычно называется reponame.git, например
- 35. Задание 1. Init Repo Задание 2. Fork and Config
- 36. S1. Все локально H1. Гибкое конфигурирование и качественная документация Structure Actions Remote
- 37. S2. Хранятся состояния директории, постепенная сборка коммита Хранятся файлы, разница вычисляется на лету Commit index для
- 38. «Снимки» директории Working directory
- 39. Сохранение состояния Working directory
- 40. Еще сохранения Working directory
- 41. Загрузка состояния Working directory
- 42. Альтернативная ветка истории Working directory
- 43. Метаинформация Хэш-коммита Сообщение Информацию об авторе Время Родитель Данные Полное состояние директории Изменения по сравнению с
- 44. Метаинформация коммита
- 45. Полное состояние директории
- 46. Изменения по сравнению с родителем
- 47. Каждый коммит хранит структуру каталога и все файлы состояния директории Хранение файлов оптимизировано: файлы не хранятся
- 48. Working directory & Commit index Последний коммит Working directory
- 49. Working directory & Commit index Последний коммит Commit index = Staging area Working directory Для постепенной
- 50. Working directory & Commit index
- 51. Внесение изменений Working directory Commit index Последний коммит
- 52. Внесение изменений Working directory Commit index Последний коммит Редактирование
- 53. Внесение изменений Working directory Commit index Последний коммит git add init.md
- 54. Внесение изменений Working directory Commit index Последний коммит Редактирование
- 55. Working directory changes Commit index changes
- 56. Внесение изменений Working directory Commit index Последний коммит git add commit.md
- 57. Внесение изменений Working directory Commit index Последний коммит git commit
- 58. Working directory changes Commit index changes Commit message
- 59. Внесение изменений Последний коммит Commit index Working directory Редактирование git add . git commit
- 60. Отмена изменений Working directory Commit index Последний коммит git add commit.md
- 61. Отмена изменений Working directory Commit index Последний коммит git add commit.md git restore --staged commit.md
- 62. Отмена изменений Working directory Commit index Последний коммит git restore --staged commit.md git add commit.md
- 63. Отмена изменений Working directory Commit index Последний коммит Редактирование
- 64. Отмена изменений Working directory Commit index Последний коммит Редактирование git restore --worktree commit.md
- 65. Отмена изменений Working directory Commit index Последний коммит Редактирование git restore --worktree commit.md restore не может
- 66. Отмена изменений Working directory Commit index Последний коммит Редактирование v2 v1
- 67. Отмена изменений Working directory Commit index Последний коммит Редактирование v2 v1 git restore --worktree commit.md
- 68. Отмена изменений Working directory Commit index Последний коммит Редактирование v1 v1 git restore --worktree commit.md restore
- 69. Отмена изменений Последний коммит Commit index Working directory Редактирование git add . git commit git restore
- 70. Отмена изменений по-старому Последний коммит Commit index Working directory Редактирование git add . git commit git
- 71. Отмена изменений Последний коммит Commit index Working directory Редактирование git add . git commit git restore
- 72. Один файл с разными версиями
- 73. Working directory changes Commit index changes Commit message
- 74. Удобный алиас git config --global alias.st "status -sb"
- 75. Задание 3. Commits
- 76. S1. Все локально S2. Хранятся состояния директории, постепенная сборка коммита H1. Гибкое конфигурирование и качественная документация
- 77. S3. Манипуляции через ссылки, нет ссылки — в мусор HEAD — текущая ссылка, tag — фиксированная
- 78. Указывает на коммит, относительно которого выполняются операции с ним связан Commit index и Working directory в
- 79. Именованная ссылка, привязанная к конкретному коммиту Псевдоним коммита Применяется для обозначения версий Полезен при манипуляциях над
- 80. Движущаяся ссылка, которая сдвигается вместе с HEAD, если тот на нее указывает Branch f1 HEAD master
- 81. Движущаяся ссылка, которая сдвигается вместе с HEAD, если тот на нее указывает Branch f1 HEAD master
- 82. Движущаяся ссылка, которая сдвигается вместе с HEAD, если тот на нее указывает Получающаяся за этой ссылкой
- 83. Каждой фиче – отдельная ветка
- 84. Detached HEAD f1 HEAD master f2 HEAD может указывать не только на ветку, но и непосредственно
- 85. Что произойдет после коммита? f1 HEAD master f2
- 86. Коммит без движения ветки f1 master f2 Коммит всегда происходит в HEAD, но если HEAD не
- 87. Ветки и теги в Git Extensions
- 88. Ветки и теги в Git Graph
- 89. Ветки и теги в Git Bash
- 90. Удобный алиас git config --global alias.graph "log --oneline --decorate --graph --all"
- 91. Команда checkout может перенести HEAD на какую-нибудь ветку Checkout на ветку f1 master HEAD f2
- 92. Команда checkout может перенести HEAD на какую-нибудь ветку Checkout на ветку f1 master HEAD f2
- 93. Команда checkout может перенести HEAD на любой коммит, причем получится detached HEAD Checkout на коммит f1
- 94. Команда checkout может перенести HEAD на любой коммит, причем получится detached HEAD Checkout на коммит f1
- 95. Checkout старается перенести локальные изменения, либо не выполняется
- 96. Switch — новая команда, задуманная как замена для checkout
- 97. Команда reset может перенести HEAD на любой коммит, причем захватывает с собой ветку, на которую указывает
- 98. Команда reset может перенести HEAD на любой коммит, причем захватывает с собой ветку, на которую указывает
- 99. Reset в режиме hard затирает локальные изменения Пока этого достаточно!
- 100. Если на коммит есть ссылка: HEAD, tag, branch – то он показывается, а иначе скрывается Если
- 101. Помните выполнение reset --hard? f1 master HEAD f2
- 102. Вот это уже мусор f1 master HEAD f2
- 103. Выглядеть будет так f1 master HEAD f2
- 104. Если потерялся коммит в ходе манипуляций, то он не удален и его можно найти Если закоммичено
- 105. Все перемещения ссылок логируются и хэши всех видимых когда-либо ревизий оседают в этих логах
- 106. Reflog в Git Extensions
- 107. Reflog в консоли
- 108. Отмечать дорогие сердцу коммиты тегами перед сложными манипуляциями Помнить про особенность git log. По умолчанию показывает
- 109. A / \ / \ B C /| / | D E Относительная адресация коммитов A
- 110. А это точно надо запомнить?
- 111. А это точно надо запомнить? Нет!
- 112. Удобный алиас git config --global alias.undo "reset --soft HEAD^" Эта команда отменяет commit, но про режим
- 113. Задание 4. Tag Задание 5. Feature Branches
- 114. S1. Все локально S2. Хранятся состояния директории, постепенная сборка коммита S3. Манипуляции через ссылки, нет ссылки
- 115. A1. Трехсторонний merge в три шага Два состояния можно объединить через merge, mergetool и commit Участвуют
- 116. Разрабатывать в отдельных ветках правильно, но в конце концов надо объединить функционал в одной версии Слияние
- 117. Разрабатывать в отдельных ветках правильно, но в конце концов надо объединить функционал в одной версии Значит
- 118. Как объединить изменения? A.txt D.txt A.txt B.txt D.txt A.txt C.txt master f2 ?
- 119. Как объединить изменения? A.txt D.txt A.txt B.txt D.txt A.txt C.txt D.txt master f2 A.txt B.txt C.txt
- 120. Общий родитель 1 4 2 3 master f2 Общий родитель для master и f2
- 121. А если был изменен один и тот же файл?
- 122. Как объединить изменения? master f2 ?
- 123. Как объединить изменения? master f2
- 124. А если одна и та же строчка?
- 125. contact : [email protected] ======= please contact us at [email protected] >>>>>>> iss53:index.html Конфликт
- 126. contact : [email protected] ======= please contact us at [email protected] >>>>>>> f2:index.html Конфликт Создается текстовый блок, содержащий
- 127. Необходимо заменить все «объединенные» текстовые блоки на правильное содержимое Стратегии Взять один вариант Взять второй вариант
- 128. Разрешение конфликта в VS Code
- 129. В конфликтах HEAD указывает на current Другая ветка — это incoming При merge HEAD указывает на
- 130. Current и Incoming
- 131. Надо объединять на уровне списка файлов и на уровне содержимого файлов Нужно знать две объединяемые версии,
- 132. Алгоритм слияния
- 133. Алгоритм слияния
- 134. Алгоритм слияния Можно остановиться, а затем продолжить Git Extensions автоматически переходит к следующему шагу
- 135. Как поведут себя ветки? 1 4 2 3 master f2 5
- 136. Как поведут себя ветки? 1 4 2 3 master f2 5 HEAD
- 137. Как поведут себя ветки? 1 4 2 3 master f2 5 HEAD Сдвинется ветка, на которой
- 138. Слияние в Git Extensions
- 139. Слияние в Git Graph
- 140. А что если обратно влить? 1 4 2 3 master f2 5 HEAD
- 141. Fast-Forward Merge 1 3 2 4 master f2 5 HEAD Нет смысла создавать коммит – просто
- 142. merge --no-ff 1 3 2 4 master f2 5 HEAD Можно заставить Git создать новый коммит
- 143. Иногда вследствие неведомых действий состояние директории полно конфликтов, merge не завершен и его хочется отменить А
- 144. Иногда вследствие неведомых действий состояние директории полно конфликтов, merge не завершен и его хочется отменить Переходим
- 145. Иногда вследствие неведомых действий состояние директории полно конфликтов, merge не завершен и его хочется отменить Переходим
- 146. Иногда вследствие неведомых действий состояние директории полно конфликтов, merge не завершен и его хочется отменить git
- 147. Лишние файлы после merge? При создании конфликта Git генерирует .orig-файлы с версиями до слияния Они исчезнут
- 148. Задание 6. Merge Conflict Задание 7. Hidden Conflict Задание 8. Fast-Forward Merge
- 149. S1. Все локально A1. Трехсторонний merge в три шага S2. Хранятся состояния директории, постепенная сборка коммита
- 150. A2. rebase, cherry-pick и amend, чтобы пересоздать историю Нельзя переписать историю — можно создать новую
- 151. Даже если кажется, что Git редактирует коммиты, на самом деле он создает новые
- 152. Amend — англ. Вносить правки Amend Commit Последний коммит Commit index Working directory Хочется дополнить последний
- 153. Amend Commit Изменения из Commit index и старого коммита теперь в новом коммите Старый коммит остался,
- 154. Слияния порождает лишние коммиты, а история становится нелинейной Rebase master HEAD f2
- 155. Слияния порождает лишние коммиты, а история становится нелинейной Хочется получать линейную историю! Менять коммиты нельзя –
- 156. Rebase создает новые коммиты 1 4 2 3 master HEAD f2 1 4 2’ 3’ master
- 157. Те же изменения на новой «базе» 1 4 2’ 3’ 2 3 1.txt 2.txt 3.txt 4.txt
- 158. Rebase по шагам 1 4 master HEAD f2 2 3
- 159. Rebase по шагам 1 4 master HEAD f2 2 3
- 160. Rebase по шагам 1 4 2’ master HEAD f2 2 3
- 161. Rebase по шагам 1 4 2’ 3’ master HEAD f2 2 3
- 162. Изменения в коммите 4, новой базе, могут конфликтовать с изменениями в 2 и в 3 Следовательно,
- 163. В конфликтах HEAD указывает на current Другая ветка — это incoming После начала rebase HEAD перемещается
- 164. После решения конфликтов — продолжение git rebase --continue
- 165. Иногда приходит понимание, что не надо было ввязываться в этот rebase с кучей конфликтов при переносе
- 166. Позволяет указать, как применять каждый коммит Например, можно делать squash всех переносимых коммитов в один Интерактивный
- 167. Сценарий интерактивного rebase Обычный вариант С объединением коммитов
- 168. Rebase в Git Extensions
- 169. Rebase в Git Graph
- 170. Позволяет создать копию изменений произвольного коммита в новом месте cherry picking — идиома, означающая взять лучшее
- 171. Позволяет создать копию изменений произвольного коммита в новом месте cherry picking — идиома, означающая взять лучшее
- 172. Задание 9. Hot Rebase Задание 10. Reflog
- 173. S1. Все локально A1. Трехсторонний merge в три шага A2. rebase, cherry-pick и amend, чтобы пересоздать
- 174. R1. Доступен fetch коммитов любого репозитория в любой момент
- 175. Клонирование https://repos/repo git clone https://repos/repo
- 176. origin https://repos/repo origin = https://repos/repo git clone https://repos/repo
- 177. remote https://repos/repo origin = https://repos/repo
- 178. Таблица remote https://repos/repo origin = https://repos/repo arnold = https://arnold/repo https://arnold/repo Список «кликух» для дружественных репозиториев
- 179. Remote в Git Extensions
- 180. Remote в Git Extensions
- 181. Remote в консоли
- 182. Обмен изменениями 1 master
- 183. Появился клон 1 master 1 master origin/master
- 184. Прошло время 1 f1 2 3 master 4 5 1 f2 6 master 7 8 origin/master
- 185. А что если в правый добавить из левого? 1 f1 2 3 master 4 5 1
- 186. А что если в правый добавить из левого? origin/f1 2 3 origin/master 4 5 1 f2
- 187. fetch – операция получения изменений из другого репозитория Это безопасная операция за счет неизменности истории В
- 188. Все же, что здесь делать? origin/f1 2 3 origin/master 4 5 1 f2 6 master 7
- 189. Rebase локальной ветки origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’ master
- 190. Теперь все хорошо origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’ master
- 191. Задание 11. Fetch From Remote Задание 12. Interactive Rebase Задание 13. Cherry Pick
- 192. S1. Все локально A1. Трехсторонний merge в три шага A2. rebase, cherry-pick и amend, чтобы пересоздать
- 193. R2. Удаленное изменение — это push
- 194. Надо отправить изменения origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’ master
- 195. Применим push origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’ master
- 196. Применим push 2 3 origin/master 1 6’ master Раз master можно влить в origin/master через fast-forward
- 197. Отправляет коммиты в удаленный репозиторий Сдвигает ветки в удаленном репозитории Требует права на запись в удаленный
- 198. Удаление ветки – это тоже push, только другой git push -d В Git Extensions разница между
- 199. Добавление или удаление тегов в удаленном репозитории — это тоже push git push tag git push
- 200. Ситуация без rebase origin/f1 2 3 origin/master 4 5 1 f2 6 master 7 8
- 201. Fast-Forward Merge невозможен 2 3 origin/master 1 6 master
- 202. Force Push может помочь… 2 3 origin/master 1 6 master
- 203. Force Push заставит ветку сдвинуться 2 3 origin/master 1 6 master
- 204. Force Push заставит ветку сдвинуться 2 3 origin/master 1 6 master Коммиты будут потеряны Если их
- 205. Никогда не делай Force Push в master Со своими ветками делай что хочешь
- 206. Реалистичный пример
- 207. Картина мира первого разработчика 2 3 origin/master 1 2’, 3’ master
- 208. Картина мира второго разработчика f3 2 3 master 9 1 origin/master
- 209. Худшие ожидания второго f3 2 3 master 9 1 10 origin/master Легко решается: FF merge для
- 210. Но первый делает подлянку 2 3 origin/master 1 2’, 3’ master
- 211. Что видит второй после fetch f3 2 3 master 9 1 origin/master 2’, 3’ Неожиданный подарок:
- 212. А что если второй будет быстрее? f3 2 3 master 9 1 origin/master
- 213. Вольет свою ветку в master и запушит? f3 2 3 master 9 1 origin/master Работа сделана!
- 214. Затем первый в неведении делает подлянку 2 3 origin/master 1 2’, 3’ master
- 215. Итоговая картина origin/f3 2 3 9 1 origin/master 2’, 3’ master
- 216. Итоговая картина origin/f3 2 3 9 1 origin/master 2’, 3’ master Изменения второго разработчика не влиты
- 217. Итоговая картина origin/f3 2 3 9 1 origin/master 2’, 3’ master Изменения второго разработчика не влиты
- 218. Пристальный взгляд на проблему 2 3 9 1 origin/master 2’, 3’ master origin/master
- 219. Пристальный взгляд на проблему 2 3 9 1 origin/master 2’, 3’ master origin/master Надо запрещать Force
- 220. Никогда не делай Force Push Не делай Force Push With Lease в master Со своими ветками
- 221. Удобный алиас git config --global alias.please "push --force-with-lease"
- 222. Задание 14. Push
- 223. S1. Все локально A1. Трехсторонний merge в три шага R2. Удаленное изменение — это push A2.
- 224. R3. Явное сопоставление локальных веток с upstream
- 225. Upstream repository GitHub
- 226. Upstream repository GitHub
- 227. Никак – надо всегда прописывать обе ветки явно Должно совпадать имя Есть внутренняя таблица сопоставления Git
- 228. Для основного репозитория Используется сопоставление из таблицы При push новой ветки достаточно указать намерение git push
- 229. Как создать привязку для f1? origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’
- 230. Как создать привязку для f2? origin/f1 2 3 origin/master 4 5 1 f2 7 8 6’
- 231. Удобный алиас git config --global alias.pushup "push -u origin HEAD"
- 232. Upstream mapping в Git Extensions
- 233. Upstream mapping в консоли Local branch Upstream branch Remote name
- 234. git pull origin = git fetch + git merge origin/ git pull --rebase origin = git
- 235. Либо fast-forward merge, либо без merge С помощью опций: pull --ff-only Установить для pull по умолчанию:
- 236. Удобный алиас git config --global alias.pure "pull --rebase --autostash"
- 237. Задание 15. Upstream
- 238. S1. Все локально A1. Трехсторонний merge в три шага R2. Удаленное изменение — это push A2.
- 239. A3. stash, reset, revert для управления изменениями Изменения можно временно припрятать Можно получить разницу между любыми
- 240. Что произойдет при влитии f1 в f2?
- 241. Произойдет конфликт
- 242. Что произойдет при влитии f1 в f2?
- 243. Бесконфликтное слияние
- 244. Почему?
- 245. Состояния слева и справа совпадают ABC ABC ABC f1 f2 А история не имеет значения
- 246. Каждый коммит хранит структуру каталога и все файлы состояния директории Хранение файлов оптимизировано: файлы не хранятся
- 247. Diff можно получить между любыми коммитами 2 3 1 5 6 4
- 248. Diff можно получить между любыми коммитами 2 3 1 5 6 4 A.txt B.txt D.txt A.txt
- 249. Что изменится при переходе от 4 к 6? 2 3 1 5 6 4 A.txt B.txt
- 250. Что изменится при переходе от 6 к 4? 2 3 1 5 6 4 A.txt B.txt
- 251. reset --hard HEAD f1 HEAD f1
- 252. Переносит ветку вслед за HEAD Выставляет индекс и директорию согласно коммиту, устраняет разницу reset --hard
- 253. reset --hard A.txt B.txt A.txt A.txt A.txt B.txt B.txt B.txt
- 255. reset --mixed HEAD f1 HEAD f1
- 256. Переносит ветку вслед за HEAD Задает индекс согласно коммиту Оставляет разницу между исходным и новым состоянием
- 257. reset --mixed A.txt B.txt A.txt A.txt A.txt B.txt B.txt A.txt Δ WD: +A, -B Δ CI:
- 258. Working directory changes Commit index changes
- 259. reset --soft HEAD f1 HEAD f1
- 260. Переносит ветку вслед за HEAD Не задает ни индекс, ни директорию согласно коммиту Оставляет разницу между
- 261. reset --soft A.txt B.txt A.txt A.txt A.txt B.txt A.txt A.txt Δ WD: +- Δ CI: +A,
- 262. Working directory changes Commit index changes
- 263. Удобный алиас git config --global alias.undo "reset --soft HEAD^"
- 264. Тайник для временного сохранения изменений После сохраненные изменения можно восстановить в том же или в другом
- 265. Неудачные изменения одного коммита можно отменить противоположными изменениями в следующем коммите Revert + master HEAD
- 266. Неудачные изменения одного коммита можно отменить противоположными изменениями в следующем коммите Revert + - master HEAD
- 267. Неудачные изменения одного коммита можно отменить противоположными изменениями в следующем коммите Revert + - master HEAD
- 268. Revert полезен, когда надо отменить изменение, а перестраивать историю нельзя
- 269. Задание 16. Stash Задание 17. Hard Reset Задание 18. Soft Reset
- 270. S1. Все локально A1. Трехсторонний merge в три шага R2. Удаленное изменение — это push A2.
- 271. Разное
- 272. Что такое Pull Request GitHub
- 273. Изменения в локальном репозитории GitHub f1
- 274. Отправка изменений в свой удаленный GitHub f1 f1
- 275. PR – запрос на fetch + merge GitHub f1 f1
- 276. Если PR принят, то fetch GitHub f1 f1 f1
- 277. Если PR принят, то merge GitHub f1 f1 master
- 278. Что такое Merge Request GitLab
- 279. Изменения в локальном репозитории GitLab f1
- 280. Отправка изменений в удаленный GitLab f1 f1
- 281. MR – запрос на merge GitLab f1 f1
- 282. Если MR принят, то merge GitLab f1 master
- 283. Картина для централизованного репозитория https://repos/repo https://arnold/repo https://brayan/repo Здесь создаются коммиты Этот репозиторий обрабатывает пуши и отдает
- 284. Получить последние изменения Создать локальную ветку Разработать в ней фичу Получить последние изменения Влить мастер в
- 285. Блиц
- 286. Надо подключить Git к папке, в который ты делаешь тестовое задание
- 287. Надо загрузить локальный репозиторий с тестовым заданием на GitHub для проверки
- 288. Надо подключиться к разработке сервиса в отдельном репозитории
- 289. Надо начать разработку новой фичи
- 290. Сделаны некоторые изменения, надо их сохранить в репозитории
- 291. Ты забыл добавить кое-что в последний коммит, а надо
- 292. Надо сделать так, чтобы новая фича была доступна для тестирования
- 293. Тестировщик попросил, чтобы последние исправления из master тоже были в ветке с фичей
- 294. При влитии исправлений из master возникли конфликты
- 295. Пора сделать релиз фичи, у вас фичи релизятся из master
- 296. Надо помочь другому разработчику сделать фичу
- 297. За день ты сделал некоторые изменения и решил ими поделиться
- 298. Оказалось, что твой напарник тоже сделал изменения Надо их получить, а затем опубликовать свои изменения
- 299. На следующий день ты продолжил работать над фичей, но тебя срочно попросили починить опечатку прямо в
- 300. Ты поправил опечатку, закоммитил в master и получил изменения в origin/master Ты решил переключиться на origin/master,
- 301. Ты вернулся к фиче, которую делал с другим разработчиком
- 302. У твоего напарника сегодня выходной Ты доделал изменения, о которых вы договаривались Их надо сохранить перед
- 303. Ты начал делать новую задачу и сделал первый коммит Но понял, что забыл завести ветку, а
- 304. Разработка не клеилась… Ты сделал десяток коммитов, перед тем как понял, как решать задачу Чтобы избежать
- 305. Чтобы список веток был коротким, ты решил удалить влитые локальные ветки
- 306. Бурная неделя закончилась Пора отдыхать!
- 308. Скачать презентацию





















![Через .gitconfig [alias] it = !git init && git commit -m 'Initial](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1089887/slide-22.jpg)
![Через .gitconfig [core] autocrlf = true safecrlf = true Через команды git](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1089887/slide-23.jpg)
![Через .gitconfig [core] autocrlf = input Через команды git config --global core.autocrlf](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1089887/slide-24.jpg)

![В любой папке и ее подпапках .gitignore Через .gitconfig [core] excludesFile Дополнительно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1089887/slide-26.jpg)























































































































































































































































































Алгоритмы и программирование
Назначение и функции текстового процесса
Weather definitions
Запуск TDD LTE2300 на оборудовании AirScale
CorelDRAW
Тіл сөйлеген сайын жетіледі, жазған сайын қалыптасады. Тілдің тынысы сөйлеген кезде ғана ашылады
Схемотехника электронных устройств
Своя игра Безопасный интернет
Цифровые информационные модели. Инжиниринговый сервис нового поколения
Зависимость от социальных сетей
ВКР: Проектирование распределённой мультисервисной сети по технологии GPON
Данные PHP
КиберПолигон
Информационно-аналитический инструментарий в системе информационного обеспечения функционирования фирмы
Арифметические операции в позиционных системах счисления
Как написать грамотный PR-текст для социальных сетей: практические советы с примерами
Информационная безопасность электронных платежных систем
Вероятностный подход к определению количества информации
Убираем складки
Space Calendar Randomiser
Распределение функциональных требований безопасности
Прототипы. Наследование
Сервис Learningapps.org – разработка мультимедийных интерактивных упражнений
Основные понятия ООП
Lektsia_2 (1)
Web Live z Amway Academy to internetowe szkolenie dostępne dla wszystkich przedsiębiorców
Enterprise software development
Презентация на тему Моделирование физических процессов