GIT

Linux > GIT
05.03.2019 23:10:21



Статья:

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

 

Состояния файлов проекта

 

  1. Зафиксированный
    файл уже есть в репозитории
  2. Измененный
    файл отличается по содержанию от своего зафиксированного состояния
  3. Подготовленный
    измененный файл, который станет зафиксированным после создания новой ревизии (этот файл попадет в эту ревизию)

Работа с кодом

  • Инициализация репозитория

    git init
  • Или переход на определенную ревизию
    git checkout номер_ревизии

 

  1. Изменение в коде проекте: создание / удаление / редактирование файлов 
    В любой IDE
  2. Просмотр состояния 
    git status
  3. Добавление измененных файлов в индекс 
    (перевод в состояние Staged) 
    git add имена_файлов_через_пробел
  4. Создание ревизии (из 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/Система_управления_версиями