Полезное по git

Команды git

Команда Описание

Первоначальная настройка

git config --global user.name "[имя]"

Устанавливает имя, которое будет отображаться в поле автора у выполняемых вами коммитов

git config --global user.email "[адрес электронной почты]"

Устанавливает адрес электронной почты, который будет отображаться в информации о выполняемых вами коммитах

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

git init [название проекта]

Создаёт новый локальный репозиторий с заданным именем

git clone https://github.com/SDV902/git-lab.git

Скачивает репозиторий вместе со всей его историей изменений

Внесение изменений

git status

Перечисляет все новые или изменённые файлы, которые нуждаются в фиксации

git diff

Показывает различия по внесённым изменениям в ещё не проиндексированных файлах

git add [файл]

Индексирует указанный файл для последующего коммита

git diff --staged

Показывает различия между проиндексированной и последней зафиксированной версиями файлов

git reset [файл]

Отменяет индексацию указанного файла, при этом сохраняет его содержимое

git commit -m "[сообщение с описанием]"

Фиксирует проиндексированные изменения и сохраняет их в историю версий

Просмотр истории

git log

История коммитов для текущей ветки

git log --follow [файл]

История изменений конкретного файла, включая его переименование

git diff [первая ветка]…​[вторая ветка]

Показывает разницу между содержанием коммитов двух веток

git show [коммит]

Выводит информацию и показывает изменения в выбранном коммите

Откат коммитов

git reset [коммит]

Отменяет все коммиты после заданного, оставляя все изменения в рабочей директории

git reset --hard [коммит]

Сбрасывает всю историю вместе с состоянием рабочей директории до указанного коммита.

Коллективная работа

git branch

Список именованных веток коммитов с указанием выбранной ветки

git branch [имя ветки]

Создаёт новую ветку

git switch -c [имя ветки]

Переключается на выбранную ветку и обновляет рабочую директорию до её состояния

git merge [имя ветки]

Вносит изменения указанной ветки в текущую ветку

git branch -d [имя ветки]

Удаляет выбранную ветку

Операции с файлами

git rm [файл]

Удаляет конкретный файл из рабочей директории и индексирует его удаление

git rm --cached [файл]

Убирает конкретный файл из контроля версий, но физически оставляет его на своём месте

git mv [оригинальный файл] [новое имя]

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

Синхронизация с удалённым репозиторием

git remote add origin https://github.com/SDV902/git-lab.git

Подключает удаленный репозиторий

git remote -v

Проверяет удаленный репозиторий

git push -u origin master

Загружает все изменения локальной ветки в удалённый репозиторий

git fetch [удалённый репозиторий]

Скачивает всю историю из удалённого репозитория

git merge [удалённый репозиторий]/[ветка]

Вносит изменения из ветки удалённого репозитория в текущую ветку локального репозитория

git pull

Загружает историю из удалённого репозитория и объединяет её с локальной. pull = fetch + merge

Фичи

Копирование чужой репы себе

1. Клонируем чужой репозиторий локально:

 git clone https://github.com/craftista/craftista.git

Шаг 2. Создаем новую репу на GitHub и копируем ссылку на нее. https://github.com/new

Шаг 3. Посмотреть текущий remote

git remote -v

Скорее всего увидишь что-то вроде: origin https://github.com/craftista/craftista.git Это означает, что локальный репозиторий до сих пор привязан к оригинальному проекту.

Шаг 4. Удалить старый remote

git remote remove origin

Проверяем:

git remote -v

Вывод должен быть пустым.

Шаг 5. Добавить свой GitHub Например:

git remote add origin https://github.com/USERNAME/my-craftista.git

или через SSH:

git remote add origin git@github.com:USERNAME/my-craftista.git

Проверяем:

git remote -v

Теперь должно быть: origin git@github.com:USERNAME/my-craftista.git

Шаг 6. Посмотреть текущую ветку

git branch

Например: * master или * main

Шаг 7. Запушить Если ветка называется main:

git push -u origin main

Если master:

git push -u origin master

Флаг -u нужен только при первом пуше. После этого достаточно будет писать:

git push

Ветку кстати можно переименовать:

git branch -m новое_имя

Если GitHub сообщает: Updates were rejected…​ или remote contains work that you do not have locally значит при создании репозитория на GitHub был автоматически создан README.md или .gitignore. В этом случае есть два варианта: Создать новый полностью пустой репозиторий и повторить команды. Либо выполнить

git pull origin main --allow-unrelated-histories

и затем

git push