Python и открытая разработка; использование Git

Сообщество Python и разработка

Использование Git

Система контроля версий:

Коротко о VCS/DVCS

VCS:

Цикл работы с VCS

Используется «централизованный репозиторий на всех»

  1. Синхронизация
  2. Редактирование / отладка
  3. Оформление коммита
  4. Публикация

Проблема: совместная работа над одним корпусом текстов

DVCS

Git

Работа с Git как с локальной VCS

Структура локального хранилища:

Цикл работы с локальным хранилищем

  1. Инициализация.
    • git init

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

      git status

  3. Подготовка коммита — надо пометить файлы, которые в него войдут.
    • git add список файлов

    • В действительности добавлять можно даже не файлы, а отдельные изменения в них (см. git add --interactive)

    • Можно добавить сразу всё:

      git add *

    • Если сейчас сделать git status, увидим изменения, которые будут добавлены в коммит

  4. Оформление коммита — создаём на основании изменений рабочей копии новое дерево и обновляем репозиторий
    • git commit

    • В процессе коммита запускается редактор, в котором надо отредактировать коммит-сообщение
      • Чтобы поменять редактор с vim на что-нибудь иное, надо изменить файл .git/config. Это можно сделать, например, с помощью командной строки git config core.editor 'ваш любимый редактор'

      • Обратите внимание на то, что git запускает редактор в интерактивном (foreground) режиме, дожидается его завершения, и только потом продолжает работу. Поэтому просто gvim, например, не годится, используйте gvim -f

    • При этом в репозитории создаётся три типа объектов
      1. это новое дерево (список всех файлов) — tree

      2. коммит-сообщение — commit

      3. и все изменённые файлы (blob)

    • переход к п. 1.

Историю коммитов можно посмотреть командой git log. Для того, чтобы отключить постраничный просмотр, используйте git -P log.

Все объекты имеют уникальный ID (это SHA-1 хеш). Объект с ID, допустим, 8dccc7a1d248ea923156b2e762e576b44e07886a, хранятся в файле с именем

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

Например, если вам не понравился последний коммит, и вы хотите в нём что-то поменять — переписать сообщение, поправить изменение в файле и т. п. — можно сделать нужные изменения и выполнить git commit --amend. Тогда новый коммит не добавится в историю, а заменит в ней старый. В него, разумееется, попадёт всё, чем текущая рабочая копия отличается от дерева в предпоследнем.

Д/З

LecturesCMC/PythonDevelopment2023/01_Intro (последним исправлял пользователь FrBrGeorge 2023-02-14 21:53:09)