Знакомство с системой контроля версий исходного кода Git.
Git Hub# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
На этом уроке мы начинаем изучать систему контроля версий Git. В процессе курса расскажу для чего ее использовать, как пользоваться и что происходит во время каждой из команд. Каждое действие мы выполним дважды - один раз через Git, второй раз средствами операционной системы. А сейчас установим, если еще не установлены необходимые программы для прохождения данного курса. jdk и java: download git: download Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 28 мин. [Показать отчёт] Научился: как и прежде, с чистого листа. |
|||||
2 | git init |
1 тест |
|||
На этом уроке мы создадим «Зоопарк» папок. Выполним первые команды для git: “git init” и “git status”. Узнаем, чем отличаются папки Workdir, Stage area, Repository. Посмотрим, что находится внутри "папки .git". Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 57 мин. [Показать отчёт] Научился: git status - текущее положение дел. git init - инициализация пустого репозитория в текущей папке. on branch master - ваше текущее положение - на ветке мастер. СКВ - это уже не "свободно конвертируемая валюта" )), а Система Контроля Версий. ЦСКВ - централизованная СКВ - один сервер, он же репозиторий. Минус такого варианта: если накроется сервак - всем капут. РСКВ - распределённые СКВ. Каждый клиент тянет себе не только снимок файлов, но и весь репозиторий. Выход из строя сервака некритичен. Git — инструмент распределенной СКВ. GitHub — сервис (площадка) для проектов, использующих Git. |
|||||
3 | git add checkout |
3 теста |
|||
На этом уроке мы продолжим знакомиться с новыми командами в git: “git add” и “git checkout”. Проделаем это же в ручном режиме. Визуально увидим, как это все работает.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 52 мин. [Показать отчёт] Научился: git add Zoo.java - добавить файл на сцену для отслеживания изменений оного. Неподконтрольный прежде файл становится в новое состояние "под колпаком у Мюллера" и любое его изменение - трекится. Помните вороток трекинга у видеомагнитофонов? git checkout Zoo.java - восстановить файл взяв из Stage |
|||||
4 | git commit reset diff |
3 теста |
|||
На этом уроке мы поместим подготовленные файлы в хранилище (Repository). Потом достанем этот же файл из хранилища. Узнаем новые команды git: commit, reset и diff
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 29 мин. [Показать отчёт] Научился: git diff - если пусто, значит содержимое Workdir (1 этаж) равно содержимому Stage area (2 этаж) git commit -m Welcome - закинуть свой стейдж в Репозиторий под комментарием ( названием) Welcome При первом коммите ошибка гарантирована - не ввёл адрес электропочты и имя Подсказка есть и в видео, и в самом Git Bash, разобраться несложно. Второй git commit -m Welcome отработал на ура. Занятно, если набрать git при активном окне ютуба - кино складывается в миниокошко. Сначала не понял, что за фокус, затем снова не понял зачем эта фича. Узнал случайно, как применять, пока не придумал. ============== Если багу добавили в Workdir - откати командой ЧЕКАУТ А вот если ты багу пропустил уже на второй этаж(ошибочно дав добро на git add Zoo.java), в STAGE, то спасаться будешь из репозитория. git diff - сравнение ПЕРВОГО(Workdir) И ВТОРОГО (STAGE area) этажа git diff HEAD - сравнение ПЕРВОГО(Workdir) и ТРЕТЬЕГО(REPOSITORY) этажа git reset HEAD Zoo.java - взять исходник из архива (с ТРЕТЬЕГО этажа) и поместить содержимое на STAGE (2 этаж) |
|||||
5 | git commit zebra |
2 теста |
|||
На этом уроке мы продолжим изучать систему контроля за версиями git. Добавим новый файл в папку. Начнем его отслеживать средствами git.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 36 мин. [Показать отчёт] Научился: git add <название новосозданного файла> Новые файлы перед переносом в репозиторий требуется добавлять на сцену командой аДэДэ. Закоммитить (перенести в репозиторий с архивированием) без этого обязательного добавления не удастся. git commit -a -m Zebra -a значит все модифицированные файлы в директории необходимо добавить. |
|||||
6 | git ignore |
3 теста |
|||
На этом уроке мы откомпилируем и запустим наш зоопарк. Научимся избавляться с ненужными в репозитории файлами.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 51 мин. [Показать отчёт] Научился: Поправил в панели управления Windows переменные среды Path на мой правильный путь до джаваЦэ так: C:\Windows\System32;C:\Program Files\Java\jdk1.8.0_172\bin и компиляция в ГитБаше взлетела. git rm --cached Zoo.class - удалить со Сцены (STAGE) echo *.class > .gitignore - все файлы с расширением class поместить в игнорируемый файл git add .gitignore - не забываем добавить файл игнорируемых в трекинг для отслеживания его актуального состояния copy *.java ..\stage в батник - и файлы будут копироваться лишь с расширением java |
|||||
7 | git push clone |
2 теста |
|||
На этом уроке мы “отправим наш Зоопарк в Мадагаскар”, отправим на сервер, то что у нас получилось. Поработаем с GitHub.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 5 час. 7 мин. [Показать отчёт] Научился: git remote add origin https://github.com/DmitrySinitsin/Zoo.git - добавить алиас origin к проекту DmitrySinitsin/Zoo.git git remote rm origin - удалить ненужный алиас. git push -u orgin master - отправить действующий репозиторий (на локальном компе) на ГитХаб в своё хранилище origin - алиас(псевдоним) git clone https://github.com/DmitrySinitsin/Zoo.git - слить с ГитХаба с созданием подкаталога git clone https://github.com/DmitrySinitsin/Zoo.git . - без создания подкаталога, в корень отслеживаемой папки |
|||||
8 | hippo git fetch pull |
3 теста |
|||
На этом уроке мы продолжим разработку нашего зоопарка. Добавим бегемотиху Глорию. Несколько ссылок по работе с гитом: Про Git на пальцах и про ветки: https://habr.com/post/68341/ Про ежедневную работу с Git: https://habr.com/post/174467/ И официальная документация: https://git-scm.com/book/ru/v1/Ветвление-в-Git-Основы-ветвления-и-слияния Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 18 мин. [Показать отчёт] Научился: git push не отправит файлы из Workdir. Отправка действует лишь из локального репозитория в удалённый на Сервере ГитХаба. Everything up-to-date == нечего передавать. Your branch is ahead of 'origin\master' by 1 commit == ваша ветка имеет на один коммит больше, чем ветка мастер в репозитории Сервера. git push - так кратко допустимо, если репозиторий не был здесь создан, а загружен с Сервера. origin == https://github.com/DmitrySinitsin/Zoo.git git fetch - забрать файлы с Сервера ГитХаба в локальный репозиторий remote. git branch -a == показать все ветки git pull - синхронизировать Workdir c remote репозиторием (локальным) то есть стянуть оттуда все изменения. 10:54 - "те изменения, которые делал удалённый Бегемот" )) |
|||||
9 | git branch lion |
2 теста |
|||
На этом уроке мы продолжим знакомиться с системой контроля версий git. Познакомимся с ветками. Почитайте статью Vincent Driessen, автора git flow - удачной модели ветвления она из коробки уже поддерживается в SourceTree Оригинал статьи: https://nvie.com/posts/a-successful-git-branching-model/ Художественный перевод: https://habr.com/post/106912/ О применении в разработке: https://pelevin.pro/2016/04/18/gitflow/ О дальнейшем развитии этой идеи: https://habr.com/company/softmart/blog/316686/ Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 58 мин. [Показать отчёт] Научился: index == staging area commit == подписать код (лети, наш орёл!) push = послать широковещательное сообщение, любой способный - принимай и читай! git branch lion - создание новой ветки (бранчА) с именем Лайон (Лёва) git branch - показать все имеющиеся ветки git checkout lion - переключиться на ветку Лёва Иными словами, чекаутом слить содержимое Индекса(Stage Area) c именем lion в текущую WorkArea. Если ветки возвращённые командой git log перечислены через запятую, то они идентичны. git log --graph --all -decorate --online - краткая форма вывода лога git checkout lion && git checkout master - каталог меняется как по волшебству в режиме реального времени. |
|||||
10 | git branch giraffe |
|
|||
На этом уроке мы создадим ветку жирафа. Добавим его в наш зоопарк. И сделаем это двумя способами.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 48 мин. [Показать отчёт] Научился: создали Giraffe.java git status-ом проверили появление нового файла. добавили конструктор Жирафа в Зоопарк, откомпилировали, со всеми поздоровались. git add для Жирафа и git add для Зоопарка - утолкали их в Индекс (он же Сцена, он же Stage Area). В git status после аДэДэ новомодифицированнные файлы позеленели от счастья. Пока они были в каталоге не под присмотром Индекса, ходили они в красном. Гит коммит минус Эм Гираффе - заархивировали свою работу в локальный репозиторий для ответственного хранения. Гит лог минус минус грапх минус минус олл минус минус декорэйт минус минус онелине - сие начало рисовать псевдографикой разветвление веток, чего прежде не видел. copy-to-stage.bat == действие этого файла равноценно вызову команды git add |
|||||
11 | git merge giraffe lion |
2 теста |
|||
На этом уроке мы займемся объединением веток. Изучим для этого команду “git merge”. Сделаем это с помощью git.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 47 мин. [Показать отчёт] Научился: git merge master - объединить текущую ветку(на неё указывает стрелка HEAD -> ...) с веткой master Already up to date - объединять нечего, всё ноздря в ноздрю. Fast-forward - объединение простым добавлением недостающих строк в целевой ветке. Merge conflict in - указание файла, где есть конфликты для объединения веток. Если прозевал при коммите "минус эм" - вывалится окно текстового редактора vi (Первая версия была написана Биллом Джоем в 1976 году) с сообщением о Ваших деяниях и правильных путях выхода из сложившейся ситуации. Выход из vi - двоеточие + икс + Энтер Сложности: Узнал новое для себя. 1976 год прошлого двадцатого века... В то время наиболее распространённым был редактор ed. Поскольку он был довольно сложным для «простого смертного», George Coulouris разработал редактор em (editor for mortals — редактор для смертных). Билл Джой модифицировал редактор em и назвал его en, а позднее — он получил название ex, на котором и основан vi. Редактор писался для терминала ADM-3A, имевшего ограниченную клавиатуру: на ней не было клавиш-стрелок, а из модификаторов доступны только ⇧ Shift и Ctrl. Эти обстоятельства повлияли на выбор используемых в редакторе клавиш. |
|||||
12 | win merge |
1 тест |
|||
На этом уроке мы сделаем изменения из предыдущего урока средствами windows.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 46 мин. [Показать отчёт] Научился: cd .. - выйти на каталог выше. Не использовал, бил всегда сразу в корень )) Компилировать в Stage Area можно лишь в лабораторных условиях видеоурока. Синхронизация средствами ОС нагляднее, но ближе к ручной работе. Синхронизация средствами Git автоматизированнее. |
|||||
13 | pingwin |
2 теста |
|||
На этом уроке мы отправим наши изменения на GitHub и на FTP. Добавим новый класс в «неактуальную» по времени программу.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 13 мин. [Показать отчёт] Научился: git checkout -- Zoo.java - вернуть изменения относительно неверно созданного файла. Создавая новые сущности не ленись создавать новые ветки (git branch new_pingwin) git checkout XXX - команда переключения на ХХХ ветку и команда синхронизации с Индексом этой же ветки, если уже на ней. Сложности: Осознать, что неделя пролетела. |
|||||
14 | remote merge |
1 тест |
|||
На этом уроке мы попробуем решить проблему загрузки на сервер от созданного «Пингвина».
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 58 мин. [Показать отчёт] Научился: git push из подветки вернёт ошибку о том, что текущая ветка (current branch) не является веткой для загрузки (upstream branch). git push --set-upstream origin pingwin решает эту проблему и позволяет пуш для текущей подветки с установкой этой подветки "веткой для загрузки (upstream branch)". Если в удалённом репозитории на ГитХабе есть изменения в коде, которых нет в локальном репозитории, то при попытке git push будет возвращена ошибка об этом с предложением сначала сделать pull и сначала забрать себе те новые строки кода для синхронизации работы с удалёнными коллегами, а затем уже пушить свои вирши на ГитХаб. git merge --abort - отменяет начатое неудачно слияние. git branch -a -покажет все ветки. Выход из неудачного слияния - правка конфликтного файла, адэдэ, гиткоммит минус мЭ с адекватным комментарием о коммите. |
|||||
15 | win final |
1 тест |
|||
На этом уроке мы повторим приключение «Пингвина» используя систему windows и ftp. Бонус. Пройдите Git-практикум на сайте: https://katacoda.com/courses/git Крайне рекомендую, очень хороший ресурс! Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 34 мин. [Показать отчёт] Научился: Чтобы хранить директорию (каталог) под контролем версий Вам надо создать репозиторий. С Гитом Вы инициализируете репозиторий в корневой папке одного проекта. Используйте для этого команду git init После инициализации репозитория создаётся скрытая подпапка .git для хранения метаданных о работе Системы Контроля Версий. ================== Working Directory содержит последние скачанные из репозитория версии вместе со всеми изменениями, которые ещё предстоит закоммитить (отправить архивом в репозиторий на Вашем локальном диске). В процессе работы над кодом Вашего проекта все изменения делаются именно в Working Directory. Вы можете просматривать какие именно файлы подвергались изменениям после крайнего коммита в репозиторий. Для этого применяйте команду git status Ответ на эту команду называется "статус рабочего дерева"(working tree status) Все файлы являются "неотслеживаемыми" Гитом, пока не задано обратное. ================== Чтобы сохранить (или закоммитить) файлы в репозиторий Гита, Вам сначала придётся добавить их в Staging Area. Есть три пространства: рабочая директория, сцена и собственно репозиторий. Пользователи перемещают, иначе "продвигают", изменения из рабочего каталога(Working Directory) в промежуточную область(Staging Area), прежде чем вносить их в репозиторий. Один из ключевых подходов в Git заключается в том, что коммиты являются целенаправленными, небольшими и частыми. Промежуточная область(Staging Area) помогает поддерживать этот рабочий процесс, позволяя продвигать только определенные файлы за раз вместо всех изменений в вашем рабочем каталоге. git add имя_файла_с_расширением - этой командой добавляем файл в промежуточную область(Staging Area). ================== git status покажет состояние и рабочего каталога(Working Directory), и промежуточную область(Staging Area) в любой момент. ================== Как только файл был добавлен в промежуточную область, его необходимо зафиксировать в хранилище. Команда git commit -m 'commit message' помещает файлы из промежуточной области(Staging Area) в репозиторий и записывает время\дату, автора и комментарий. При этой операции будут зафиксированы только изменения, добавленные в область подготовки(Staging Area), любые файлы в рабочем каталоге(Working Directory), которые не были подготовлены, не будут включены. ================== Иногда есть определенные файлы или каталоги, которые вы никогда не захотите отслеживать, например, локальная конфигурация разработки. Чтобы игнорировать эти файлы, вы создаете файл .gitignore в корне хранилища. Файл .gitignore позволяет вам определять символы подстановки для файлов, которые вы хотите игнорировать, например * .tmp будет игнорировать все файлы с расширением .tmp. Любые файлы, соответствующие определенному шаблону, не будут отображаться в выводе состояния git и будут игнорироваться при попытке выполнить команду git add. |
|||||
16 | ФИНАЛЬНЫЙ КУРС |
без видео |
|||
Напишите отзыв об этом курсе.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 35 мин. [Показать отчёт] Научился: Я знаю карате, джиу-джитсу, кун-фу и ещё много разных страшных слов. Х) Здесь же история другая. Придя с просторов Интернета к Евгению на Видеошарп, через пол-года ежедневных занятий, ты начинаешь печатать глядя на монитор, а не бойко бацая по клавиатуре, чтоб все слышали, какой ты скорописец двумя пальчиками. Переспав с AJAX начинаешь ориентироваться в веб-программировании, поиграв в кубики и кружочки начинаешь понимать основы ООП. Много курсов есть, даже прикрутили к ним указатели об их уровне сложности, так что стенать о том, что как-то тут всё по-детски не получается. У меня, по крайней мере. Для тех, кому Демо-игры выглядят простоватыми, есть мега-курс "Шахматы on-line" https://www.videosharp.info/video/chess3 Уж там-то про лёгкость не особо слышно )) Курс Git Hub начал не особо представляя тему, практически с чистого листа. С Линуксом не знаком близко, контроль версий изредка делал "в лоб" архивируя каталог с проектом, при необходимости. К финалу курса проникся лёгкостью командной строки Гита в сравнении с аналогичным вариантом снятия контрольных точек с помощью файловых менеджеров операционной системы. Git это круто и удобно, если ваяешь что-то сложнее "Привет, мира". Проблем с пониманием не возникало, задание, выполняемое в командной строке, затем повторно демонстрировалось и с помощью файл-менеджера Total Commander либо окон Windows Explorer. Осталось дело за запоминанием и применением в работе. Курс отличный, прошел легко и с удовольствием. Автору спасибо за грамотно подобранный материал! Сложности: Появился интерес поставить на старый ноут Пингвина. Debian вроде бы Celeron-1,4GHz должен потянуть... |
|||||
Итого: 16 видеоуроков |
2 час. 42 мин. 27 тестов |
18 чел. | |||
Финалисты: Иван Воронин, Алексей, Дмитрий Че, Павел, Evgenii Kudriavtcev, Павел Демьянов, ser2018, Dmitry Sinitsin, Chip, vip, New programist, Яков, Anatoli, Булат, Tim, Александр, Tom, Алексей . |