Полезное по 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