Skip to content
GitLab
  • Explore
  • Sign in
  • education
  • get
  • GET Students
  • Wiki
  • 3 git
  • git

git · Changes

Page history
Create 3 git/git authored Mar 01, 2023 by Роман Макаров's avatar Роман Макаров
Hide whitespace changes
Inline Side-by-side
3-git/git.md 0 → 100644
View page @ 05901fb5
### Git
**Git** -- это распределенная система контроля версий. Система Git была создана Линусом Торвальдсом в 2005 году во время разработки ядра Linux, и решала одну конкретную задачу: совместная разработка кода ядра Linux. До Git командой разработки использовалась BitKeeper, но столкнувшись с проблемами работы с BitKeeper Линус Торвальдс решил написать свою систему контроля версий.
[Первый коммит в системе git в репозиторий ядра Linux](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v2.6.13-rc3&id=1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)::[Tag](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?h=v2.6.12-rc2)
![linux-kernel](images/linux-kernel-git-init.png){width=50%}
Давайте разберемся и поймём, что же такое *распределенная система контроля версий?* Для этого нам надо понять, какие еще системы контроля версий бывают.
* **Локальные системы контроля версий (ЛСКВ)**
Некоторые люди в качестве метода контроля версий применяют копирование файлов в отдельную директорию,возможно даже в директорию с отметкой по времени для большего контроля. Данный подход всё ещё очень популярен и распространён. Изменения сохраняются в виде наборов патчей, где каждый патч датируется и получает отметку времени. Таким образом, если код перестаёт работать, наборы патчей можно совместить, чтобы получить исходное состояние файла.
* **Централизованные системы контроля версий (ЦСКВ)**
ЦСКВ были созданы для решения проблемы взаимодействия с другими разработчиками. Такие системы имеют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища и там же их сохраняют. Тем не менее, такой подход имеет существенный недостаток — выход сервера из строя обернётся потерей всех данных.
* **Распределённые системы контроля версий (РСКВ)**
РСКВ избавили пользователей от недостатка ЦСКВ, клиенты РСКВ не просто скачивают снимок всех файлов(состояние файлов на определённый момент времени), а полностью копируют репозиторий. Это значит, что у каждого клиента есть копия всего исходного кода и внесённых изменений. В этом случае, если один из серверов выйдет из строя, любой клиентский репозиторий может быть скопирован на другой сервер для продолжения работы. Ещё одним преимуществом РСКВ является то, что они могут одновременно взаимодействовать с несколькими удалёнными репозиториями, что означает, что вы можете параллельно работать над несколькими проектами.
Получается, что в этой системе мы можем хранить набор разных версий кода и обмениваться всем набором изменений с сервером.
#### Определения
Нам необходимо ввести некоторые определения по работе с Git. Данные определения справедливы для всех операционных систем.
**Локальная база данных git, локальный репозиторий (repository)** -- это набор файлов, в которых хранится информация о всех версиях файлов директории, в которой создан репозиторий. Файлы локальной базы данных хранятся в директории (папке) **.git**. ***!!! Очень важно НЕ вносить изменения в эту папку вручную !!!***
**branch (ветка)** -- перемещаемый указатель на фиксированную версию в локальном или удалённом репозитории. По умолачанию создаётся ветка **master** или **main**
Состояние файлов:
**modified (модифицированный)** -- файл, который изменил содержание по отношению к предыдующей зафиксированной версии, но еще не проиндексированный;
**staged (индексированный)** -- файл, отмеченный для включения в следующую версию;
**commited (зафиксированный)** -- файл, зафиксированный в локальной базе данных в данной версии;
Действия:
**commit (фиксирование версии, коммит)** - добавление проиндексированных файлов в локальную базу данных;
**merge (слияние)** -- добавление изменений одной фиксированной версии к другой;
**clone (клонирование)** -- копирует удаленную базу данных на локальный компьютер, тем самым создавая локальную базу данных;
**push (отправка)** -- отправляет версий из вашего локального репозиторий на удалённый репозиторий;
**fetch (получение)** -- получает информацию о зафиксированных версиях из удаленного репозитория;
**pull (вытягивание)** -- получает информацию о зафиксированных версиях и выполняет слияние текущей локальной версии и последней из полученных версий из уделнного репозитория
\ No newline at end of file
Clone repository

Home | RaspberryPi | Полезное


  1. ↕️ Порты ввода-вывода
  2. 🎛 Учебная плата
  3. 📥 Git
  4. 🎧 ЦАП
  5. 🎤 АЦП
  6. 🔥 Пайка
  7. 🤖 Автоматизированные измерения
  8. 📈 Обработка результатов
  9. 📝 Отчёт

Telegram | VK | YouTube