[06:25]
[🔒]
✪
Статья
Git - команды и примеры
Категории: Программир.; Интернет, сети, web;
Всего несколько команд нужно для базового варианта использования Git для ведения истории изменений.
Команда git add добавляет содержимое рабочего каталога в индекс (staging area) для последующего коммита. По умолчанию git commit использует лишь этот индекс, так что вы можете использовать git add для сборки слепка вашего следующего коммита.
Это одна из ключевых команд Git, мы упоминали о ней десятки раз на страницах книги. Ниже перечислены наиболее интересные варианты использования этой команды.
Знакомство с этой командой происходит в разделе Отслеживание новых файлов главы 2.
О том как использовать git add для разрешения конфликтов слияния написано в разделе Основные конфликты слияния главы 3.
В разделе Интерактивное индексирование главы 7 показано как использовать git add для добавления в индекс лишь отдельных частей изменённого файла.
В разделе Деревья показано как эта команда работает на низком уровне, чтобы вы понимали, что происходит за кулисами.
Команда git status показывает состояния файлов в рабочем каталоге и индексе: какие файлы изменены, но не добавлены в индекс; какие ожидают коммита в индексе. Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.
Мы познакомили вас с этой командой в разделе Определение состояния файлов главы 2, разобрали стандартный и упрощённый формат вывода. И хотя мы использовали git status повсеместно в этой книге, практически все варианты использования покрыты в указанной главе.
Команда git diff используется для вычисления разницы между любыми двумя Git деревьями. Это может быть разница между вашей рабочей копией и индексом (собственно git diff), разница между индексом и последним коммитом (git diff --staged), или между любыми двумя коммитами (git diff master branchB).
Мы познакомили вас с основами этой команды в разделе Просмотр индексированных и неиндексированных изменений главы 2, где показали как посмотреть какие изменения уже добавлены в индекс, а какие — ещё нет.
О том как использовать эту команду для проверки на проблемы с пробелами с помощью аргумента --check можно почитать в разделе Правила создания коммитов главы 5.
Мы показали вам как эффективно сравнивать ветки используя синтаксис git diff A…B в разделе Определение применяемых изменений главы 5.
В разделе Продвинутое слияние главы 7 показано использование опции -w для скрытия различий в пробельных символах, а также рассказано как сравнивать конфликтующие изменения с опциями --theirs, --ours и --base.
Использование этой команды с опцией --submodule для сравнения изменений в подмодулях показано в разделе Начало работы с подмодулями главы 7.
Команда git difftool просто запускает внешнюю утилиту сравнения для показа различий в двух деревьях, на случай если вы хотите использовать что-либо отличное от встроенного просмотрщика git diff.
Мы лишь вкратце упомянули о ней в разделе Просмотр индексированных и неиндексированных изменений главы 2.
Команда git commit берёт все данные, добавленные в индекс с помощью git add, и сохраняет их слепок во внутренней базе данных, а затем сдвигает указатель текущей ветки на этот слепок.
Вы познакомились с основами модели коммитов в разделе Коммит изменений главы 2. Там же мы продемонстрировали использование опций -a для добавления всех изменений в индекс без использования git add, что может быть удобным в повседневном использовании, и -m для передачи сообщения коммита без запуска полноценного редактора.
В разделе Операции отмены главы 2 мы рассказали об опции --amend, используемой для изменения последнего совершённого коммита.
В разделе О ветвлении в двух словах главы 3 мы более подробно познакомились с тем, что делает команда git commit и почему она делает это именно так.
Мы показали вам как подписывать ваши коммиты, используя опцию -S в разделе Подпись коммитов главы 7.
И наконец мы заглянули внутрь команды git commit в разделе Объекты коммитов главы 10 и узнали что она делает за кулисами.
Команда git reset, как можно догадаться из названия, используется в основном для отмены изменений. Она изменяет указатель HEAD и, опционально, состояние индекса. Также эта команда может изменить файлы в рабочем каталоге при использовании параметра --hard, что может привести к потере наработок при неправильном использовании, так что убедитесь в серьёзности своих намерений прежде чем использовать его.
Мы рассказали об основах использования git reset в разделе Отмена индексации файла главы 2, где эта команда использовалась для удаления файла из индекса, добавленного туда с помощью git add.
В разделе Раскрытие тайн reset, полностью посвящённой этой команде, мы разобрались в деталях её использования.
Мы использовали git reset --hard чтобы отменить слияние в разделе Прерывание слияния главы 7, там же было продемонстрировано использование команды git merge --abort для этих целей, которая работает как обёртка над git reset.
Команда git rm используется в Git для удаления файлов из индекса и рабочей копии. Она похожа на git add с тем лишь исключением, что она удаляет, а не добавляет файлы для следующего коммита.
Мы немного разобрались с этой командой в разделе Удаление файлов главы 2, показали как удалять файлы из рабочего каталога и индекса и только из индекса, используя флаг --cached.
Ещё один вариант использования git rm приведён в разделе Удаление объектов главы 10, где мы вкратце объяснили как использовать опцию --ignore-unmatch при выполнении git filter-branch, которая подавляет ошибки удаления несуществующих файлов. Это может быть полезно для автоматически выполняемых скриптов.
Команда git mv — это всего лишь удобный способ переместить файл, а затем выполнить git add для нового файла и git rm для старого.
Мы лишь вкратце упомянули эту команду в разделе Перемещение файлов главы 2.
Команда git clean используется для удаления мусора из рабочего каталога. Это могут быть результаты сборки проекта или файлы конфликтов слияний.
Мы рассмотрели множество опций и сценариев использования этой команды в разделе Очистка рабочего каталога главы 7.
git pull origin master -
# Пожалуйста, введите сообщение коммита, чтобы объяснить, почему это слияние необходимо, особенно если оно объединяет обновленный вышестоящий (upstream) # репозиторий с тематической веткой. Строки, начинающиеся с '#', будут проигнорированы, а пустое сообщение отменит коммит.
# Как работать с этим в консоли (обычно редактор Vim):# Нажмите i (insert) для перехода в режим редактирования.# Напишите причину, например: Merge upstream/main into feature-branch.# Нажмите Esc для выхода из режима вставки.# Введите :wq и нажмите Enter для сохранения и выхода.
git add .git commit -m "Confirm somw changes"git push -u --force origin master
git branch # Проверьте, где вы находитесьgit checkout mastergit merge <имя_ветки_с_изменениями>git push -u --force origin master
# Найдите свой коммит: git reflog# Создайте новую ветку из этого состояния: git checkout -b temp-branch <хеш_коммита># Запушьте: git push -u origin temp-branch:master --force
git remote -v # Проверьте URL репозитория
git fetch origingit reset --hard origin/master
git log --oneline --graph --all -n 5
# Удаляем папку .git, где хранится вся историяrm -rf .git
# Создаем новый чистый репозиторийgit init
# Добавляем все файлыgit add .
# Делаем первый коммитgit commit -m "Initial commit (restarted)"
# Добавляем удаленный репозиторий (замените URL на свой)git remote add origin https://github.com
# Принудительно перезаписываем историю на GitHubgit push -u --force origin master
Если нужно просто перезаписать удаленный репозиторий текущим локальным состоянием, не удаляя .git:
git push -u --force origin main
Закладка панели Git в PHPStorm,
Local master – это ваша локальная ветка, которая хранится у вас на компьютере, а Remote origin/master – это удаленная копия этой ветки на сервере (например, GitHub, GitLab), причем origin – это стандартное имя для удаленного репозитория, а master – имя самой ветки, обозначая основную линию разработки, которую вы синхронизировали. Разница между ними показывает, есть ли у вас новые коммиты (отставание/опережение) перед отправкой на сервер
Как это выглядит в PHPStorm:
В контекстном меню Git в PhpStorm пункты, связанные с Reset, позволяют откатить состояние вашей ветки и рабочего каталога к определенному коммиту, причем "Reset current branch to Here" (Сбросить текущую ветку до здесь) сбрасывает ветку и рабочую копию до выбранного коммита, удаляя более поздние коммиты и изменения; остальные пункты меню Reset в PhpStorm (например, с опциями --soft, --mixed, --hard, или с указанием файлов) позволяют управлять тем, как именно сбрасываются история коммитов (HEAD), индекс (staging area) и рабочий каталог, давая контроль над тем, остаются ли изменения (untracked/modified) или полностью стираются.
Основные пункты меню и их значения:
Другие варианты Reset (часто доступны через "Reset to Commit" или "Reset with Options"):
Таким образом, пункты в меню PhpStorm — это удобные графические обертки над мощной командой git reset, позволяющие выбрать, как именно вы хотите откатить изменения: только историю, историю и индекс, или полностью очистить всё.
Настроить конфиг для гит:
git config --global user.email "borkic00@gmail.com"git config --global user.name "borkich"
Eдалить из кэша ВСЕ файлы, и добавить заново с учетом gitignore.
git rm -rf --cached .git add .
потом закоммитить:
git commit -m "fix gitignore"
Чтобы написать комментарий нужно, зарегистрироваться
Голосования и тесты: 0