Створення репозиторію
Останнє оновлення 2025-01-28 | Редагувати цю сторінку
Огляд
Питання
- Де Git зберігає інформацію?
Цілі
- Створити локальний репозиторій Git.
- Пояснити призначення каталогу
.git
.
Після налаштування Git ми можемо почати його використання.
Ми продовжимо нашу вигадану історію, у якій Альфредо досліджує, чи можливо відправити планетарний посадковий модуль на Марс.
Перш за все, створімо у каталозі Desktop
новий
підкаталог для нашої роботи, а потім змінимо поточний робочий каталог на
новостворений:
Далі ми кажемо Git зробити recipes
репозиторієм -- місцем, де Git може
зберігати версії наших файлів:
Майте на увазі, що git init
створює репозиторій, до
якого можна додавати підкаталоги та їх файли. Немає потреби створювати
окремі репозиторії вкладені в репозиторій recipes
,
незалежно від того чи були підкаталоги присутні від початку або були
додані пізніше. Крім того, зверніть увагу, що створення каталогу
recipes
та його ініціалізація як репозиторію є повністю
окремими процесами.
Якщо ми використаємо ls
, щоб передивитись зміст
каталогу, то здається, що нічого не змінилося:
Але якщо ми додамо опцію -a
, щоб показати всі файли, то
побачимо, що Git створив у каталозі recipes
прихований
каталог під назвою .git
:
ВИХІД
. .. .git
Git використовує цей спеціальний підкаталог для зберігання всієї
інформації про проєкт, у тому числі відстежувані файли і підкаталоги, що
розташовані в каталозі проєкту. Якщо ми коли-небудь видалимо підкаталог
.git
, то ми втратимо усю історію проєкту.
Тепер ми можемо почати використовувати одну з найважливіших команд
git, яка особливо корисна для початківців. git status
друкує інформацію про поточний стан нашого проєкту, та перелік зроблених
змін у проєкті з варіантами щодо подальших дій. Ми можемо
використовувати цю команду необмежену кількість разів, як тільки ми
хочемо зрозуміти, що відбувається.
ВИХІД
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Якщо ви користуєтеся іншою версією git
, вигляд
результату цієї команди може дещо відрізнятися.
Де створювати репозиторії Git
Відстежуючи інформацію про рецепти (проєкт, який ми вже створили),
Альфредо також хотів би особливо відстежувати інформацію, пов’язану саме
з десертами. Альфредо створює проєкт desserts
всередині
свого проєкту recipes
за допомогою наступної послідовності
команд:
BASH
$ cd ~/Desktop # повернутися до каталогу Desktop
$ cd recipes # перейти до каталогу recipes, який вже є репозиторієм Git
$ ls -a # перевірити, що підкаталог .git все ще присутній у каталозі recipes
$ mkdir desserts # створити підкаталог recipes/desserts
$ cd desserts # перейти у підкаталог desserts
$ git init # створити репозиторій Git у підкаталозі desserts
$ ls -a # перевірити наявність підкаталогу .git, що підтверджує створення нового репозиторію
Чи потрібно запускати команду git init
у підкаталозі
desserts
для відстеження файлів, розташованих у підкаталозі
desserts
?
Ні. Альфредо не потрібно робити окремий підкаталог
desserts
репозиторієм Git, оскільки репозиторій
recipes
відстежуватиме будь-які файли, підкаталоги, та
файли у підкаталогах в ньому. Таким чином, щоб відстежувати всю
інформацію про десерти, Альфредо повинен був лише додати підкаталог
desserts
до каталогу recipes
.
Крім того, репозиторії Git можуть заважати один одному, якщо вони
“вкладені”: зовнішній репозиторій намагатиметься відстежувати зміни у
внутрішньому репозиторії. Тому найкраще кожного разу створювати новий
репозиторій Git в окремому каталозі. Щоб переконатися, що каталог не є
репозиторієм, перевірте результат команди git status
. Якщо
він виглядає як показано нижче, ви можете створити новий репозиторій, як
було показано вище:
ВИХІД
fatal: Not a git repository (or any of the parent directories): .git
Виправлення помилок git init
Джиммі пояснив Альфредо, що вкладений репозиторій є зайвим і може
призвести до плутанини у майбутньому. Альфредо бажав би повернутися до
попередньої організації проєкту де необхідний тільки один репозиторій
Git. Як Альфредо може скасувати свою останню команду
git init
виконану у підкаталозі desserts
?
Контекст
Видаляти файли з репозиторію Git треба обережно. Проте, ми ще не навчилися вказувати Git як відстежувати певний файл; про це ми дізнаємося в наступному епізоді. Файли, які не відстежуються Git, можна легко видалити, як і будь-які інші “звичайні” файли:
Подібним чином можна видалити каталог за допомогою команди
rm -r dirname
. Якщо файли чи каталоги, які видаляються
таким чином, вже відстежуються Git, тоді їх видалення стає ще однією
зміною, яку нам потрібно буде відстежувати (ми побачимо як це робити в
наступному епізоді).
Відповідь
Git зберігає всі свої файли в каталозі .git
. Щоб
виправити цю маленьку помилку, Альфредо може просто видалити каталог
.git
у підкаталозі desserts
, виконавши
наступну команду всередині каталогу recipes
:
Проте, будьте обережні! Виконання цієї команди у неправильному
каталозі призведе до видалення всієї історії змін проєкту, яку ви хотіли
б зберегти. Загалом, видалення файлів і каталогів за допомогою
rm
з командного рядка не можна скасувати. Тому завжди
перевіряйте свій поточний каталог за допомогою команди
pwd
.
Ключові моменти
-
git init
ініціалізує репозиторій. - Git зберігає всі дані репозиторію в каталозі
.git
.