Створення репозиторію
Останнє оновлення 2024-06-04 | Редагувати цю сторінку
Приблизний час: 10 хвилин
Огляд
Питання
- Де Git зберігає інформацію?
Цілі
- Створити локальний репозиторій Git.
- Пояснити призначення каталогу
.git
.
Після налаштування Git ми можемо почати його використання.
Ми продовжимо нашу вигадану історію, у якій Wolfman та Dracula досліджують, чи можливо відправити планетарний посадковий модуль на Марс.
Werewolf vs dracula by b-maze / Deviant Art. Mars by European Space Agency / CC-BY-SA 3.0 IGO. Pluto / Courtesy NASA/JPL-Caltech. Mummy © Gilad Fried / The Noun Project / CC BY 3.0. Moon © Luc Viatour / https://lucnix.be / CC BY-SA 3.0.
Перш за все, створімо новий каталог у каталозі Desktop
для нашої роботи, а потім змінимо поточний робочий каталог на
новостворений:
Потім ми кажемо Git зробити planets
репозиторієм -- місцем, де Git може
зберігати версії наших файлів:
Важливо пам’ятати, що git init
створить репозиторій,
який може включати підкаталоги та їх файли—немає потреби створювати
окремі репозиторії вкладені в репозиторій planets
,
незалежно від того чи були підкаталоги присутні від початку або були
додані пізніше. Крім того, зверніть увагу, що створення каталогу
planets
та його ініціалізація як репозиторію є повністю
окремими процесами.
Якщо ми використаємо ls
, щоб передивитись зміст
каталогу, то здається, що нічого не змінилося:
Але якщо ми додамо опцію -a
, щоб показати усе, то
побачимо, що Git створив у каталозі planets
прихований
каталог під назвою .git
:
ВИХІД
. .. .git
Git використовує цей спеціальний підкаталог для зберігання всієї
інформації про проєкт, у тому числі про файли, що відстежуються, і про
підкаталоги, які містяться в каталозі проєкту. Якщо ми коли-небудь
видалимо підкаталог .git
, то ми втратимо усю історію
проєкту.
Далі, ми вкажемо, що гілка, яка використовується за замовчуванням,
має назву main
(залежно від ваших налаштувань і версії Git,
вона може вже мати цю назву). Перегляньте епізод про
налаштування, щоб дізнатися більше про цю зміну.
ВИХІД
Switched to a new branch 'main'
Ми можемо перевірити, що все налаштовано правильно, запитавши Git про стан нашого проєкту:
ВИХІД
On branch main
No commits yet
nothing to commit (create/copy files and use "git add" to track)
Якщо ви користуєтеся іншою версією git
, точний вигляд
результату цієї команди може дещо відрізнятися.
Де створювати репозиторії Git
Разом із відстеженням інформації про планети (проєкт, який ми вже
створили), Dracula також хотів би відстежувати інформацію про супутники.
Попри занепокоєння Wolfman, Dracula створює проєкт moons
всередині проєкту planets
за допомогою наступної
послідовності команд:
BASH
$ cd ~/Desktop # повернутися до каталогу Desktop
$ cd planets # перейти до каталогу planets, який вже є репозиторієм Git
$ ls -a # перевірити, що підкаталог .git все ще присутній у каталозі planets
$ mkdir moons # створити підкаталог planets/moons
$ cd moons # перейти у підкаталог moons
$ git init # створити репозиторій Git у підкаталозі moons
$ ls -a # перевірити наявність підкаталогу .git, що підтверджує створення нового репозиторію
Чи потрібна команда git init
, яка виконується в
підкаталозі moons
, для відстеження файлів, що зберігаються
в підкаталозі moons
?
Ні. Dracula не має необхідності робити підкаталог moons
репозиторієм Git, тому що репозиторій planets
може
відстежувати будь-які файли, підкаталоги, та файли у підкаталогах,
вкладені (на будь-якому рівні) у каталог planets
. Таким
чином, для того, щоб відстежувати всю інформацію про супутники, Dracula
повинен був лише додати підкаталог moons
до каталогу
planets
.
Крім того, репозиторії Git можуть заважати один одному, якщо вони
“вкладені”: зовнішній репозиторій намагатиметься відстежувати зміни у
внутрішньому репозиторії. Тому найкраще кожного разу створювати новий
репозиторій Git в окремому каталозі. Щоб переконатися, що каталог не є
репозиторієм, перевірте результат команди git status
. Якщо
він виглядає як показано нижче, ви можете створити новий репозиторій, як
було показано вище:
ВИХІД
fatal: Not a git repository (or any of the parent directories): .git
Виправлення помилок git init
Wolfman пояснив, як вкладений репозиторій є зайвим і може призвести
до плутанини у майбутньому. Тепер Dracula хотів би видалити вкладений
репозиторій. Як Dracula може скасувати свою останню команду
git init
виконану у підкаталозі moons
?
Контекст
Видалення файлів з репозиторію Git слід виконувати з обережністю. Проте, ми ще не навчилися вказувати Git як відстежувати певний файл; про це ми дізнаємося в наступному епізоді. Файли, які не відстежуються Git, можна легко видалити, як і будь-які інші “звичайні” файли:
Подібним чином каталог можна видалити за допомогою
rm -r dirname
або rm -rf dirname
. Якщо файли
чи каталоги, які видаляються таким чином, вже відстежуються Git, тоді їх
видалення стає ще однією зміною, яку нам потрібно буде відстежувати (ми
побачимо як це робити в наступному епізоді).
Відповідь
Git зберігає всі свої файли в каталозі .git
. Щоб
виправити цю маленьку помилку, Dracula може просто видалити каталог
.git
> в підкаталозі moons
, виконавши
наступну команду всередині каталогу planets
:
Проте, будьте обережні! Виконання цієї команди у неправильному
каталозі призведе до видалення всієї історії змін проєкту, яку ви хотіли
б зберегти. Тому завжди перевіряйте свій поточний каталог за допомогою
команди pwd
.
Ключові моменти
-
git init
ініціалізує репозиторій. - Git зберігає всі дані репозиторію в каталозі
.git
.