Linux > GIT
05.03.2019 23:10:21
Наиболее часто встречающиеся слова в статье:
[checkout] [проекта] [ревизию] [веткуgit] [репозитория] [ревизии] [Просмотр] [изменения] [коммитов] [состояния]
Статья:
Git — распределённая система контроля версий
Автор: Линус Торвальдс
2005 — первая версия
азовые понятия
Репозиторий (repository, repo) — место, где СКВ хранит свои метаданные и базу данных объектов проекта
Рабочий каталог (working directory) — извлечённая из репозитория копия определённой версии проекта
Область подготовленных файлов (staged area) — служебный файл, содержащий информацию о том, что должно войти в следующую ревизию проекта
Ревизия (revision) — объект, хранящий изменение состояния проекта (версия проекта)
Коммит (commit) — создание новой ревизии
Настройка конфигурации GIT
Настройка имени пользователя
git config --global user.name "Your Name"
git config --global user.email you@abc.net
Настройки сохраняются в скрытый файл .gitconfig (в домашней директории пользователя)
[user]
name = John Doe
email = jdoe@example.com
Создание репозитория
mkdir first_git_repo
cd first_git_repo
git init
Состояния файлов проекта
- Зафиксированный
файл уже есть в репозитории - Измененный
файл отличается по содержанию от своего зафиксированного состояния - Подготовленный
измененный файл, который станет зафиксированным после создания новой ревизии (этот файл попадет в эту ревизию)
Работа с кодом
- Инициализация репозитория
git init
- Или переход на определенную ревизию
git checkout номер_ревизии
- Изменение в коде проекте: создание / удаление / редактирование файлов
В любой IDE - Просмотр состояния
git status
- Добавление измененных файлов в индекс
(перевод в состояние Staged)git add имена_файлов_через_пробел
- Создание ревизии (из Staged в Repo)
git commit -m "Комментарий"
Работа с СКВ
Что хранить?
[+] Все файлы исходного кода
[+] Все ресурсы, необходимые для компиляции
[+] настройки компиляции проекта
[-] настройки проекта в IDE
[-] файлы, компилируемые из исходников
[-] исполняемые файлы
Удаление из индексаgit rm имя_файла
Коммит может содержать изменения нескольких файлов
Когда делать коммит?
- Когда завершил маленьшую задачку
- Если задачка большая — делим на логические подчасти
- Код должен быть в рабочем состоянии!
Просмотр истории
git log
git log --graph
Переключение на ревизию
git checkout sha1_hash
git checkout первые_8_цифр_sha1
Ветки
Ветка (англ. branch) — это последовательность коммитов, в которой ведётся параллельная разработка какого-либо функционала
Основная ветка – master
Ветки в GIT
Показать все ветки, существующие в репозитарииgit branch
Создать веткуgit branch имя
Переключиться на веткуgit checkout имя
На этот момент не должно быть несохранённых изменений
Создать ветку и переключиться на неёgit checkout -b имя
Слияние веток
Объединение веток (англ. merge) — процесс интеграции изменений (коммитов) одной ветки в другую:
b1 — ветка, в которую мы добавляем изменения
b2 — ветка из которой мы добавляем изменения
git checkout b1
git merge b2
Просмотр истории
Оконные утилиты:
- gitg
- gitk
- gitx
- gitKraken
Удаление веток
Удалить веткуgit branch –d имя_ветки
УДАЛИТЬ веткуgit branch –D имя_ветки
А точнее, удалить ветку, не дожидаясь перемещения коммитов в master
Буфер несохраненных изменений
Или «что делать, если нужно переключиться на другую ветку, а коммит делать рано?»
Записать изменения во временный буферgit stash
Извлечь из буфера эти измененияgit stash pop
Полезные ссылки:
git-scm.com/book/ru/v2
githowto.com/ru
ru.wikipedia.org/wiki/Система_управления_версиями