Главная страница
Навигация по странице:

  • ВЫПОЛНЕНИЕ КОМАНДЫ GIT STATUS КОМАНДОЙ WATCH

  • Добавление файлов для отслеживания

  • Игнорирование файлов в репозитории

  • Fixed the currency conversion bug

  • Просмотр изменений перед коммитом

  • Просмотр изменений в графическом приложении командой git difftool

  • Частота сохранения изменений

  • Удаление файлов из репозитория

  • Чистыйкод дляпродолжающи х


    Скачать 7.85 Mb.
    НазваниеЧистыйкод дляпродолжающи х
    Дата13.05.2023
    Размер7.85 Mb.
    Формат файлаpdf
    Имя файлаPython_Chisty_kod_dlya_prodolzhayuschikh_2022_El_Sveygart.pdf
    ТипДокументы
    #1127485
    страница26 из 40
    1   ...   22   23   24   25   26   27   28   29   ...   40
    md wizcoin
    C:\Users\Al>cd wizcoin
    C:\Users\Al\wizcoin>git init
    Initialized empty Git repository in C:/Users/Al/wizcoin/.git/

    244
    Глава 12.Git и организация программных проектов
    Когда вы превращаете папку в репозиторий Git командой git init
    , все файлы в ней в исходном состоянии являются неотслеживаемыми. Для папки wizcoin команда git init создает папку wizcoin/.git с метаданными репозитория Git. На- личие папки
    .git превращает папку в репозиторий Git; без нее остается просто набор файлов с исходным кодом в обычной папке. Файлы никогда не следует изменять непосредственно в папке
    .git
    , поэтому на нее можно не обращать внимания. Собственно, имя
    .git присваивается ей из-за того, что многие опе- рационные системы автоматически скрывают папки и файлы, имена которых начинаются с точки.
    Теперь в вашем рабочем каталоге
    C:\Users\Al\wizcoin создан репозиторий. Репо- зиторий на вашем компьютере называется локальным; репозиторий на другом компьютере называется удаленным. Эти различия важны, потому что сохранен- ные данные часто приходится размещать как в локальных, так и в удаленных репозиториях, чтобы вы могли работать с другими разработчиками над одним проектом.
    ВЫПОЛНЕНИЕ КОМАНДЫ GIT STATUS КОМАНДОЙ WATCH
    При использовании средств командной строки git часто приходится выпол- нить команду git status для получения информации о статусе репозитория.
    Вместо того чтобы вводить эту команду вручную, можно воспользоваться командой watch
    . Команда watch выполняет заданную команду через каждые две секунды и обновляет экран новыми результатами.
    Для Windows команду watch можно загрузить со страницы https://invent-
    withpython.com/watch.exe и поместить ее в папку из PATH (например, C:\
    Windows). Пользователи macOS могут зайти на сайт https://www.macports.
    org/, загрузить и установить MacPorts, а затем выполнить команду sudo ports install watch
    . В системе Linux команда watch уже установлена.
    Когда установка будет завершена, откройте новое окно командной строки или терминала, перейдите в папку проекта репозитория Git командой cd и выполните команду watch
    "git status"
    . Команда watch выполняет git status каждые две секунды и выводит полученные результаты на экран.
    Окно можно оставить открытым, пока вы используете командную строку
    Git в другом окне терминала, чтобы наблюдать за изменениями статуса репозитория в реальном времени. Вы можете открыть другое окно тер- минала и выполнить команду watch
    "git log
    -online"
    , чтобы просмотреть сводку вносимых изменений (также обновляемую в реальном времени).
    С этой информацией вам не придется гадать, что вводимые вами команды
    Git делают с репозиторием.

    Создание репозитория Git на вашем компьютере
    245
    После того как репозиторий будет создан, команда git может использоваться для добавления файлов и отслеживания изменений в рабочем каталоге. Вы- полнив коман ду git status в созданном репозитории, вы получите следующую информацию:
    C:\Users\Al\wizcoin>git status
    On branch master
    No commits yet nothing to commit (create/copy files and use "git add" to track)
    Из выходных данных команды видно, что в репозитории еще ничего не сохранено.
    Добавление файлов для отслеживания
    Только отслеживаемые файлы можно сохранять, откатывать к предыдущей версии или выполнять иные операции командой git
    . Выполните команду git status
    , чтобы просмотреть статус файлов в папке проекта:
    C:\Users\Al\wizcoin>git status
    On branch master
    No commits yet
    Untracked files:

    (use "git add ..." to include in what will be committed)
    .coveragerc
    .gitignore
    LICENSE.txt
    README.md
    --snip-- tox.ini nothing added to commit but untracked files present (use "git add" to track)
    Ни один файл в папке wizcoin в настоящее время не отслеживается

    . Чтобы отслеживать их, следует выполнить исходное сохранение этих файлов. Процесс сохранения состоит из двух этапов: выполнения команды git add для каждого со- храняемого файла и последующего выполнения команды git commit для создания коммитов всех этих файлов. После того как файл будет сохранен, Git начинает его отслеживать.
    Команда git add переводит файлы из неотслеживаемого или измененного со- стояния в индексированное состояние. Можно выполнить команду git add для каждого файла, который нужно проиндексировать (например, git add
    .coveragerc
    ,

    246
    Глава 12.Git и организация программных проектов git add
    .gitignore
    , git add
    LICENSE.txt и т. д.), но это утомительно. Лучше вос- пользоваться подстановочным символом
    *
    для добавления сразу нескольких файлов. Например, команда git add
    *.py добавляет все файлы
    .py из текущего рабочего каталога и его подкаталогов. Чтобы добавить все неотслеживаемые файлы, используйте точку (
    ):
    C:\Users\Al\wizcoin>git add .
    Выполните команду git status
    , чтобы просмотреть список проиндексированных файлов:
    C:\Users\Al\wizcoin>git status
    On branch master
    No commits yet
    Changes to be committed:

    (use "git rm --cached ..." to unstage)
    new file: .coveragerc

    new file: .gitignore
    --snip-- new file: tox.ini
    Вывод команды git status сообщает, какие файлы были проиндексированы для коммита при следующем выполнении команды git commit

    . Также из него можно узнать, что это новые файлы, добавленные в репозиторий

    , а не существующие файлы в репозитории, которые были изменены.
    После выполнения команды git add для выбора файлов, добавляемых в репозито- рий, выполните команду git commit
    -m
    "Adding new files to the repo."
    (или с другим похожим сообщением). Потом снова выполните команду git status
    , чтобы про- смотреть отчет о статусе репозитория:
    C:\Users\Al\wizcoin>git commit -m "Adding new files to the repo."
    [master (root-commit) 65f3b4d] Adding new files to the repo.
    15 files changed, 597 insertions(+)
    create mode 100644 .coveragerc create mode 100644 .gitignore
    --snip-- create mode 100644 tox.ini
    C:\Users\Al\wizcoin>git status
    On branch master nothing to commit, working tree clean
    Обратите внимание: файлы, перечисленные в файле
    .gitignore
    , не включаются в ин- дексирование. Об этом я расскажу в следующем разделе.

    Создание репозитория Git на вашем компьютере
    247
    Игнорирование файлов в репозитории
    Файлы, не отслеживаемые Git, отображаются как неотслеживаемые при выпол- нении команды git status
    . Однако в процессе написания кода некоторые файлы можно исключить из системы контроля версий, чтобы предотвратить их случайное отслеживание. К этой категории относятся:
    временные файлы в папке проекта;
    файлы
    .pyc
    ,
    .pyo и
    .pyd
    , генерируемые интерпретатором Python при выпол- нении программ
    .py
    ;
    папки
    .tox
    , htmlcov и другие папки, генерируемые различными средствами разработчика;
    другие откомпилированные или сгенерированные файлы, которые можно сгенерировать заново (потому что репозиторий предназначен для исход- ных файлов, а не для производных файлов, которые генерируются на их основе);
    файлы с исходным кодом, содержащие пароли баз данных, маркеры аутентификации, номера кредитных карт или другие конфиденциальные данные.
    Чтобы предотвратить включение этих файлов, создайте текстовый файл с именем
    .gitignore и перечислите в нем файлы и папки, которые не должны отслеживаться
    Git. Git автоматически исключает их из команд git add или git commit
    , и они не будут отображаться при выполнении команды git status
    Файл
    .gitignore
    , созданный шаблоном cookiecutter-basicpythonproject
    , выглядит примерно так:
    ates looks like this:
    # Байт-компилируемые / оптимизированные / файлы DLL
    __pycache__/
    *.py[cod]
    *$py.class
    --snip--
    В файле
    .gitignore символ
    *
    используется для шаблонов, а
    #
    — для комментариев.
    За дополнительной информацией обращайтесь к электронной документации по адресу https://git-scm.com/docs/gitignore.
    Файл
    .gitignore также следует добавить в репозиторий Git, чтобы он был у других программистов, клонировавших ваш репозиторий. Если вы хотите видеть, какие файлы в вашем рабочем каталоге игнорируются на основании настроек в
    .gitignore
    , выполните команду git ls-files --other --ignored --exclude-standard

    248
    Глава 12.Git и организация программных проектов
    Сохранение изменений
    После добавления новых файлов в репозиторий вы можете продолжить писать код для вашего проекта. Когда потребуется создать очередной коммит, выполните команду git add для индексирования всех измененных файлов и команду git commit
    -m
    <сообщение> для сохранения всех индексированных файлов. Впрочем, это проще делается одной командой git commit
    -am
    <сообщение>:
    C:\Users\Al\wizcoin>git commit -am "Fixed the currency conversion bug."
    [master (root-commit) e1ae3a3] Fixed the currency conversion bug.
    1 file changed, 12 insertions(+)
    Если вы хотите сохранить только некоторые (но не все) измененные файлы, не добавляйте ключ
    -a в
    -am и перечислите файлы после сообщения — например, git commit
    -m
    <сообщение> file1.py file2.py
    Сообщение
    Fixed the currency conversion bug (Исправлена ошибка конвертации валюты) содержит подсказку на будущее: оно напоминает, какие изменения были внесены в этом коммите. Не поддавайтесь искушению написать короткое обобщен- ное сообщение вида «Обновленный код», «Исправлены некоторые ошибки» или просто «x» (потому что пустые сообщения запрещены). Через три недели, когда вам захочется вернуться к более ранней версии вашего кода, подробные сообще- ния в каждом коммите сэкономят вам немало времени, когда вы будете выбирать, к какой именно версии следует вернуться.
    Если вы забудете добавить аргумент командной строки
    -m
    "
    <сообщение>
    "
    , Git от- кроет текстовый редактор Vim в окне терминала. Описание Vim выходит за рамки книги, поэтому нажмите клавишу
    Esc и введите qa!
    , чтобы безопасно завершить
    Vim и отменить коммит. Затем снова введите команду git commit
    , на этот раз с ар- гументом командной строки
    -m
    "
    <сообщение>
    "
    Чтобы посмотреть примеры профессиональных сообщений коммитов, обращайтесь к истории коммитов веб-фреймворка Django (https://github.com/django/jango/
    commits/master. Так как Django является большим проектом с открытым кодом, коммиты выполняются часто, а сообщения коммитов формализованы.
    Редкие коммиты с невразумительными сообщениями могут неплохо работать в небольших персональных проектах, но над Django работает более 1000 участ- ников. Некачественные сообщения коммитов от любого участника создадут проблемы для всех.
    Файлы были безопасно сохранены в репозитории Git. Еще раз выполните команду git status
    , чтобы просмотреть их статус:

    Создание репозитория Git на вашем компьютере
    249
    C:\Users\Al\wizcoin>git status
    On branch master nothing to commit, working tree clean
    Сохранив индексированные файлы, вы вернули их в сохраненное состояние, и Git говорит, что рабочее дерево чисто; другими словами, в нем нет измененных или индексированных файлов.
    Напомню, что при добавлении файлов в репозиторий Git файлы перешли из неот- слеживаемого состояния в индексированное, а затем в сохраненное. Теперь файлы готовы к будущим изменениям.
    Заметим, что в репозитории Git нельзя сохранять папки. Git автоматически вклю- чает папки в репозитории при сохранении хранящихся в них файлов, но сохранить пустую папку не получится.
    Если вы допустили ошибку в последнем сообщении коммита, его можно переписать командой git commit
    --amend
    -m
    "
    <новое_сообщение>
    "
    Просмотр изменений перед коммитом
    Прежде чем сохранять код, следует быстро просмотреть изменения, которые будут сохранены при выполнении команды git commit
    . Для просмотра различий между рабочей копией кода и последним сохраненным кодом можно воспользоваться командой git diff command
    Рассмотрим пример использования git diff
    . Откройте файл
    README.md в текстовом редакторе или IDE. (Вы должны были создать этот файл при запуске Cookiecutter.
    Если он не существует, создайте пустой текстовый файл и сохраните его под именем
    README.md
    .) Это файл с разметкой Markdown, но, как сценарий Python, он должен быть записан в формате простого текста. Замените текст
    TODO
    - fill this in later в приведенном ниже тексте из раздела «Quickstart Guide» следующим фрагментом
    (пока не исправляйте ошибку xample
    ; мы сделаем это позднее):
    Quickstart Guide
    ----------------
    Here's some xample code demonstrating how this module is used:
    >>> import wizcoin
    >>> coin = wizcoin.WizCoin(2, 5, 10)
    >>> str(coin)
    '2g, 5s, 10k'
    >>> coin.value()
    1141

    250
    Глава 12.Git и организация программных проектов
    Прежде чем добавить и сохранить файл
    README.md
    , выполните команду git diff для просмотра внесенных изменений:
    C:\Users\Al\wizcoin>git diff
    diff --git a/README.md b/README.md index 76b5814..3be49c3 100644
    --- a/README.md
    +++ b/README.md
    @@ -13,7 +13,14 @@ To install with pip, run:
    Quickstart Guide
    ----------------
    -TODO - fill this in later
    +Here's some xample code demonstrating how this module is used:
    +
    + >>> import wizcoin
    + >>> coin = wizcoin.WizCoin(2, 5, 10)
    + >>> str(coin)
    + '2g, 5s, 10k'
    + >>> coin.value()
    + 1141
    Contribute
    ----------
    Результат показывает, что файл
    README.md в рабочей копии изменился по сравне- нию с файлом
    README.md
    , существовавшим при последнем сохранении репозито- рия. Строки, начинающиеся со знака
    -
    , были удалены; строки, начинающиеся со знака
    +
    , были добавлены.
    В процессе просмотра изменений также можно заметить опечатку — «xample» вместо «example». Исправим ее, а потом снова выполним команду git diff
    , чтобы проверить изменения и сохранить их в репозитории:
    C:\Users\Al\wizcoin>git diff
    diff --git a/README.md b/README.md index 76b5814..3be49c3 100644
    --- a/README.md
    +++ b/README.md
    @@ -13,7 +13,14 @@ To install with pip, run:
    Quickstart Guide
    ----------------
    -TODO - fill this in later
    +Here's some example code demonstrating how this module is used:
    --snip--
    C:\Users\Al\wizcoin>git add README.md
    C:\Users\Al\wizcoin>git commit -m "Added example code to README.md"
    [master 2a4c5b8] Added example code to README.md
    1 file changed, 8 insertions(+), 1 deletion(-)
    Исправление сохранено в репозитории.

    Создание репозитория Git на вашем компьютере
    251
    Просмотр изменений в графическом приложении командой git difftool
    Изменения проще просматривать в программе с графическим интерфейсом. Для
    Windows можно загрузить WinMerge (https://winmerge.org/) — бесплатную програм- му с открытым кодом. В Linux можно установить либо Meld командой sudo apt-get install meld
    , либо Kompare командой sudo apt-get install kompare
    . В macOS для установки программы tkdiff начните с команд, которые устанавливают и настраива- ют Homebrew (менеджер пакетов для установки программ), а затем воспользуйтесь
    Homebrew для установки tkdiff:
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/
    master/install.sh)"
    brew install tkdiff
    Чтобы настроить Git для использования этих программ, выполните команду git config diff.tool
    <название>, где <название> — winmerge
    , tkdiff
    , meld или kompare
    Затем выполните команду git difftool
    <
    имя_файла
    >
    для просмотра изменений, внесенных в файл, в графическом интерфейсе программы (рис. 12.5).
    Рис. 12.5. Просматривать результаты в программе с графическим интерфейсом
    (WinMerge в данном случае) удобнее, чем в текстовом выводе git diff

    252
    Глава 12.Git и организация программных проектов
    Кроме того, выполните команду git config
    --global difftool.prompt false
    , чтобы система Git не запрашивала подтверждения каждый раз, когда вы хотите запустить программу просмотра изменений. Если вы установили Git-клиент с графическим интерфейсом, вы также можете настроить его для использования этих инструментов
    (а может быть, он содержит собственные визуальные средства сравнения).
    Частота сохранения изменений
    Хотя системы контроля версий позволяют вернуть файлы к более раннему комми- ту, может возникнуть вопрос, насколько часто следует сохранять изменения. Если делать это слишком часто, вам придется пробиваться через множество незначи- тельных комментариев, чтобы найти нужную версию кода. Если делать редко, то каждый коммит будет содержать множество изменений и возврат к конкретной версии отменит больше изменений, чем вам хотелось бы. На практике программи- сты обычно выполняют коммиты реже, чем следовало бы.
    Код следует сохранять при завершении блока функциональности, класса или ис- правления ошибки. Не сохраняйте код, содержащий синтаксические ошибки или очевидно неработоспособный. Коммиты могут состоять из нескольких строк или нескольких сотен строк измененного кода, но в любом случае вы должны иметь возможность вернуться к более ранней копии и все еще иметь в распоряжении рабочую программу. Всегда выполняйте все модульные тесты перед сохранением.
    В идеале все тесты должны проходить (а если они не проходят, упомяните об этом в сопроводительном сообщении).
    Удаление файлов из репозитория
    Если вам не нужно, чтобы какой-либо файл отслеживался в Git, вы не можете про- сто удалить его из файловой системы. Это необходимо сделать через Git командой git rm
    , которая также приказывает Git перестать отслеживать файл. Чтобы потре- нироваться в выполнении этой операции, выполните команду echo
    "Test file"
    >
    deleteme.txt
    , чтобы создать маленький файл с именем deleteme.txt и содержимым "Test file"
    . Затем сохраните файл в репозитории следующими командами:
    C:\Users\Al\wizcoin>
    1   ...   22   23   24   25   26   27   28   29   ...   40


    написать администратору сайта