Git позволяет команде работать над проектом совместно: каждый разработчик может писать свою часть кода, не мешая остальным, и давать доступ к своему коду по мере необходимости. Кроме того, Git позволяет разрешать конфликты — ситуации, когда два разработчика трудились над одним участком кода, и нужно решить, чей вариант оставить или как объединить варианты. Помимо этого, Git хорош, чтобы контролировать версии вашего собственного проекта.

Идею устройства Git выдвинул создатель ядра ОС Linux Линус Торвальдс. Выбирая название технологии, Торвальдс взял сленговое слово git, что можно перевести на русский как «презренный, неприятный субъект». Линус предложил расшифровывать его как аббревиатуру двумя способами:

  • Global Information Tracker (англ., «глобальный информационный трекер»), когда всё работает;
  • Goddamn Idiotic Truckload of shit (англ., «чёртов идиотский самосвал дерьма»), когда всё плохо.

Официальный верифицированный перевод руководства по Git на русский язык

Яндекс.Практикум

Конфигурируем

git config --global user.name "Ваше Имя"
git config --global user.email "your_email@whatever.com"

Посмотреть текущие настройки

git config --list --show-origin

Клонируем

git clone https://github.com/ваш-аккаунт-на-гитхабе/project

Отображение изменений

git status

Добавляем для отслеживание файл

git add имя-файла

Добавляем все файлы

git add --all

Каждый коммит сохраняет актуальное состояние файлов, и вы можете сравнивать разные состояния от коммита к коммиту. Пока что коммиты будут сохранены локально, на вашем компьютере, и доступны только вам.Отправим коммит и сопроводим его комментарием.

git commit -m "My first commit" 

Файл .gitignore — список файлов, которые необходимо игнорировать

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

Вариант 1.

Создаем репозиторий на github и потом просто клонируем его. Путь к репозиторию можно скопировать на gihub

git clone https://github.com/путь_к_репозиторию

Вариант 2.

Данные вариант подходит, кода код уже есть.

Заходим в директорию с кодом будущего проекта и инициализируем git

git init

Добавляем все файлы, которые есть

git add --all

Делаем первый коммит

git commit -m "Draft version"

Cоздаем репозиторий на github: project_name, и связываем его с локальным

git remote add origin git@github.com:git_user_name/project_name.git

Пушим это безобразие на github

git push origin main

Алгоритм добавления изменений

Делаем первый коммит, в кавычках пишем комментарий

git commit -m "First commit: change program.py"

Добавили файлы в индекс Git

git add --all

Добавили эти файлы к предыдущему коммиту

git commit --amend -m "First commit: new files added"

—amend вносит изменения в предыдущий коммит, что бы сделать новый коммит пишем без —amend

git commit -m "First commit: new files added"

Отправляем на сервер

git push -f origin master

Для того, чтобы получить информацию о коммитах, выполните команду git log

Показать изменения, внесённые в определённом коммите, можно командой git show

Чтобы вернуться к определённому коммиту, нужно выполнить команду git reset и через пробел указать первые семь символов контрольной суммы нужного коммита, точно так же, как с командой git show

Работа с Git в команде

Ветки (англ. «branches»)

Ветка — это изолированный поток разработки, в котором можно делать коммиты так, что их не видно из других веток и они не влияют на основной код проекта. Если проекта пишут несколько человек, каждый может работать в отдельной ветке и не мешать другим.Прежде чем начать писать новую часть проекта, для неё создают отдельную ветку. Когда работа доделана, эту побочную ветку после ревью «вливают» в главную. Таким образом в главной ветке всегда будет стабильная версия проекта.Основная ветка разработки называется master. Обычно в ней хранят финальную версию кода. Ветка master создаётся автоматически, когда в проекте инициализируется Git и создаётся первый коммит.Чтобы увидеть все ветки и узнать, на какой ветке вы находитесь сейчас, введите команду git branch:

git branch # команда для просмотра веток
* master # основная ветка проекта, звёздочкой отмечено, что вы в ней 

Нажмите Q, чтобы покинуть режим просмотра веток.Создать новую ветку можно командой git branch название_ветки. Название ветки лучше выбирать исходя из того, что в ней будет происходить. Имя ветки не должно содержать пробелов: это вызовет ошибку.

git branch develop # создали новую ветку с именем develop
git branch # проверили, в какой ветке находимся
develop # появилась новая ветка
* master # но мы пока находимся в ветке master 

Ветку создали, но пока мы находимся в ветке master. Чтобы переключиться в ветку develop, введите команду git checkout develop:

git checkout develop # переключились в ветку develop
git branch # проверили
* develop
master 

Можно создать ветку и сразу переключиться на неё командой:

git checkout -b develop # создали и сразу переключились в ветку develop 

Есть разные подходы к именованию веток, каждая команда разработки выбирает свой. При любом подходе ветки называют так, чтобы всем было понятно, что в них происходит. Если ветка создана для разработки новой части проекта, её имя может начинаться со слова feature:

git checkout -b feature/email-validation 

Если в ветке планируется ловля и исправление багов, ей подойдёт название, начинающееся с bugfix:

git checkout -b bugfix/resize-image 

Слияние веток (англ. «merge«)

После решения задачи вашу изолированную ветку нужно объединить с веткой master, залить в неё результаты вашей работы. Этот процесс называется «слияние веток», или merge. Чтобы объединить («смёрджить») ветки, нужно переключиться в ветку, куда должны попасть изменения и из неё выполнить команду на слияние. Чтобы залить код из ветки develop в ветку master, сперва переключаемся:

git checkout master # переключились в master 

Теперь нужно переместить все коммиты из develop в ветку master, смёржить ветки:

git merge develop 

Чаще выполняйте команду git pull, чтобы иметь актуальное состояние репозитория.

Основные команды для работы с ветками:

git branch <название_ветки> — создать новую ветку

git checkout <название_ветки> — переключиться в ветку

git checkout -b <название_ветки> — создать ветку и сразу переключиться в неё.

git branch -d <название_ветки> — удалить ветку. Чтобы всё прошло хорошо, нужно переключиться из удаляемой ветки.

git merge <название_ветки> — скопировать все изменения из ветки в ветку. Чтобы перенести изменения из ветки develop в ветку master, нужно находиться в ветке master и выполнить команду git merge develop.