Давно хотела оформить в виде статьи мой список часто используемых Git команд.

Git

Git — это распределенная система управления версиями. Создана для отслеживания изменений в коде и облегчения совместной работы над проектами. Я ее всегда использую, даже когда работаю над проектом одна.

Платформа Git

Я не пользуюсь платформами GitHub и GitLab. Я использую собственный Git сервис Gogs. Его установка и настройка подробно описаны в статье: «Установка Git сервиса Gogs на Linux (Debian 11)«.

Создание удаленного репозитория Git

Создание удаленного репозитория на разных платформах Git по сути не различается. У меня Gogs, поэтому пишу про Gogs.

В адресной строке браузера набираю https://git.adminkin.pro/ и ввожу логин и пароль пользователя.

Для создания нового репозитория нажимаю на + рядом с My Repositories:

Создание репозитория Git

Придумываю имя репозиторию (interview) и нажимаю кнопку Create Repository. Все! Удаленный репозиторий создан.

Create a new repository

Часто используемые Git команды

На локальной машине переходим к проекту interview:

cd ~/interview/

Инициализируем локальный репозиторий:

git init

Создаем файл .gitignore:

touch .gitignore

Это обычный текстовый файл, в который вносится список файлов и директорий, которые Git должен игнорировать и не отслеживать изменения.

У меня проект interview на Python, и я добавляю в игнор все директории с именем __pycache__ с их содержимым:

echo "__pycache__/" >> .gitignore

Добавляем все файлы проекта в область подготовки к коммиту (стейдж):

git add .

Просматриваем текущее состояние репозитория:

git status
Команда git status
  • On branch master — это текущая ветка.
  • Changes to be committed — это файлы, которые уже в стейдже, т.е. в области подготовки к коммиту после git add, и готовы к коммиту.
  • Changes not staged for commit — это измененные файлы, но еще не добавленные в стейдж через git add.
  • Untracked files — это файлы, присутствующие в проекте, но неотслеживаемые Git.

Чтобы удалить файл из стейджа (если он был ошибочно добавлен с помощью git add):

git restore --staged <file>

Задаем автора коммитов для репозитория:

git config user.name "Irina K."
git config user.email "irina@email.email"

Чтобы просмотреть текущие настройки Git, включая user.name, user.email:

git config --list

Делаем коммит (снимок состояния проекта):

git commit -m "my first commit"

где my first commit — это комментарий к коммиту.

Просматриваем список настроенных удаленных репозиториев с адресами для чтения и записи, привязанных к репозиторию:

git remote -v

Пока список пустой. Добавляем удаленный репозиторий, который мы создали в предыдущем разделе статьи:

git remote add origin https://git.adminkin.pro/<git_user>/interview.git

Отправляем локальный коммит в удаленный репозиторий:

git push -u origin master

Просмотр коммитов

Список коммитов в обратном хронологическом порядке:

git log

Для каждого коммита отобразятся: хеш коммита (уникальный идентификатор), автор коммита, дата коммита и комментарий коммита.

Список коммитов со списком файлов каждого коммита:

git log --name-status

Список файлов коммита можно просмотреть и другой коммандой:

git diff-tree --no-commit-id --name-only -r <commit_hash>

где <commit_hash> — это хеш коммита.

Список файлов, которые изменялись между коммитами:

git diff --name-only <commit_hash_1> <commit_hash_2>

Просмотр изменений

Посмотреть изменения для коммита (все строки кода, которые были добавлены, изменены, удалены):

git log -p -1 <commit_hash>

Просмотреть все содержимое файла с изменениями, внесенными после последнего коммита:

git diff -U9999 <file>

где -U9999 означает: показывать до 9999 строк контекста вокруг каждого изменения. Таким образом будет показан весь файл с пометками изменений. По умолчанию показывается по 3 строки «до и после» изменений.

Получение отсутствующего файла

Чтобы получить файл, отсутствующий в локальном репозитории, с удаленного репозитория:

git checkout <file>

Отмена отслеживания файла

Чтобы удалить файл из удаленного репозитория Git и больше не отслеживать его, но оставить файл на диске (в рабочей директории):

git rm --cached <file>

После этой команды Git будет считать файл неотслеживаемым (untracked).

Независимая версия файла в удаленном репозитории

Чтобы оставить файл/директорию в удаленном репозитории Git, но не отслеживать:

git update-index --skip-worktree <file>

Так в удаленном репозитории Git будет собственная независимая версия файла/директории.

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

Если был сделан коммит:

git commit -m "comment"

А файл forgotten_file не был добавлен в стейдж с помощью git add и, таким образом, не попал в коммит. А очень нужно сделать единый коммит с забытым файлом. Делается это двумя командами:

git add forgotten_file
git commit --amend

Добавление соавтора

Чтобы пользователь мог добавлять свои правки в ваш удаленный репозиторий, его нужно добавить в соавторы.

На сайте с Gogs (у меня это https://git.adminkin.pro/) переходим к нужному репозиторию, выбираем вкладку Настройки, а затем Сотрудничество.

Добавление соавтора

В строке поиска набираем имя нужного пользователя и нажимаем кнопку Добавить нового соавтора. И проверяем, что у пользователя добавились права на запись.

Кроме прав на запись, пользователь должен быть активирован. Чтобы это проверить, заходим на сайт Gogs под учетной записью администратора, переходим в Панель администратора, в раздел Пользователи.

Пользователь активирован

Нужный пользователь должен быть с «галочкой» Активирован.

Клонирование удаленного репозитория

Чтобы клонировать существующий удаленный репозиторий (т.е. создать локальную копию):

git clone https://git.adminkin.pro/<git_user>/interview.git

Вывод

А какие Git команды вы часто используете? Напишите в комментариях под статьей.

Комментарии

Добавить комментарий

Этот сайт защищен reCAPTCHA, и к нему применяются Google Политика конфиденциальности и Условия использования.

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.