https://github.com/frontendlovers/git-for-beginners
Вичерпний конспект для самоперевірки по курсу Нікіти Тимошенка "ПОВНИЙ КУРС по GIT та GITHUB українською"
https://github.com/frontendlovers/git-for-beginners
command-line git git-bash github shell
Last synced: 2 months ago
JSON representation
Вичерпний конспект для самоперевірки по курсу Нікіти Тимошенка "ПОВНИЙ КУРС по GIT та GITHUB українською"
- Host: GitHub
- URL: https://github.com/frontendlovers/git-for-beginners
- Owner: FrontendLovers
- License: mit
- Created: 2025-03-24T18:59:09.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2025-03-25T14:02:23.000Z (2 months ago)
- Last Synced: 2025-03-25T15:23:17.170Z (2 months ago)
- Topics: command-line, git, git-bash, github, shell
- Homepage: https://www.youtube.com/watch?v=9CnZihyYjjA&list=WL&index=2&t=1s
- Size: 1.46 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# GIT
Вітаю! ✨
Цей репозиторій містить вичерпний конспект, який я створила під час проходження курсу Нікіти Тимошенка про [Git та GitHub](https://www.youtube.com/watch?v=9CnZihyYjjA&list=WL&index=2&t=1s)📌 Конспект у форматі питання-відповіді, щоб ви могли перевірити себе та швидко знаходити потрібну інформацію.
📌 Структура наближена до курсу, тож вам буде легко орієнтуватися в темах і знаходити потрібний матеріал.
📌 Раджу пройти сам [курс](https://www.youtube.com/watch?v=9CnZihyYjjA&list=WL&index=2&t=1s) та прочитати [конспект від Нікіти](https://github.com/NickTimosh/git_course/tree/main/notebooks) адже там багато корисного:
- детальний опис команд,
- практичні завдання,
- корисні посилання.✨ А цей конспект допоможе вам перевірити, наскільки добре ви засвоїли отримані знання! 🚀
Якщо є якісь зауваження, або пропозиції для покращення не соромтесь створювати issues або pull requests. Я відкрита до зворотного зв'язку 🙌
Легкого навчання!😊
---
Зміст
Командний рядок
- Командний рядок — терміни
- Файлова система — терміни
- Шлях до файлів
- Читання вмісту папок(команди)
- Взаємодія з папками(команди)
- Взаємодія з файлами(команди)
Git
- Короткий огляд
- Основні налаштування
- Теорія, основні концепції
- Основні команди
- Розширення основ
- Вступ до відновлення версій
- Вступ в git branch
GitHub
---
Комадний рядок
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/1.%20%D0%92%D1%81%D1%82%D1%83%D0%BF%20%D0%B2%20%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%B8%D0%B9%20%D0%A0%D1%8F%D0%B4%D0%BE%D0%BA.md)
Командний рядок — терміни
Що таке GUI?
- графічний інтерфейс користувача (Graphical User Interface)
- спосіб взаємодії користувача з комп'ютером із використанням графічних елементів (вікна, кнопки і тд)
Що таке Сommand Line?
- командний рядок
- текстовий інтерфейс для взаємодії з операційною системою
- простір, де вводяться текстові команди
- і тут же можуть викликатися і запускатися певні програми
Що таке термінал?
- програма або інструмент, який надає доступ до командного рядка (вікно, куди команди вводяться)
Що таке Shell?
- оболонка
- програма, яка виконує команди, введені у терміналі (інтерпретатор команд)
Принцип роботи Shell (схема)
Що таке Bash?
- один із типів оболонок (Shell)
- Bourne Again Shell (Bash)
- підтримується у Windows через Git Bash
Взаємодія з ОС (схема)
---
Файлова система — терміни
Що таке каталог (директорія)?
- структура, яка використовується для організації файлів у файловій системі
Що таке поточний каталог?
- папка, в якій користувач перебуває прямо зараз
- команди по замовчуванню виконуються у поточному каталозі
Що таке батьківський каталог?
- папка, що знаходиться на один рівень вища, за поточний
Що таке домашній каталог?
- персональний каталог користувача
- Диск С —> Users —> User name (або USER)
Що таке кореневий каталог?
- початкова точка файлової системи
- найвищий рівень ієрархії каталогів
Структура каталогів (схема)
---
Шлях до файлів
Що таке шлях (path)?
- адреси файлів у каталозі файлової системи
Які є два види шляхів до файлів?
- абсолютний
- відносний
Де починається абсолютний шях?
- з кореневого каталогу
Що визначає відносний шях?
- розташування файлу по відношенню до поточного каталогу
Що таке розширення файлів?
- частина назви файлу, що йде після крапки
Для чого потрібне розширення файлів?
- для визначення типу файлу
---
Командний рядок — читання вмісту папок (команди)
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/2.%20git%20bash%20-%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B8.md)
[Практичні завдання](https://github.com/NickTimosh/git_course/blob/main/notebooks/3.%20git%20bash%20-%20%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0.md)
Яка команда відображає вміст всієї папки, у якій знаходиться користувач?
- ls
Яка команда дозволяє відобразити вміст каталогу відмінного від поточного?
- ls `path` (вказати шлях)
Які типи шляхів це дозволяють?
- обидва: відносний та абсолютний
Яка команда дозволяє повернути вмісти кореневого каталогу?
- ls /
Яка команда дозволяє повернути вмісти батьківського каталогу?
- ls ..
Яка команда очищає вікно терміналу?
- clear
Як у Git Bash навігувати по командам, що вже були написані?
- стрілочка вгору (до попередніх команд)
- стрілочка вниз (до наступних команд, що були після попередніх)
Що таке прапорці команд?
- додаткові опції команд
Як впроваджуються прапорці команд?
- через дефіси, які ми пишемо після команди
Який прапорець надає довідку?
- `комадна` --help
Яка команда дозволяє повернути вміст всіх папок у довгому форматі (з прапорцем)?
- ls -l
Як вивести дані, які повертає команда у вигляді текстового файлу?
- `your_command` > file_name.extension
Яка команда дозволяє вивести вміст папок у вигляді текстового файлу?
- ls > `file_name.extension`
- наприклад, ls > output.txt
Яка команда дозволяє вивести вміст папок у вигляді текстового файлу у довгому форматі?
- ls -l > `file_name.extension`
- наприклад, ls -l > output.txt
---
Командний рядок — взаємодія з папками (команди)
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/2.%20git%20bash%20-%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B8.md)
[Практичні завдання](https://github.com/NickTimosh/git_course/blob/main/notebooks/3.%20git%20bash%20-%20%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0.md)
Яка команда показує поточну директорію?
- pwd
- prind working directory
Що повертає ця команда?
- шлях до каталогу, у якому ми знаходимось
Яка команда дозволяє змінити поточну директорію на домашній каталог користувача?
- cd
- change directory
Як змінити поточну директорію на якусь конкретну іншу?
- cd `path` (вказати шлях)
Яка команда повертає до батьківської директорії?
- cd ..
Яка команда створює нову папку?
- mkdir `directory_name`
- make directory
Як створити одразу кілька папок у поточній директорії?
- mkdir `directory_name_1` `directory_name_2`
- якщо потрібні вкладені каталоги:
- mkdir -p dir1/dir2/dir3
Яка команда дозволяє скопіювати директорію до певної папки?
- cp -r `copy_directory to_directory`
Яка команда дозволяє видалити директорію?
- rm -r `file_name` (рекурсивне видалення)
- якщо директорія містить файли:
- rm -rf directory_name
---
Командний рядок — взаємодія з файлами (команди)
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/2.%20git%20bash%20-%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B8.md)
[Практичні завдання](https://github.com/NickTimosh/git_course/blob/main/notebooks/3.%20git%20bash%20-%20%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0.md)
Яка команда створює файл?
- touch `file_name.extension`
Як команда дозволяє скопіювати файл і перенести його до іншої папки?
- cp `copy_file destination_directory/`
- copy
Яка команда дозволяє записати щось у файл?
- echo `print_something` > `in_file`
Яка команда дозволяє повернути вміст файлу?
- cat `file_name`
Яка команда дозволяє видалити файл?
- rm `file_name`
---
Git
Git — короткий огляд
Що таке Git?
- програмне забезпечення
- система контролю версій (VCS — version control system)
- відстежує зміни у файлах
- дає змогу повернутися до попередніх версій
- забезпечує зручну співпрацю команд
Що пропонує Git?
- локальну базу даних
- синхронізацію з іншими серверами
- відновлення даних у разі збою
Які основні стани файлів у Git?
1. modified — файл змінено, але не додано до бази даних
2. staged — файл підготовлено до збереження
3. committed — зміни збережено у локальній базі даних
основні стани файлів у Git (схема)
Що робить звичайну папку локальним репозиторієм?
- папка .git
Яка команда ініціалізує репозиторій?
- git init
- після цієї команди з'являється папка .git і наша папка стала репозиторієм
---
Git — налаштування
Як переконатися, що Git встановлено (яка команда)?
- git --version
Яка команда дозволяє змінити налаштування (конфігурацію) Git?
- git config
Який прапорець дозволяє встановити зміни конфігурації для всіх репозиторіїв (теперішніх і майбутніх)?
- --global
Як встановити ім'я користувача у конфігурації?
- git config --global user.name `"your_name"`
Як встановити пошту (email) користувача у конфігурації?
- git config --global user.email `"your_email"`
Навіщо потрібно встановлювати ці налаштування?
- щоб git міг відслідковувати, хто автор змін
Яка команда перелік всіх налаштувань конфігурації?
- git config --list
Яка команда дозволяє вивести всі папки, в тому числі приховані (трекінгові)?
- ls -a
Яка команда дозволяє перевірити статус статуси файлів?
- git status
Яка команда дозволяє отримати довідку?
- git --help
- git `your_command` --help (довідка для конкретної команди)
---
Git — теорія, основні концепції
Які три основні концепції git?
- коміти
- збереження усіх версій файлів
- гілки
Що таке коміт?
- збереження файлу (його версії)
- інформація про те:
- хто зберіг
- коли зберіг
- що саме було зроблено
- можливість повернутися до попередніх версій файлів
Як зберігаються в комітах файли, в який не було жодних змін?
- зберігається **посилання** на вихідний файл
Який порядок локального збереження версій файлів?
- git add (staging area)
- git commit (committed area)
Локальне збереження файлів (схема)
Які шляхи вказання шляху до потрібної директорії (команда і два варіанти відображення шляху)?
- команда — **cd**
- відображення шляху:
- перетягти папку у вікно git bash (і шлях відобразиться, треба тільки cd на початку дописати)
- написати повністю шлях самостійно
Які каталоги git не відстежує?
- в яких немає файлів, або файлів, які ігноруються через .gitignore
---
Git — основні команди
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/5.%20git%20-%20%D0%91%D0%B0%D0%B7%D0%BE%D0%B2%D1%96%20%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B8.md)
Додавання коду і коміти
Як додати усі файли однією командою у staging area?
- git add .
Як додати один файл у staging area?
- git add `file_name`
Як додати коротке повідомлення до коміту?
- git commit -m `"your_comment"`
- вказується коротко, які зміни зроблено
Внесення комітів через Wim (схема)
Внесення комітів через nano (схема)
Внесення комітів через notepad (схема)
Як змінити текстовий редактор і встановити його основним (команда)?
- git config --global core.editor `"your_editor"
Історія комітів
Яка команда виводить перелік всіх комітів?
- git log
Який прапорець дозволяє вивести історію у більш компактному вигляді?
- --oneline
- повний варіант команди: git log --oneline
Яка команда (з прапорцем) дозволяє подивитися зміни комітів?
- git log -p
Як вийти з інтерактивного режиму (яка клавіша)?
- q (маленька)
Яка команда дозволяє подивитись відмінності у файлах (і всього репозиторію)?
- git diff (difference)
---
Git — розширення основ
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/6.%20git%20-%20%D0%A0%D0%BE%D0%B7%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8F%20%D0%9E%D1%81%D0%BD%D0%BE%D0%B2.md)
Яка загальноприйнята практика формулювання повідомлень для комітів?
- наказова (імперативна) форма
- (add, write, remove, delete, change, fix etc.)
Як додати тіло коміту, щоб детальніше описати зміни (послідовність кроків)?
- не закривати лапки
- клікнути enter
- перейти на новий рядок
- продовжити писати
- закрити лапки
- enter (для відправки коміту)
Як додати зміни так, щоб вони були частиною попереднього коміту, а не новоствореним комітом?
- git add .
- git commit --amend --no-edit (замість повідомлення)
- enter
Різниця у кроках між створення нового коміти і зміною існуючого (схема)
Як накопичувати зміни з різних файлів для одного коміту?
- внести зміни в різні файли та/або створити нові файли
- git add . (додаємо всі файли)
- git commit -m `"your_commit"`
Як додати кілька файлів (не всі) за один раз до staging area?
- git add ` `
Як побачити різницю у файлах, що вже додані до staging area?
- git diff --chached
Як повернути файли зі staging area до working area?
- **після** git add але **до** git commit
- git restore --staged or path to file
Як подивитися, який саме невідстежуваний файл користувач планує видалити (який прапорець)?
- -n
- повна команда: git clean -n
Яка команда дозволяє видалити невідстежувані файли з git (з прапорцем)?
- git clean -f
Яка команда дозволяє видалити невідстежувані файли і каталоги з git (з прапорцем)?
- git clean -fd
- **ця команда незворотна**
Яка команда дозволяє видалити відстежувані файли з індексу та робочого каталогу?
- git rm `` (remove)
Яка команда дозволяє видалити відстежувані файли тільки з індексу, залишивши його у робочому каталозі (з прапорцем)?
- git rm --cached ``
---
Git — вступ до відновлення версій
[Конспект](https://github.com/NickTimosh/git_course/blob/main/notebooks/7.%20git%20-%20%D0%A0%D0%BE%D0%B1%D0%BE%D1%82%D0%B0%20%D0%B7%20%D0%9A%D0%BE%D0%BC%D1%96%D1%82%D0%B0%D0%BC%D0%B8.md)
Що зберігається в комітах?
- зміни, що були зроблені у файлах
Що має унікальне кожна нова версія файлів?
- "#" — хеш-код (як id)
- є унікальним для кожної версії файлу
Основні area (схема)
Яка команда дозволяє повернути закомічений файл (наприклад, після його видалення)?
- git restore `file_name`
- за замовчування звернення до останньої закоміченої версії файлу
Яка команда дозволяє дізнатися, що було змінено в тому чи іншому коміті (по id)?
- git show `commit_id`
Яка команда дозволяє повернутися до конкретної версії файлу (а не тільки останньої, по id)?
- git restore --source=`commit_id` `file_name`
Яка команда дозволяє відмінити зміни, які вже були додані до staging area?
- git restore --staged `file_name`
Яка команда дозволяє повернутися до попередньої (та/або конкретної версії всього проєкту)?
- git reset `прапорець` `HEAD або ID`
- `HEAD` — останній коміт
- `ID` — конкретний коміт з переліку попередніх
Які прапорці має ця команда і чим вони відрізняються?
- --hard — перезапише повністю до поточної версії, до якої ми звернемося (через id) і повністю видаляє всі зміни
- --soft — дозволяє зберегти внесені зміни (у staging)
- --mixed — **використовується за замовчуванням**
- всі зміни, які були додані до staging area, будуть прибрані назад у робочу директорію
- тобто файли, які були в staging, знову стають "modified", але не видаляються
- повні команди:
- git reset --hard `ID`
- git reset --soft `ID`
---
Git — вступ в git branch
[Конспект]()
Яка основна гілка проєкту?
- main (master) — різна назва, але значить одне й те саме
Принцип роботи гілок (схема)
HEAD
Що таке HEAD?
- вказівник того, де ми знаходимось
- в якій гілці
- в якому коміті
- за замовчуванням знаходимося в останньому коміті
- кожна окрема гілка має свій HEAD
Що означає "detached HEAD"?
- коли `HEAD` не вказує на останній коміт гілки, а вказує на конкретний коміт або тег
За допомогою якої команди HEAD переходить у стан detached HEAD?
- git checkout `commit_hash`
- у цьому випадку `HEAD` вказує на той коміт, а не на гілку
Що дає detached HEAD?
- У стані detached HEAD можна переглядати або тестувати код на певному коміті, але будь-які нові коміти, які будуть зроблені, не будуть пов'язані з жодною гілкою
- для збереження коміту, що був зроблений у цьому стані, потрібно створити нову гілку, щоб не втратити зміни
Як вийти зі стану "detached HEAD"?
- використати команду `git checkout `, де `` — це назва гілки, на якій ви хотіли б продовжити працювати
Принцип роботи HEAD (схема)
Конфлікти
Що таке конфлікти в git?
- ситуація, коли на одних і тих самих рядках, в одних і тим самих файлах вказані різні дані
Що значить "вирішити конфлікт"?
- конкретне вказання git, які саме зміни мають бути внесені
Merge vs Rebase
Що значить merge?
- впровадити зміни до основої гілки (об'єднати всі додаткові гілки в main)
Яка є альтернативна merge?
- rebase
Що дозволяє робити ця альтернатива?
- інтегрувати зміни **після** останньої актуальної версії в main гілці
Які складнощі пов'язані з цим способом?
- перезапис id деяких комітів, що може викликати певні складнощі, якщо виникне потреба відновити якісь попереднії версії
Різниця між merge і rebase (схема)
Гілки
Яка команда виведе список всіх гілок?
- якщо потрібно побачити тільки локальні гілки
- git branch
- якщо потрібно побачити віддалені гілки
- git branch -r
Яка команда дозволяє створити нову гілку?
- git branch `branch_name`
Яка команда дозволяє перемикатися між гілками?
- git checkout `branch_name`
Яка команда дозволяє створити і перемкнутися на гілку (одна команда — дві дії)?
- git checkout -b `branch_name`
- -b — від слова branch
Яка є альтернативна команда для зміни гілки?
- git switch `branch_name`
Яка вона дозволяє за один крок створити гілку і одразу перемкнутися на неї (синтаксис команди)?
- git switch -b `branch_name`
Яка різниця між цими двома варіантами команд?
- git switch:
- більш проста у розуміння і використанні
- використовується спеціально для перемикання (та/або для створення і перемикання) між гілками
- git checkout:
- більш універсальна
- використовується для:
- перемикання (та/або для створення і перемикання) між гілками
- зміни гілок
- відновлення файлів (скасування змін)
- перемикання між комітами
В якій гілці ми маємо знаходитися перед тим, як зробити об'єднання гілок?
- в тій, в яку хочемо інтегрувати зміни (в цільовій)
Яка команда дозволяє об'єднати гілки?
- git merge `branch_name`
Назву якої гілки ми маємо писати у команді об'єднання?
- назву гілки, **яку об'єднуємо** з цільовою гілкою (тобто назву альтернативної, додаткової гілки)
Яка команда дозволяє тільки передати зміни, але не об'єднувати гілки?
- git fetch
Яка команда (з прапорцем) дозволяє видалити гілку?
- git branch -d `branch_name`
- git branch -D `branch_name`
Яка різниця між цими двома прапорцями?
- **-d** (soft delete) — не дозволить видалити гілку, яка ще не була передана до main (яка ще не інтегрована)
- **-D** (hard delete) — видалить гілку незалежно від того, чи вона вже інтегрована у main чи ще ні (безумовне видалення гілки)
---