Git команды

Значение: Инициализирует новый локальный репозиторий Git в текущей папке.
Что происходит: Создается скрытая папка .git, в которой хранится информация о репозитории, включая историю изменений, настройки, ветки и т. д.
Применение: Используется, чтобы превратить обычную папку в Git-репозиторий для управления версиями.

Значение: Добавляет файл index.html в индекс (staging area) для подготовки к фиксации (коммиту).
Что происходит:
Git начинает отслеживать изменения в файле index.html.
Файл добавляется в «ожидающий список» для последующего сохранения в истории версий (через git commit).
Применение: Используется, чтобы выбрать конкретные файлы, которые должны быть включены в следующий коммит.

  • Значение: Добавляет все изменения (включая новые файлы, изменения в существующих файлах и удаление файлов) в индекс (staging area).
  • Что происходит:
    • Все изменения во всех файлах в рабочем каталоге добавляются в индекс.
    • Если файлы были удалены, их удаление также будет отмечено для фиксации.
  • Применение: Используется, когда нужно зафиксировать все текущие изменения в проекте, без необходимости указывать файлы вручную.

 Альтернативы:

  • git add . — добавляет изменения только в текущей и вложенных директориях.
  • git add -u — добавляет только изменения и удаление, но не новые файлы.
  • Значение: Создает новый коммит с кратким сообщением "First release!", описывающим изменения.
  • Что происходит:
    • Все изменения, добавленные в индекс (staging area), фиксируются в истории версий репозитория.
    • Сообщение "First release!" служит описанием этого конкретного коммита.
  • Применение: Используется для сохранения состояния проекта в репозитории с комментарием о том, что изменилось.

Расшифровка:

  • commit — фиксирует изменения в репозитории.
  • -m "First release!" — добавляет сообщение коммита (обязательно в кавычках).

 Пример использования:

После команды git add (или git add -A) фиксируем изменения с описанием:bashKopeeri koodgit commit -m "Initial project setup"

  • Значение: Показывает текущее состояние рабочего каталога и индекса (staging area) в кратком формате.
  • Что происходит:
    • Отображает список измененных файлов, их статус и текущее состояние.
    • Используется сокращенные обозначения для статусов файлов:
      • M — модифицирован (изменен).
      • A — добавлен в индекс (staged).
      • D — удален.
      • ?? — неотслеживаемый файл (new file).
  • Применение: Удобно для быстрого просмотра изменений без избыточной информации.

Пример вывода:

M  index.html        # файл изменен
A new_file.css # файл добавлен в индекс
?? README.md # новый файл, неотслеживаемый

 В отличие от обычного git status, эта команда предоставляет сжатый и удобный для чтения формат.

  • Значение: Создает коммит с изменениями всех отслеживаемых файлов и добавляет сообщение "New line added".
  • Что происходит:
    • Флаг -a автоматически добавляет изменения всех отслеживаемых файлов (уже добавленных в репозиторий) в индекс (staging area).
    • Файлы, которые ранее не отслеживались (например, новые файлы), не включаются автоматически.
    • Коммит с указанным сообщением создается сразу после добавления изменений.
  • Применение: Удобно для быстрого создания коммита без отдельного вызова git add, если изменены только отслеживаемые файлы.

Эквивалентная последовательность:

git add -u   # Добавляет изменения всех отслеживаемых файлов
git commit -m "New line added"

 Полезно, если вы редактировали или удалили уже отслеживаемые файлы и хотите сразу их зафиксировать.

  • Значение: Показывает историю коммитов текущего репозитория.
  • Что происходит:
    • Выводится список всех коммитов в хронологическом порядке (от последнего к первому).
    • Каждый коммит содержит:
      • Хеш-коммита (уникальный идентификатор).
      • Имя и email автора.
      • Дату и время создания коммита.
      • Сообщение коммита.

Пример вывода:

commit abc1234def5678ghijk9012lmno3456pqrst7890
Author: John Doe <johndoe@example.com>
Date: Wed Jan 15 12:34:56 2025 +0000

Initial project setup

Полезные флаги:

  • git log --oneline — сокращенный вывод, показывает только хеш и сообщение:plaintextKopeeri koodabc1234 Initial project setup def5678 Added new features
  • git log -n 5 — показывает последние 5 коммитов.
  • git log --graph — визуализирует ветки в виде графа.
  • git log --stat — отображает, какие файлы и насколько изменились в каждом коммите.

 Полезно для анализа истории изменений и поиска нужного коммита.

  • Значение: Открывает справочную информацию о команде git status.
  • Что происходит:
    • Показывается документация с описанием того, что делает команда git status, какие есть флаги, параметры и как их использовать.
    • Документация открывается либо в терминале, либо в настроенном просмотрщике (например, man-странице).

Как использовать:

  • Выполните команду в терминале:bashKopeeri koodgit status --help
  • Либо используйте эквивалент:bashKopeeri koodman git-status

Альтернативный способ:

Если хотите открыть справку в браузере, используйте:

git help -w status

 Полезно, когда нужно уточнить детали работы команды git status или узнать о доступных опциях.

  • Значение: Показывает полный список всех доступных команд Git, включая основные и вспомогательные.
  • Что происходит:
    • Отображается разделенный на категории список команд:
      • Основные команды (Main Porcelain Commands), например, addcommitpush.
      • Вспомогательные команды (Ancillary Commands), например, configstashreflog.
      • Расширенные команды (Plumbing Commands), которые используются для низкоуровневой работы.
  • Применение: Используется для получения общего обзора всех команд Git, чтобы узнать доступные функции.

Как использовать:

  • Выполните:git help --all

Вывод:

Примерный формат вывода:

Main Porcelain Commands
add Commit changes to the repository
status Show the working tree status
push Update remote references
...

Ancillary Commands
config Get and set repository options
stash Stash changes for later application
...

Plumbing Commands
cat-file Provide content or type of repository objects
hash-object Compute object ID and optionally create object
...

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

  • Значение: Создает новую ветку с именем hello-world-images.
  • Что происходит:
    • Ветка создается на основе текущей активной ветки (по умолчанию main или другой, на которой вы находитесь).
    • Новая ветка не переключает вас на нее, то есть вы остаетесь на текущей ветке.

Применение:

Используется для работы над отдельными функциями, исправлениями или экспериментами, не затрагивая основную ветку.

Проверка:

Чтобы увидеть список веток, выполните:

git branch

Переключение на новую ветку:

Чтобы начать работать в этой ветке, выполните:

git checkout hello-world-images

или, начиная с Git 2.23, можно использовать:

git switch hello-world-images

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

Шаг 1: git fetch

  • Значение: Загружает изменения (новые коммиты, ветки и т. д.) из удаленного репозитория в локальный, но не объединяет их автоматически с текущей веткой.
  • Что происходит:
    • Получает обновления из удаленного репозитория и сохраняет их в локальном хранилище.
    • Изменения отображаются в удаленных ветках (например, origin/main).

Команда:

git fetch

Или указать конкретную ветку:

git fetch origin main

Шаг 2: git merge

  • Значение: Объединяет изменения, полученные через git fetch, в текущую локальную ветку.
  • Что происходит:
    • Вы должны явно указать, какую ветку объединить.
    • Git сливает изменения удаленной ветки (например, origin/main) с локальной веткой.

Команда:

git merge origin/main

Полная последовательность:

git fetch origin            # Получить изменения из удаленного репозитория
git merge origin/main # Объединить изменения с локальной веткой

Почему так?

Если вы хотите автоматизировать процесс, вместо этого можно использовать git pull, который выполняет и fetch, и merge за один шаг:git pull origin main

Использование fetch отдельно от merge дает вам возможность сначала проверить изменения, прежде чем сливать их в свою ветку.

  • Значение: Загружает все изменения из удаленного репозитория origin в локальный репозиторий, не обновляя текущую ветку автоматически.
  • Что происходит:
    • Получаются последние коммиты, новые ветки и обновления в существующих ветках с удаленного репозитория.
    • Изменения сохраняются в локальных копиях удаленных веток (например, origin/main), но не влияют на текущую рабочую ветку.

Пример сценария:

  1. Вы работаете в локальной ветке main.
  2. В удаленной ветке main появились новые коммиты.
  3. git fetch origin загрузит эти изменения в локальную копию origin/main.

Проверка загруженных изменений:

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

git log main..origin/main

Это покажет разницу между вашей локальной веткой main и удаленной origin/main.

Что дальше?

  • Если хотите слить изменения с вашей текущей веткой:bashKopeeri koodgit merge origin/main
  • Если хотите сразу объединить изменения без выполнения отдельных шагов, используйте:bashKopeeri koodgit pull origin main

 git fetch полезен для проверки удаленных изменений перед их слиянием.

*.temp — это шаблон, часто используемый в файлах конфигурации, таких как .gitignore, для указания всех файлов с расширением .temp.

Что означает:

  • * — любой набор символов (маска).
  • .temp — указывает файлы с расширением .temp.

Пример использования в .gitignore:

Если вы добавите строку *.temp в файл .gitignore, Git перестанет отслеживать любые файлы с этим расширением. Это удобно для исключения временных файлов из репозитория.

Пример .gitignore:

*.temp
*.log
  • Исключает все файлы с расширениями .temp и .log.

Где еще используется:

  • В командах оболочки (например, в Linux или Windows):bashKopeeri koodrm *.temp Удаляет все файлы с расширением .temp в текущей директории.

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

Что означает:

  • temp — фиксированная часть имени файла.
  • ? — любой одиночный символ (заменяет ровно один символ).
  • .log — расширение файла.

Пример:

  • temp1.log — подходит под шаблон.
  • tempA.log — подходит под шаблон.
  • temp.log — не подходит, потому что отсутствует символ вместо ?.

Где используется:

  1. В командах оболочки (например, Bash или CMD):
    • Удалить все файлы, которые соответствуют шаблону:bashKopeeri koodrm temp?.log
    • Найти файлы:bashKopeeri koodls temp?.log
  2. В файле .gitignore: Если вы добавите temp?.log в .gitignore, Git будет игнорировать только файлы с именами, соответствующими шаблону:plaintextKopeeri koodtemp?.log
  3. В скриптах или программах: Используется для поиска файлов, соответствующих заданному паттерну.

Пример файлов, которые подходят:

  • temp1.log
  • temp2.log
  • tempX.log

Пример файлов, которые не подходят:

  • temp.log (нет символа вместо ?).
  • temp12.log (два символа вместо одного).

 Полезно для точного указания шаблонов имен файлов с одиночным изменяемым символом.

  • Значение: Показывает историю коммитов в сокращенном формате, где каждый коммит отображается в одну строку.
  • Что происходит:
    • Каждый коммит отображается с его коротким хешем и сообщением.
    • Удобно для быстрого просмотра истории изменений.

Пример вывода:

abc1234 Added new feature
def5678 Fixed bug in authentication
98765ab Initial project setup
  • abc1234 — сокращенный хеш коммита.
  • Added new feature — сообщение коммита.

Когда использовать:

  • Если вам нужно быстро оценить историю коммитов.
  • Чтобы найти нужный коммит, не перегружая вывод подробной информацией.

Полезные сочетания:

  • git log --oneline --all — выводит историю всех веток.
  • git log --oneline --graph — добавляет визуализацию ветвлений:plaintextKopeeri kood* abc1234 Added new feature | * def5678 Fixed bug in authentication |/ * 98765ab Initial project setup
  • git log --oneline -n 5 — показывает последние 5 коммитов.

 Удобный инструмент для быстрого анализа истории проекта.