<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Заядлый</title><author><name>Заядлый</name></author><id>https://teletype.in/atom/kurilkv</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/kurilkv?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@kurilkv?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kurilkv"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/kurilkv?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-01T18:30:13.157Z</updated><entry><id>kurilkv:CodimGitHub</id><link rel="alternate" type="text/html" href="https://teletype.in/@kurilkv/CodimGitHub?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=kurilkv"></link><title>Ультимативный гайд по Git &amp; GitHub(PyCharm/Terminal)</title><published>2023-08-09T10:19:50.656Z</published><updated>2023-08-11T12:34:18.070Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/5e/94/5e94a297-4fe1-41dd-8d60-6661ffada1ae.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/fc/1c/fc1cb700-2c98-4e77-8693-0993eef1be8b.jpeg&quot;&gt;Время прочтения: 10 минут</summary><content type="html">
  &lt;figure id=&quot;VetT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/fc/1c/fc1cb700-2c98-4e77-8693-0993eef1be8b.jpeg&quot; width=&quot;640&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cJMW&quot;&gt;&lt;em&gt;Время прочтения: &lt;code&gt;25 минут&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;ceFB&quot;&gt;&lt;strong&gt;Привет!&lt;/strong&gt; Недавно я загорелся идеей изучить одну из систем контроля версий. Лишним точно не будет, к тому же я мог бы заливать открытый код своих проектов в репозиторий для общего доступа (и публикации в &lt;a href=&quot;https://t.me/CCrypty&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Кодим Крипту&lt;/em&gt;&lt;/a&gt;) — выбор пал на &lt;strong&gt;Git &lt;/strong&gt;и &lt;strong&gt;GitHub&lt;/strong&gt;, как Веб-сервис, основанный на &lt;strong&gt;Git&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;kiFb&quot;&gt;И все бы хорошо, но перерыв весь dev телеграм и часть ютуба я пришел к выводу, что &lt;em&gt;нормальных, развернутых и понятных гайдов по &lt;strong&gt;Git &lt;/strong&gt;просто нет.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;GGuP&quot;&gt;Что ж, посидев несколько дней и наконец поняв, как все работает, я, в партнерстве со вторым админом канала решил написать ультимативный гайд по &lt;strong&gt;Git &lt;/strong&gt;&amp;amp; &lt;strong&gt;GitHub&lt;/strong&gt;, тем самым сэкономить вам кучу сил, времени и нервов. &lt;/p&gt;
  &lt;p id=&quot;EZTI&quot;&gt;Эта статья состоит из двух глав, в каждой из которых есть &lt;strong&gt;Основная часть &lt;/strong&gt;и &lt;strong&gt;Advanced&lt;/strong&gt;, если основ мало. Обсудим работу &lt;strong&gt;Git &lt;/strong&gt;при помощи интерфейса &lt;strong&gt;PyCharm&lt;/strong&gt;, а также по старинке через &lt;strong&gt;терминал&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;3ACO&quot;&gt;Статья ориентирована на новичка, но даже если вы таковым не являетесь — не уходите, возможно вы почерпнете здесь что-то новое для себя. Новичок же получит ВСЮ необходимую базу для полноценной работы с &lt;strong&gt;Git &lt;/strong&gt;на первых порах. &lt;/p&gt;
  &lt;p id=&quot;yB8y&quot;&gt;&lt;strong&gt;Первая Глава - &lt;a href=&quot;https://t.me/kurilkv&quot; target=&quot;_blank&quot;&gt;Заядлый&lt;br /&gt;&lt;/a&gt;Вторая Глава - &lt;a href=&quot;https://t.me/papa_nft&quot; target=&quot;_blank&quot;&gt;Глеб&lt;br /&gt;&lt;/a&gt;Авторы канала - &lt;a href=&quot;https://t.me/CCrypty&quot; target=&quot;_blank&quot;&gt;Кодим крипту&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Q5J6&quot;&gt;Это наверное первый действительно всеобъемлющий гайд по &lt;strong&gt;Git &lt;/strong&gt;&amp;amp; &lt;strong&gt;GitHub&lt;/strong&gt;, который сможет понять даже твоя бабушка, &lt;strong&gt;Поехали!&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;P4Ms&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;zIqY&quot;&gt;Как читать эту статью?&lt;/h3&gt;
  &lt;p id=&quot;WdGf&quot;&gt;Первая Глава нашей работы целиком и полностью посвящена работе с &lt;strong&gt;Git &lt;/strong&gt;при помощи встроенного интерфейса &lt;strong&gt;PyCharm&lt;/strong&gt;, но даже если вы не юзаете &lt;strong&gt;PyCharm &lt;/strong&gt;- первая глава является обязательной к прочтению(хотя бы просто к прочтению, можно не повторять действия) для дальнейшего понимания материала и формирования в голове общего алгоритма работы с &lt;strong&gt;Git&lt;/strong&gt;. &lt;/p&gt;
  &lt;p id=&quot;PEBk&quot;&gt;В остальном же, старайтесь не просто &amp;quot;пробегаться&amp;quot; по статье, а пытаться реализовать ту или иную механику на своем собственном проекте, именно так вы вынесете максимальный &lt;em&gt;impact &lt;/em&gt;для себя из этой статьи.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;0rD9&quot;&gt;&lt;strong&gt;Внимательно будешь читать статью - найдешь тикет на 10 проходок в наш {Layer  1} чатик:)&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;9H1a&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;GEUU&quot;&gt;Навигация&lt;/h2&gt;
  &lt;p id=&quot;L1ZV&quot;&gt;- &lt;a href=&quot;#CorX&quot;&gt;Установка Git&lt;br /&gt;&lt;/a&gt;- &lt;strong&gt;ГЛАВА&lt;/strong&gt; 1: &lt;a href=&quot;#H084&quot;&gt;&lt;strong&gt;Git &amp;amp; GitHub через PyCharm&lt;/strong&gt;&lt;br /&gt;&lt;/a&gt;    &lt;strong&gt; База:&lt;/strong&gt;     1.&lt;a href=&quot;#R7Xn&quot;&gt;Создание проекта и запуск VCS&lt;/a&gt;&lt;br /&gt;        2. &lt;a href=&quot;#L0JM&quot;&gt;.gitignore &lt;/a&gt;&lt;br /&gt;        3. &lt;a href=&quot;#hdfl&quot;&gt;Начинаем отслеживать файлы&lt;/a&gt;&lt;br /&gt;       4.&lt;a href=&quot;#qo7Q&quot;&gt;Первый Коммит&lt;/a&gt;&lt;br /&gt;        5. &lt;a href=&quot;#Bfid&quot;&gt;Просмотр изменений, откат&lt;/a&gt;&lt;br /&gt;        6.&lt;a href=&quot;#Bey9&quot;&gt;push&lt;/a&gt;&lt;br /&gt;        7. &lt;a href=&quot;#gN92&quot;&gt;pull&lt;/a&gt;&lt;br /&gt;        &lt;a href=&quot;#VnBN&quot;&gt;Промежуточные итоги&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;tNtG&quot;&gt;&lt;strong&gt;    Advanced LVL:&lt;br /&gt;         &lt;/strong&gt;1. &lt;a href=&quot;#bRVr&quot;&gt;Клонируем проект&lt;br /&gt;&lt;/a&gt;        2. &lt;a href=&quot;#hpSZ&quot;&gt;Установка venv&lt;/a&gt;&lt;br /&gt;        3. &lt;a href=&quot;#yG0L&quot;&gt;&lt;code&gt;requirements.txt&lt;/code&gt;&lt;/a&gt;&lt;br /&gt;        4. &lt;a href=&quot;#JLao&quot;&gt;Создаем новую ветку&lt;/a&gt;&lt;br /&gt;        5. &lt;a href=&quot;#oRpl&quot;&gt;Pull-request&lt;/a&gt;&lt;br /&gt;        6. &lt;a href=&quot;#04gm&quot;&gt;Переход в master branch&lt;/a&gt;&lt;br /&gt;        &lt;a href=&quot;#3Jkq&quot;&gt;Промежуточные итоги&lt;/a&gt;&lt;br /&gt;  &lt;/p&gt;
  &lt;p id=&quot;YvBJ&quot;&gt;- &lt;strong&gt;ГЛАВА 2: &lt;a href=&quot;#xd0e&quot;&gt;Git &amp;amp; GitHub через Terminal&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;    &lt;strong&gt;База:&lt;/strong&gt;&lt;br /&gt;        1. &lt;a href=&quot;#yIce&quot;&gt;Настройка Git&lt;br /&gt;&lt;/a&gt;        2. &lt;a href=&quot;#mWFn&quot;&gt;Инициализация репозитория&lt;/a&gt;&lt;br /&gt;        3. &lt;a href=&quot;#6duo&quot;&gt;Области Git&lt;/a&gt;&lt;br /&gt;        4. &lt;a href=&quot;#UitW&quot;&gt;Статусы отслеживания файлов&lt;/a&gt;&lt;br /&gt;        5. &lt;a href=&quot;#OxxP&quot;&gt;.gitignore&lt;/a&gt;&lt;br /&gt;        6. &lt;a href=&quot;#c4MQ&quot;&gt;Создание проекта&lt;/a&gt;&lt;br /&gt;        7. &lt;a href=&quot;#owRd&quot;&gt;Первый Коммит&lt;/a&gt;&lt;br /&gt;        8. &lt;a href=&quot;#zWBW&quot;&gt;Второй Коммит&lt;/a&gt;&lt;br /&gt;        9. &lt;a href=&quot;#1IWS&quot;&gt;Перемещение между версиями&lt;/a&gt;&lt;br /&gt;        10. &lt;a href=&quot;#pB3j&quot;&gt;Ветки&lt;/a&gt; &lt;br /&gt;        11. &lt;a href=&quot;#DFTr&quot;&gt;Remote репозитории&lt;/a&gt;&lt;br /&gt;        12. &lt;a href=&quot;#JA9m&quot;&gt;Связь local и remote repository&lt;/a&gt;&lt;br /&gt;        &lt;a href=&quot;#aj7e&quot;&gt;Промежуточные итоги&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;exBL&quot;&gt;&lt;strong&gt;    Advanced LVL:&lt;br /&gt;&lt;/strong&gt;        1. &lt;a href=&quot;#QWYk&quot;&gt;Слияние веток&lt;/a&gt;&lt;br /&gt;        2. &lt;a href=&quot;#j6mp&quot;&gt;Перемещение&lt;/a&gt;&lt;br /&gt;        3. &lt;a href=&quot;#87pk&quot;&gt;Pull-request&lt;/a&gt;&lt;br /&gt;        &lt;a href=&quot;#vNXj&quot;&gt;Промежуточные итоги&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;IPak&quot;&gt;- &lt;a href=&quot;#Z4RT&quot;&gt;&lt;strong&gt;Заключение&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;- &lt;strong&gt;Приложение А:&lt;/strong&gt; &lt;a href=&quot;#fdlh&quot;&gt;Git Справочник&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;9ruX&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;CorX&quot; data-align=&quot;center&quot;&gt;Установка Git&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Wz8H&quot;&gt;Это первое, с чего стоит начать вне зависимости от того, какой из способов вы выберете(PyCharm/Terminal), все просто:&lt;/p&gt;
  &lt;ul id=&quot;aQvN&quot;&gt;
    &lt;li id=&quot;mjHz&quot;&gt;Скачайте клиент с &lt;a href=&quot;https://git-scm.com/downloads&quot; target=&quot;_blank&quot;&gt;официального сайта&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;KUhV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/45/bb455dfb-15f2-45c1-aa3f-a3a009309cf1.png&quot; width=&quot;892&quot; /&gt;
    &lt;figcaption&gt;Выбирайте свою разрядность системы&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Mxwa&quot;&gt;Выполните установку, &lt;strong&gt;не меняя никаких пунктов&lt;/strong&gt;, кроме расположения(по желанию)&lt;/p&gt;
  &lt;figure id=&quot;Zq68&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/70/d6709ca0-aefd-4e4a-9458-8781ca7c8a2e.png&quot; width=&quot;580&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;OqrY&quot;&gt;&lt;strong&gt;Готово! &lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;lTtH&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;H084&quot; data-align=&quot;center&quot;&gt;ГЛАВА 1: Git &amp;amp; GitHub через PyCharm (by заядлый)&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;blockquote id=&quot;liVi&quot;&gt;&lt;strong&gt;Дисклеймер:&lt;/strong&gt; Вы вольны использовать любой веб-сервис с Git помимо GitHub, интерфейс везде +- один&lt;/blockquote&gt;
    &lt;p id=&quot;CMiv&quot;&gt;Этот раздел посвящен работе с Git при помощи встроенного интерфейса PyCharm, если вы по какой-то причине кодите на питоне и до сих пор не используете PyCharm — то это как минимум странно. Одумайтесь. &lt;/p&gt;
    &lt;p id=&quot;QkAW&quot;&gt;Вообще PyCharm платный, но для работы с Git вам хватит и бесплатной версии (кстати если вы учитесь в тех. вузе, то вероятно, у Вашего университета уже приобретена лицензия на JetBrains, попробуйте)&lt;/p&gt;
    &lt;p id=&quot;Md6Q&quot;&gt;Пока сам изучал материал, натыкался на додиков, которые работают с Git в Pycharm через терминал.. я же считаю, что мы обязаны использовать все возможности IDE, иначе проще тогда писать код в блокноте.&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;HSJ4&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;R7Xn&quot; data-align=&quot;center&quot;&gt;1. Создание проекта и запуск VCS&lt;/h3&gt;
  &lt;p id=&quot;oxLn&quot;&gt;Наша задача создать новый проект в PyCharm с виртуальным окружением(&lt;a href=&quot;https://dvmn.org/encyclopedia/qna/12/chto-takoe-virtualnoe-okruzhenie-zachem-ono-kakie-byvajut-analogi/&quot; target=&quot;_blank&quot;&gt;что это&lt;/a&gt;)&lt;/p&gt;
  &lt;figure id=&quot;6WZ0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a1/c8/a1c8b637-5b1c-4fcc-8684-859199b1df2d.png&quot; width=&quot;1187&quot; /&gt;
    &lt;figcaption&gt;Ничего не меняем, кроме расположения, жмем &lt;strong&gt;Create&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nnL2&quot;&gt;Тут же для примера создадим отдельный модуль, чтобы на его примере увидеть работу &lt;strong&gt;Git:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;14Em&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6e/76/6e763874-0973-45dd-94a4-dbd77379b65d.png&quot; width=&quot;1116&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ILmt&quot;&gt;&lt;strong&gt;Теперь давайте активируем Git! &lt;/strong&gt;&lt;br /&gt;&lt;code&gt;VSC -&amp;gt; Enable Version Control Integration&lt;/code&gt;, в выпадающем меню выбираем &lt;strong&gt;&lt;code&gt;Git&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;Rrvo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8b/1e/8b1e7037-0396-4cdf-bda9-cdb647805eee.png&quot; width=&quot;977&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;K8Np&quot;&gt;После активации файлы должны загореться красным цветом, это говорит о том, что они не трекаются гитом. &lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;gE3i&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;L0JM&quot; data-align=&quot;center&quot;&gt;2. .gitignore &lt;/h3&gt;
  &lt;p id=&quot;UWhh&quot;&gt;&lt;code&gt;.gitignore&lt;/code&gt; - это специальный файлик, который содержит в себе имена других файлов, которые git не должен отслеживать, которые в последствие не попадут в &lt;strong&gt;GitHub &lt;/strong&gt;репозиторий. Примеры таких файлов: логи, папка &lt;code&gt;venv&lt;/code&gt;, &lt;code&gt;.idea&lt;/code&gt;, &lt;a href=&quot;https://t.me/python_web3/44&quot; target=&quot;_blank&quot;&gt;приватники от кошельков.&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;WMcb&quot;&gt;Создается он во внешней папке проекта, &lt;strong&gt;ни в какие venv мы не лезем и ничего там не трогаем!&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;dSrh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3b/41/3b419915-3f62-45ff-8019-bd57d01ca134.png&quot; width=&quot;1399&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hZ4Q&quot;&gt;При создании &lt;strong&gt;Git&lt;/strong&gt; спросит вас, нужно ли отслеживать новый файл, я предпочитаю не трекать такое, ибо зачем. &lt;strong&gt;Cancel&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;5Ppa&quot;&gt;По умолчанию в &lt;code&gt;.gitignore&lt;/code&gt; заносим две папки:&lt;code&gt; /venv/&lt;/code&gt; и &lt;code&gt;/.idea/&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;Ybyn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/36/be/36bec650-86aa-4bd4-9c72-7858c3cec63c.png&quot; width=&quot;471&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ikWG&quot;&gt;Виртуальное окружение пользователь всегда сможет восстановить через &lt;code&gt;requirements.txt&lt;/code&gt;(подробно в Advanced разделе), а .idea ему не к чему, это настройки вашей &lt;strong&gt;IDE&lt;/strong&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;fUcR&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;hdfl&quot; data-align=&quot;center&quot;&gt;3. Начинаем отслеживать файлы&lt;/h3&gt;
  &lt;p id=&quot;NCP4&quot;&gt;Но в самом начале вам необходимо перейти в &lt;code&gt;Settings -&amp;gt; Version Control -&amp;gt; Use non-modal commit interface&lt;/code&gt;, чтобы отобразить интерфейс как у меня.&lt;/p&gt;
  &lt;figure id=&quot;e1sM&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/48/eb/48eb6630-0587-4d6e-ba55-a80d417932d7.png&quot; width=&quot;2159&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lb9E&quot;&gt;В самом низу(как на картинке) есть вкладка &lt;code&gt;git&lt;/code&gt;, переходим туда, разворачиваем папку &lt;code&gt;Unversioned files&lt;/code&gt; - это те файлы, которые ждут своего добавления в отслеживание, а я напомню, чтобы &lt;strong&gt;Git &lt;/strong&gt;начал трекать изменения в файлах, их нужно начать отслеживать(в терминале это команда &lt;code&gt;add&lt;/code&gt;).&lt;/p&gt;
  &lt;p id=&quot;OgsW&quot;&gt;&lt;strong&gt;Действуем! &lt;/strong&gt;Выбираем все файлы кроме &lt;code&gt;.gitignore&lt;/code&gt; и тыкаем &lt;code&gt;Add to VCS&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;43WD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b8/35/b8356ab2-4662-451c-a7be-ce8aa5c3db99.png&quot; width=&quot;755&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;t8FB&quot;&gt;Файлы должны стать зелеными и переместиться во вкладку &lt;code&gt;Changes&lt;/code&gt;, теперь все изменения в этих файлах будут отображаться во вкладке &lt;code&gt;Git &lt;/code&gt;в красивом интерфейсе&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;tvtz&quot;&gt;&lt;strong&gt;Note: &lt;/strong&gt;если вы создаете новый файл, его также нужно добавлять в отслеживание&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;0O6i&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;qo7Q&quot; data-align=&quot;center&quot;&gt;4. Первый Коммит&lt;/h3&gt;
  &lt;p id=&quot;0b3Z&quot;&gt;Начальная структура проекта готова, файлы отслеживаются - самое время сделать первое сохранение! Коммиты - это и есть сохранения, между которыми можно перемещаться в процессе работы. &lt;/p&gt;
  &lt;figure id=&quot;b7VW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/99/c1/99c149ba-eaa1-497f-be26-b94b7725cabe.png&quot; width=&quot;733&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;u9Zp&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/65/2e653c9b-24c9-4834-9856-8cda23aa01a7.png&quot; width=&quot;1058&quot; /&gt;
    &lt;figcaption&gt;Обычно первый коммит называют &lt;strong&gt;init&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WNwo&quot;&gt;В поле &lt;code&gt;Commit Message&lt;/code&gt; ваша задача в одну строчку описать, что произошло с проектом с момента последнего коммита, например вы добавили новый модуль, пофиксили баг и тд, первый же коммит по классике называют &lt;code&gt;init&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;VddB&quot;&gt;Итак, папка &lt;code&gt;Changes &lt;/code&gt;должна очиститься, ведь коммит сделан и с тех пор мы не изменили ничего. &lt;strong&gt;Давайте изменим!&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;H7kX&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Bfid&quot; data-align=&quot;center&quot;&gt;5. Просмотр изменений, откат&lt;/h3&gt;
  &lt;p id=&quot;QqPK&quot;&gt;В файле math.py я немного изменю код, что безусловно должно отобразиться во вкладке &lt;code&gt;git -&amp;gt; changes:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;dhqo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ea/f4/eaf43b25-a513-42ef-90c8-650438398772.png&quot; width=&quot;2159&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Nane&quot;&gt;Файл загорелся синим цветом, что сигнализирует о том, что есть несохраненные(незакомиченные) изменения. Справа показываются сами изменения, которые можно посмотреть в еще более удобном виде, через &lt;strong&gt;show diff&lt;/strong&gt;(отобразить разницу), тут даже можно отображать изменения поэтапно, используя стрелочку вниз:&lt;/p&gt;
  &lt;figure id=&quot;S4kd&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3b/82/3b82a478-44d8-43bf-a112-97d6c9c2caeb.png&quot; width=&quot;716&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;R0Gs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/42/0c/420cf76b-9074-4b83-9bf3-e3f5f007061c.png&quot; width=&quot;1558&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tIDD&quot;&gt;Если новый код протестирован, работает так, как ожидается, если вы его трижды проверили через &lt;code&gt;show diff&lt;/code&gt; - то можно делать следующий коммит по аналогии с прошлым пунктом. Не забудьте добавить &lt;a href=&quot;https://techrocks.ru/2019/12/02/writing-good-commit-messages/&quot; target=&quot;_blank&quot;&gt;качественное описание&lt;/a&gt; к коммиту. &lt;/p&gt;
  &lt;p id=&quot;rfGh&quot;&gt;Историю коммитов можно смотреть во вкладке &lt;code&gt;Log &lt;/code&gt;окна &lt;code&gt;Git&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;E9wh&quot;&gt;Более того, если мы где-то накосячили, сломали код, всегда можно воспользоваться откатом - &lt;strong&gt;&lt;code&gt;Rollback&lt;/code&gt;!&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;ipas&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/eb/cf/ebcfdded-6783-4820-b58f-51336829dda6.png&quot; width=&quot;864&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xwYH&quot;&gt;Оп! И вкладка &lt;code&gt;Cnanges &lt;/code&gt;снова пустая, а код откатился к состоянию последнего коммита.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;WUGk&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Bey9&quot; data-align=&quot;center&quot;&gt;6. Заливаем в репозиторий GitHub(push)&lt;/h3&gt;
  &lt;p id=&quot;iB0A&quot;&gt;До этого все изменения у нас сохранялись локально на компьютере, но пришло время поделиться своим кодом с миром. Для этого существует команда &lt;code&gt;push&lt;/code&gt;, в отличие от &lt;code&gt;commit&lt;/code&gt;, она сохраняет твой код не локально, а удаленно и отображает все в качестве репозитория(в нашем случае &lt;strong&gt;GitHub&lt;/strong&gt;).&lt;/p&gt;
  &lt;p id=&quot;n88H&quot;&gt;Итак, можно поступить следующим образом:&lt;/p&gt;
  &lt;figure id=&quot;bDNj&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/86/c6/86c6eccb-e11d-429d-861e-02c65b4771ed.png&quot; width=&quot;1167&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sJ18&quot;&gt;Репозиторий автоматически создастся в привязанном гитхаб аккаунте. &lt;/p&gt;
  &lt;p id=&quot;X9q5&quot;&gt;Если репозиторий уже есть, или например вы просто внесли какие-то изменения в существующий проект у себя на пк, и их нужно залить в репозиторий, вы можете использовать эту кнопку:&lt;/p&gt;
  &lt;figure id=&quot;jetv&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/98/5e/985e8477-3200-4448-b230-946c9cbf5f2d.png&quot; width=&quot;875&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZJxQ&quot;&gt;тогда существующий репозиторий обновится в соответствии с вашим кодом!&lt;/p&gt;
  &lt;p id=&quot;o044&quot;&gt;&lt;strong&gt;В обоих случаях это выглядит примерно вот так:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;2zre&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c1/56/c1565073-8e06-45c7-9b6f-a4f9abb00356.png&quot; width=&quot;1407&quot; /&gt;
    &lt;figcaption&gt;Репозиторий на &lt;strong&gt;GitHub&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;72kf&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0d/8a/0d8a2cef-fada-45e7-a3af-68225b2699f5.png&quot; width=&quot;2096&quot; /&gt;
    &lt;figcaption&gt;Как видите, файлы из&lt;strong&gt; .gitignore&lt;/strong&gt; не экспортировались&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;AJdx&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;gN92&quot; data-align=&quot;center&quot;&gt;7. Подтягиваем проект из Репозитория(pull)&lt;/h3&gt;
  &lt;p id=&quot;EkLN&quot;&gt;Допустим ваш друг решил модифицировать проект и добавил туда пару новых фич, для дальнейшей разработки вам нужно синхронизировать удаленный(репозиторий) и локальные(на твоем пк) проекты. Для этого есть команда &lt;code&gt;pull&lt;/code&gt;, рассмотрим на примере:&lt;/p&gt;
  &lt;figure id=&quot;fpkW&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c8/20/c820010a-43fb-4a00-a5f9-ee9a4da5bb51.png&quot; width=&quot;1638&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;MSHf&quot;&gt;В директории &lt;code&gt;modules &lt;/code&gt;кто-то(я) добавил новый файл со своим кодом, естественно у нас на пк его нет, как подтянуть его к нам?&lt;/p&gt;
  &lt;p id=&quot;8mk1&quot;&gt;Переходим обратно в &lt;strong&gt;PyCharm &lt;/strong&gt;и тыкаем синюю стрелку:&lt;/p&gt;
  &lt;figure id=&quot;DLB4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/66/c6/66c6e9ce-cc99-41cc-add0-2ac2d87dc914.png&quot; width=&quot;934&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;CjKe&quot;&gt;Ждем, ждем.. &lt;strong&gt;Готово!&lt;/strong&gt; Можете проверять,&lt;code&gt; test_file.py&lt;/code&gt; теперь и у вас на пк&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;E3pR&quot;&gt;Подтягивание изменений(&lt;code&gt;pull&lt;/code&gt;) - обязательное ежедневное начальное действие перед началом работы с проектом, если вы работаете не один, вдруг за ночь ваш коллега что-то добавил/изменил?&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Pmqs&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;VnBN&quot; data-align=&quot;center&quot;&gt;Промежуточные итоги&lt;/h3&gt;
  &lt;p id=&quot;9jZi&quot;&gt;Итак, во-первых, в течение всего урока я ни разу не открыл терминал, все делается при помощи встроенного интерфейса &lt;strong&gt;PyCharm&lt;/strong&gt;, а во-вторых, &lt;strong&gt;базы, которая дана выше хватит для выполнения большинства повседневных задач! &lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;NgLy&quot;&gt;&lt;strong&gt;Быстренько повторим алгоритм:&lt;/strong&gt;&lt;br /&gt;1) Создаем проект, включаем VCS&lt;br /&gt;2) Создаем .gitignore&lt;br /&gt;3) Добавляем папки в отслеживание&lt;br /&gt;4) Коммитим&lt;br /&gt;5) Пушим в репозиторий&lt;br /&gt;6) Подтягиваем изменения, если условно за ночь кто-то изменил репозиторий&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;IQHg&quot;&gt;На этом можно было бы завершить первую главу гайда, но мы еще не рассказали про ветки, полноценную совместную разработку, клонирование и тд - &lt;strong&gt;Welcome to Advanced! &lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;6Zy1&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;D1e5&quot; data-align=&quot;center&quot;&gt;ADVANCED LVL&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;7Sml&quot;&gt;&lt;strong&gt;Advanced lvl &lt;/strong&gt;- это для тех, кто планирует работать в команде, разрабатывать проект, задействуя ветки, или для тех, кто просто хочет копнуть в работу с git чуть глубже. &lt;strong&gt;Мы рассмотрим:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;CqlM&quot;&gt;
    &lt;li id=&quot;kV6J&quot;&gt;Клонирование проекта&lt;/li&gt;
    &lt;li id=&quot;wDeU&quot;&gt;Установку виртуального окружения&lt;/li&gt;
    &lt;li id=&quot;QDt5&quot;&gt;Установку зависимостей&lt;/li&gt;
    &lt;li id=&quot;3sXW&quot;&gt;Создание новых веток&lt;/li&gt;
    &lt;li id=&quot;8OD7&quot;&gt;Слияние веток и pull request&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jfle&quot;&gt;&lt;em&gt;И все по порядку, так, если бы вы пришли в компанию и начинали работать над совместным проектом с нуля.&lt;/em&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;061d&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;bRVr&quot; data-align=&quot;center&quot;&gt;1. Клонируем проект&lt;/h3&gt;
  &lt;p id=&quot;iyJk&quot;&gt;&lt;strong&gt;Клонирование &lt;/strong&gt;- это по сути &lt;em&gt;&amp;quot;подтягивание&amp;quot;&lt;/em&gt; чужого проекта к себе на ПК для его параллельной доработки. Например если у вашего друга есть &lt;strong&gt;Telegram&lt;/strong&gt; бот с открытым кодом в репозитории &lt;strong&gt;GitHub &lt;/strong&gt;и он просит вас допилить его, добавив новые фичи, - вы должны сначала склонировать его проект к себе, только потом начать работать. Сразу к примеру:&lt;/p&gt;
  &lt;figure id=&quot;vHIs&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/94/c1/94c13259-ad0e-4a07-b046-feca877d103a.png&quot; width=&quot;1653&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iotD&quot;&gt;На картинке я взял только что созданный репозиторий Глеба, чтобы добавить туда пару новых модулей, жмем &lt;code&gt;Code -&amp;gt; Local -&amp;gt; HTTPS -&amp;gt;&lt;/code&gt; копируем ссылку&lt;/p&gt;
  &lt;p id=&quot;CUUm&quot;&gt;Идем в &lt;strong&gt;PyCharm&lt;/strong&gt;, закрываем текущий проект, во вкладке с проектами выбираем &lt;code&gt;Get from VCS&lt;/code&gt; и вставляем ссылку, &lt;strong&gt;проект склонирован!&lt;/strong&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;n7Oz&quot;&gt;&lt;strong&gt;Но это еще не все! &lt;/strong&gt;Если проект использует какие-то сторонние библиотеки, у вас код не запустится, ведь либы находились в папке &lt;strong&gt;venv&lt;/strong&gt;, которую в &lt;strong&gt;GitHub &lt;/strong&gt;не экспортируют. Обязательно ищем файл &lt;strong&gt;README.md&lt;/strong&gt; и изучаем содержимое, только потом переходим к следующему пункту. &lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xE8Y&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;hpSZ&quot; data-align=&quot;center&quot;&gt;2. Установка виртуального окружения&lt;/h3&gt;
  &lt;p id=&quot;QWFu&quot;&gt;Как неоднократно упоминалось выше, при клонировании/импорте проекта, виртуальное окружение не создается, &lt;strong&gt;IDE&lt;/strong&gt;, конечно, может нам предложить создать его, но чаще всего приходится делать все ручками, &lt;strong&gt;давайте сделаем!&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;jHBW&quot;&gt;Идем в настройки:&lt;/p&gt;
  &lt;figure id=&quot;8n1q&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d5/14/d5146f97-837e-40c0-adf0-d8427aab48c2.png&quot; width=&quot;521&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0gmD&quot;&gt;&lt;code&gt;Project: name -&amp;gt; Python Interpreter:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;daPo&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/27/de/27de8ba2-cf3b-4800-b83b-262f7a2f551f.png&quot; width=&quot;1454&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mNbk&quot;&gt;Добавляем локальный интерпретатор:&lt;/p&gt;
  &lt;figure id=&quot;FLEc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f7/bc/f7bc8d3c-fae5-469c-9014-07e97fa5b319.png&quot; width=&quot;1591&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8YgG&quot;&gt;Новое виртуальное окружение:&lt;/p&gt;
  &lt;figure id=&quot;BU6D&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0a/7f/0a7f3ebf-404a-4a10-b81b-aca68e2c0608.png&quot; width=&quot;1267&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pMAE&quot;&gt;Готово! Остается установить в папку venv необходимые зависимости из папки &lt;code&gt;requirements.txt&lt;/code&gt; если таковая имеется&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;dH3Q&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;yG0L&quot; data-align=&quot;center&quot;&gt;3. Установка зависимостей(&lt;code&gt;requirements.txt&lt;/code&gt;)&lt;/h3&gt;
  &lt;p id=&quot;Vu6A&quot;&gt;Если клонированный проект использует какие-то сторонние библиотеки, например &lt;strong&gt;web3&lt;/strong&gt;, &lt;strong&gt;aiogram &lt;/strong&gt;и тд, вы обязательно о них узнаете, когда найдете файл &lt;code&gt;requirements.txt&lt;/code&gt;, его необходимо &amp;quot;установить&amp;quot;:&lt;/p&gt;
  &lt;p id=&quot;VqVv&quot;&gt;Тут все просто, IDE сама предложит нам установить зависимости, не противимся и жмем &lt;code&gt;install requirements&lt;/code&gt;: &lt;/p&gt;
  &lt;figure id=&quot;vlBm&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bd/dc/bddc6c0e-0bc9-4b6d-a0de-c269eb61e331.png&quot; width=&quot;1575&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;w2MD&quot;&gt;Ждем несколько секунд.. &lt;strong&gt;Готово!&lt;/strong&gt; Можно работать с проектом. &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;mByX&quot;&gt;&lt;strong&gt;Note: &lt;/strong&gt;снизу есть небольшой прогрессбар, на котором обычно отображаются все сетевые процессы, например установка библиотек, push в репозиторий и тд&lt;/p&gt;
    &lt;figure id=&quot;AIbQ&quot; class=&quot;m_original&quot;&gt;
      &lt;img src=&quot;https://img1.teletype.in/files/41/58/4158012a-f33d-4499-a466-f9d48146226f.png&quot; width=&quot;564&quot; /&gt;
    &lt;/figure&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;pPel&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;JLao&quot; data-align=&quot;center&quot;&gt;4. Создаем новую ветку&lt;/h3&gt;
  &lt;p id=&quot;H1Vm&quot;&gt;Начиная с этого раздела мы постепенно переходим к работе с ветками. Обычно, если над проектом работает несколько человек, каждый кодер под каждую отдельную задачу создает свою собственную ветку(которая по началу является полной копией основной). Основная ветка чаще всего называется &lt;code&gt;master &lt;/code&gt;веткой, туда заливаются(сливаются) изменения только после тщательного ревью остальных кодеров. Сливание основной ветки с отдельной называется &lt;code&gt;merge&lt;/code&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;zf3C&quot;&gt;&lt;strong&gt;Теоретический пример: &lt;/strong&gt;Мы с Глебом работаем над созданием бота в TG, мы делим задачи между собой и в один момент я решил поручить Глебу реализовать авторизацию в боте. &lt;/p&gt;
    &lt;p id=&quot;8LRK&quot;&gt;Глеб идет и создает отдельную ветку, называя ее к примеру: &lt;code&gt;auth&lt;/code&gt;. Она изначально является копией мастер ветки. Далее реализовывает функционал, проверяет все, комиттит и пушит в репозиторий.&lt;br /&gt;&lt;br /&gt;Естественно, прежде чем репозиторий обновится, изменения Глеба должны пройти ревью, иначе любой бы смог вносить любые правки в любые проекты, тем самым просто ломая исходный код. &lt;/p&gt;
    &lt;p id=&quot;mbis&quot;&gt;Если ревью пройдено ветка Глеба и &lt;code&gt;master &lt;/code&gt;ветки сливаются(мержатся) в одну, то есть изменения ветки Глеба вносятся в &lt;code&gt;master&lt;/code&gt;(основную) ветку&lt;/p&gt;
    &lt;p id=&quot;BcQT&quot;&gt;Еще раз, &lt;code&gt;master &lt;/code&gt;ветка - это то, что видит конечный пользователь продукта, поэтому она всячески защищена от шальных изменений. &lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Cb3y&quot;&gt; А теперь по порядку,&lt;strong&gt; создадим ветку!&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;X5dn&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a3/c4/a3c45c2d-8897-4710-ab02-03804b391413.png&quot; width=&quot;636&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;n9W0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/48/92/48923f20-5ef6-4112-a8e3-aa5739fb5403.png&quot; width=&quot;125&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jeA0&quot;&gt;Ветка должна смениться с main(или master) на только что созданную.&lt;strong&gt; Ветка создана!&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;rDkY&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;oRpl&quot; data-align=&quot;center&quot;&gt;5. Pull-request&lt;/h3&gt;
  &lt;p id=&quot;ix32&quot;&gt;Итак, после создания ветки я добавил новый модуль или же внес изменения в код, которые хочу залить в основную ветку:&lt;/p&gt;
  &lt;figure id=&quot;npCm&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6a/49/6a49dc33-b2bf-4967-aa60-f310f3092c02.png&quot; width=&quot;2154&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YEs9&quot;&gt;Для начала, я, конечно же, все проверяю и делаю &lt;strong&gt;коммит&lt;/strong&gt;. Если задача в целом реализована - то вы можете сразу же сделать &lt;strong&gt;push&lt;/strong&gt;, нажав кнопку &lt;code&gt;commit and push:&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;tWt0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d4/fc/d4fc1507-8d4f-439c-9e43-97d7d139ac3c.png&quot; width=&quot;1128&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;b4Yf&quot;&gt;На странице GitHub отобразится специальное окно, говорящее вам о том, что вам нужно создать &lt;strong&gt;pull request &lt;/strong&gt;-это запрос к другим участникам проекта с просьбой посмотреть ваш код, проверить на работоспособность и правильность, вам могут выносить замечания, которые вы должны будете исправлять, а также могут сразу принять ваш реквест, тогда ваша ветка автоматически сольется с основной&lt;/p&gt;
  &lt;figure id=&quot;dgdK&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5d/13/5d1361e5-acc6-49c7-89d2-bf22461772b6.png&quot; width=&quot;1826&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Yf0M&quot;&gt;&lt;strong&gt;Note:&lt;/strong&gt; в ряде случаев, для мерджа необходимы &amp;quot;одобрения&amp;quot; нескольких членов команды, в виде лайков. Если набралось определенное кол-во, например 2, ваш код автоматом сливается&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;tsg3&quot;&gt;&lt;strong&gt;Создаем pull request!&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;wmE0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/df/d0/dfd0b961-5cc2-4efc-98e2-24a35e8983d5.png&quot; width=&quot;1498&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bzhQ&quot;&gt;Примерно так это выглядит, когда Глеб зайдет и проверит мой код(это его проект), мои изменения автоматически отобразятся в репозитории. &lt;/p&gt;
  &lt;p id=&quot;xZyp&quot;&gt;Как видите тут есть вкладки с &lt;strong&gt;коммитами&lt;/strong&gt;, подобие &lt;strong&gt;show diff&lt;/strong&gt; и многое другое.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;3zFp&quot;&gt;Итак, изменения приняты, master ветка обновлена, что дальше? &lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xh4s&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;04gm&quot; data-align=&quot;center&quot;&gt;6. Удаление ветки и переход в master branch&lt;/h3&gt;
  &lt;p id=&quot;QFLH&quot;&gt;Вероятнее всего, после мержа веток ваша ветка будет удалена, но удалена удаленно, то есть у вас на ПК она останется. &lt;strong&gt;Что делаем?&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;atfD&quot;&gt;Для начала нам нужно перейти на &lt;code&gt;master&lt;/code&gt; ветку:&lt;/p&gt;
  &lt;figure id=&quot;lpla&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/98/18/98183b58-dbce-4781-9f0a-7539fd0355b0.png&quot; width=&quot;898&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5l5P&quot;&gt;Но это лишь старый вариант ветки, ведь она была изменена, подтягиваем изменения(&lt;code&gt;pull&lt;/code&gt;):&lt;/p&gt;
  &lt;figure id=&quot;sLzN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/70/bc/70bc60b4-b970-419a-b729-e402221a158a.png&quot; width=&quot;1531&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2pOF&quot;&gt;Ветки в репозитории и у нас синхронизированы, пришло время удалить прошлую ветку за ненадобностью: &lt;/p&gt;
  &lt;figure id=&quot;iTHc&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a6/12/a6128398-49fd-4c30-a3af-f3fe07c24bd1.png&quot; width=&quot;863&quot; /&gt;
  &lt;/figure&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;26Av&quot;&gt;&lt;strong&gt;VSЁ! &lt;/strong&gt;И так по кругу! Пришел новый таск, создали новую ветку, реализовали функционал, закоммитили, вызвали &lt;code&gt;pull requiest&lt;/code&gt;, залили изменения в &lt;code&gt;master &lt;/code&gt;ветку..&lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;m15B&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;3Jkq&quot; data-align=&quot;center&quot;&gt;Промежуточные итоги&lt;/h3&gt;
  &lt;p id=&quot;lVzn&quot;&gt;Итак, в рамках&lt;strong&gt; Advanced LVL &lt;/strong&gt;вы должны были научиться работать в команде используя &lt;strong&gt;Git &lt;/strong&gt;и &lt;strong&gt;Pycharm &lt;/strong&gt;не написав ни единой строчки кода в терминале! Теперь вы можете разрабатывать единый проект вместе с вашим товарищем, удобно делить задачи и не мешать друг другу! &lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;eYjY&quot;&gt;На этом &lt;strong&gt;я(Заядлый)&lt;/strong&gt; с вами прощаюсь, передаю перо &lt;strong&gt;Глебу&lt;/strong&gt;, чтобы он рассказал вам о том, как работать с &lt;strong&gt;Git &lt;/strong&gt;через терминал(не дай бог), ситуации бывают разные, например слабое железо для &lt;strong&gt;PyCharm&lt;/strong&gt;.. &lt;/p&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;GhhP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;oXGE&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;xd0e&quot;&gt;ГЛАВА 2: Git &amp;amp; GitHub через Терминал / (by глеб)&lt;/h2&gt;
  &lt;/section&gt;
  &lt;section style=&quot;background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;GqVX&quot;&gt;Всем привет, в этой главе я(Глеб) познакомлю вас с командами git и научу создавать ваш первый репозиторий именно через терминал!&lt;/p&gt;
    &lt;p id=&quot;TY4Y&quot;&gt;&lt;strong&gt;Почему важно уметь работать с Git в терминале?&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;TlwK&quot;&gt;
      &lt;li id=&quot;wkxu&quot;&gt;В первую очередь - это практика, которая является самым важным базисом в программировании.&lt;/li&gt;
      &lt;li id=&quot;nTUB&quot;&gt;Банальный базовый инструмент, которым должен владеть каждый пользователь.&lt;/li&gt;
      &lt;li id=&quot;KKGJ&quot;&gt;Возможности командной строки - выполнение любых изменений, проверка и устранение любых неисправностей, тестирование кода, проверка логов системы и безопасности и многое другое.&lt;/li&gt;
      &lt;li id=&quot;0nNX&quot;&gt;Четкая последовательность действий. Используя командную строку вы всегда получаете однозначный ответ, отслеживаете порядок действий и управляете абсолютно всеми командами.&lt;/li&gt;
      &lt;li id=&quot;fcfP&quot;&gt;Минимальные затраты системных ресурсов для работы по сравнению с IDE(вдруг у вас PyCharm не тянет)&lt;/li&gt;
    &lt;/ul&gt;
    &lt;p id=&quot;cF6Z&quot;&gt;&lt;strong&gt;Что вам нужно для начала:&lt;/strong&gt;&lt;/p&gt;
    &lt;ol id=&quot;MFwn&quot;&gt;
      &lt;li id=&quot;gLo4&quot;&gt;Установленный Git&lt;/li&gt;
      &lt;li id=&quot;Wcdv&quot;&gt;Аккаунт на GitHub&lt;/li&gt;
      &lt;li id=&quot;aQ1p&quot;&gt;Командная строка &lt;/li&gt;
    &lt;/ol&gt;
  &lt;/section&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;mVrS&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;yIce&quot; data-align=&quot;center&quot;&gt;1. Первоначальная настройка Git&lt;/h3&gt;
  &lt;blockquote id=&quot;3cKC&quot;&gt;Note: Некоторые команды у меня могут отличаться от ваших, если вы работаете не на Windows, гуглите&lt;/blockquote&gt;
  &lt;p id=&quot;PXpK&quot;&gt;&lt;/p&gt;
  &lt;ul id=&quot;SV91&quot;&gt;
    &lt;li id=&quot;QEGl&quot;&gt;Открываем Terminal и проверяем установленный Git и его версию с помощью команды &lt;code&gt;git -v&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;gio1&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/e3/6de35bf4-94b2-435d-9532-d4ae84262282.png&quot; width=&quot;227&quot; /&gt;
    &lt;figcaption&gt;                                                         самая актуальная версия на момент написания статьи&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;so7J&quot;&gt;
    &lt;li id=&quot;xZlN&quot;&gt; Настраиваем имя и привязываем ваш Git к аккаунту на GitHub:&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Iflr&quot;&gt;          &lt;code&gt;git config --global user.name &amp;quot;ваше имя&amp;quot;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;qGma&quot;&gt;          &lt;code&gt;git config --global user.email ваша почта аккаунта GitHub&lt;/code&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;Jrpn&quot; data-align=&quot;center&quot;&gt;                  Опция &lt;code&gt;--global&lt;/code&gt; значит, что имя и почта будут использоваться для всех ваших действий в Git.&lt;/blockquote&gt;
  &lt;p id=&quot;6jyq&quot;&gt;Список самых основных команд для удобной работы с терминалом &lt;a href=&quot;https://htmlacademy.ru/blog/soft/windows-command-line&quot; target=&quot;_blank&quot;&gt;здесь&lt;/a&gt;, а мы приступаем к созданию первого Git репозитория. &lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;lzkU&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;mWFn&quot; data-align=&quot;center&quot;&gt;2. Инициализация нового репозитория&lt;/h3&gt;
  &lt;ul id=&quot;OZmw&quot;&gt;
    &lt;li id=&quot;N26Q&quot;&gt;Для начала нам необходимо создать папку, где будут хранится все наши проекты. Сделать это можно с помощью команды &lt;code&gt;mkdir название папки&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;MfhX&quot;&gt;Переходим в только что созданную папку с помощью &lt;code&gt;cd название папки&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;7CLX&quot;&gt;Прописываем команду &lt;code&gt;git init&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;8Qil&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2e/17/2e17b34f-e241-479e-a408-cdb0c4bd7a96.png&quot; width=&quot;549&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;                                          В командной строке вы должны увидеть результат создания репозитория&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;spVa&quot;&gt;Проверить новую папку можно с помощью &lt;code&gt;cd .git&lt;/code&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;qoL4&quot;&gt;Вот так в пару простых шагов мы создали папку для наших будущих проектов и  первый пустой репозиторий, но перед переходом к наполнению репозитория и разбора функционала, я хочу остановится и рассказать про: &lt;em&gt;области Git&lt;/em&gt; и &lt;em&gt;статусы отслеживаемых файлов&lt;/em&gt;. &lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;hoRr&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;6duo&quot; data-align=&quot;center&quot;&gt;3. Области Git&lt;/h3&gt;
  &lt;p id=&quot;JxJd&quot;&gt;&lt;strong&gt;Области Git&lt;/strong&gt; - это разделы, в которых гит отслеживает файлы, назначение которых, важно понимать для работы в терминале.&lt;/p&gt;
  &lt;figure id=&quot;BJWm&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/61/68/616848d2-03b9-4bc2-bfbb-866ec09f2731.png&quot; width=&quot;660&quot; /&gt;
    &lt;figcaption&gt;                                                 демонстарция процессов перехода отслеживания объектов&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ol id=&quot;uEV1&quot;&gt;
    &lt;li id=&quot;KuGr&quot;&gt;&lt;strong&gt;Working directory&lt;/strong&gt; - файловая система вашего компьютера.&lt;/li&gt;
    &lt;li id=&quot;MTBB&quot;&gt;&lt;strong&gt;Staging area&lt;/strong&gt;(индекс) - область подготовленных файлов, хранит содержание следующего коммита. &lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;uJbL&quot;&gt;    3. &lt;strong&gt;Repository &lt;/strong&gt;- хранит все версии файлов вашего проекта и ваши коммиты.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ljRm&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;UitW&quot; data-align=&quot;center&quot;&gt;4. Статусы отслеживания файлов&lt;/h3&gt;
  &lt;p id=&quot;sNHG&quot;&gt;При работе в терминале и в частности для написания коммитов, нам необходимо понимать в каком статусе находится файл. Чтобы увидеть состояние файлов, напишите в консоли &lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;qkyh&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2f/1e/2f1e8152-3264-44fe-8c04-feb36a1123c5.png&quot; width=&quot;529&quot; /&gt;
    &lt;figcaption&gt;                                                                     Файлы и коммиты мы еще не добавляли&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;4Pw0&quot;&gt;
    &lt;li id=&quot;Qcjl&quot;&gt;&lt;strong&gt;untracked &lt;/strong&gt;- новые файлы в рабочей директории, нет в области staging area и repository.&lt;/li&gt;
    &lt;li id=&quot;M6MI&quot;&gt;&lt;strong&gt;staged &lt;/strong&gt;- файлы, которые подготовлены для сохранения изменений и находятся staging area.&lt;/li&gt;
    &lt;li id=&quot;8wnj&quot;&gt;&lt;strong&gt;unmodified &lt;/strong&gt;- файлы синхронизованы между working directory и repository, файл имеет самую актуальную версию во всех разделах.&lt;/li&gt;
    &lt;li id=&quot;PVuG&quot;&gt;&lt;strong&gt;modified &lt;/strong&gt;- файлы, находящиеся в рабочей директории, где находится более новая версия файла по сравнению с хранящейся в репозитории или в индексе.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ORYi&quot;&gt;Чтобы посмотреть сами изменения, а не изменённые файлы, можно использовать следующие команды:&lt;/p&gt;
  &lt;ul id=&quot;bMtN&quot;&gt;
    &lt;li id=&quot;ZZml&quot;&gt;&lt;code&gt;git diff&lt;/code&gt; - сравнение рабочей директории с индексом.&lt;/li&gt;
    &lt;li id=&quot;NqKR&quot;&gt;&lt;code&gt;git diff --staged&lt;/code&gt;- сравнение области индекса с репозиторием.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;6TaK&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;OxxP&quot; data-align=&quot;center&quot;&gt;5. .gitignore&lt;/h3&gt;
  &lt;blockquote id=&quot;GJ1e&quot;&gt;Напомню, что файлы &amp;quot;.gitignore&amp;quot; используются для игнорирования личных файлов разработчика, они не попадают на удаленный репозиторий.&lt;/blockquote&gt;
  &lt;p id=&quot;KNIc&quot;&gt;Игнорируемые элементы отслеживаются в специальном файле &lt;code&gt;.gitignore&lt;/code&gt;, который регистрируется в корневом каталоге репозитория. В &lt;strong&gt;Git&lt;/strong&gt; нет специальной команды для указания игнорируемых файлов: вместо этого необходимо вручную отредактировать файл &lt;code&gt;.gitignore&lt;/code&gt;, чтобы указать в нем новые файлы, которые должны быть проигнорированы. Файлы &lt;code&gt;.gitignore&lt;/code&gt; содержат шаблоны, которые сопоставляются с именами файлов в репозитории для определения необходимости игнорировать эти файлы. Для того, чтобы легче воспринять этот материал, я советую зайти на данный &lt;a href=&quot;https://www.atlassian.com/ru/git/tutorials/saving-changes/gitignore&quot; target=&quot;_blank&quot;&gt;сайт&lt;/a&gt; и просмотреть все шаблоны&lt;br /&gt;&lt;br /&gt;Для игнорирования закомиченного файла, для которого ранее был сделан коммит, необходимо удалить этот файл из репозитория, а затем добавить для него правило в &lt;code&gt;.gitignore&lt;/code&gt; . Используйте команду &lt;code&gt;git rm&lt;/code&gt; с параметром &lt;code&gt;--cached&lt;/code&gt;, чтобы удалить этот файл из репозитория, но оставить его в рабочем каталоге как игнорируемый файл.&lt;/p&gt;
  &lt;figure id=&quot;ZgtR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c0/14/c014d626-3fa0-4591-bced-cd4cd2dea294.png&quot; width=&quot;568&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;cKIV&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;c4MQ&quot; data-align=&quot;center&quot;&gt;6. Создание файлов и папок в проекте&lt;/h3&gt;
  &lt;p id=&quot;jnfp&quot;&gt;Теперь вы получили необходимые базовые знания о статусе файлов и областях в Git, и мы можем продвинуться дальше и научиться работать с самим проектом. &lt;/p&gt;
  &lt;p id=&quot;r9M9&quot;&gt;Перейдём к созданию проекта для большей наглядности работы коммитов, перемещением между версиями проекта и проверки статусов файла. Для этого опять вернемся в терминал и напишем пару команд.&lt;/p&gt;
  &lt;ul id=&quot;KVnW&quot;&gt;
    &lt;li id=&quot;A0J7&quot;&gt;Переходим в терминал и заходим в ранее созданную папку под проекты, где хранится наш созданный репозиторий.&lt;/li&gt;
    &lt;li id=&quot;uVPc&quot;&gt;Для создания файла в терминале введите: &lt;code&gt;echo &amp;quot;текст&amp;quot; &amp;gt; название файла.txt &lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;MbSk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6c/1c/6c1cc13c-ea72-4b9a-b2a7-6f7e5175b5b9.png&quot; width=&quot;462&quot; /&gt;
    &lt;figcaption&gt;                                                            Создали файл  и проверили его наличие в папке &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;GxPZ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0d/9b/0d9b70fb-680b-4f30-a360-eaf0ecb95343.png&quot; width=&quot;383&quot; /&gt;
    &lt;figcaption&gt;                                                         Текст файла можно прочитать с помощью команды&lt;code&gt; type&lt;/code&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;9X9C&quot;&gt;
    &lt;li id=&quot;nw7R&quot;&gt;Теперь создадим папку и пару дополнительных файлов в ней для наблюдения их состояний. Для создания файлов используем команду &lt;code&gt;echo &amp;quot;текст&amp;quot; &amp;gt; название файла.txt&lt;/code&gt;, а для создания папки используем &lt;code&gt;mkdir название папки&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;hqtQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/da/d9/dad95730-5d95-483d-a92b-30d96c5f1e80.png&quot; width=&quot;623&quot; /&gt;
    &lt;figcaption&gt;                                            Создал папку и в ней создал 3 новых текстовых документа&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;zRmU&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1d/8e/1d8e7a0b-b7d2-4a40-8008-b41c99ac1b07.png&quot; width=&quot;431&quot; /&gt;
    &lt;figcaption&gt;                                В итоге мы получили 1 папку с 3 файламми и 1 файл, который лежит в корне проекта&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;53D0&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d8/f1/d8f1d9ef-6df8-4ae2-9eca-84ef9636d0fe.png&quot; width=&quot;835&quot; /&gt;
    &lt;figcaption&gt;                                                                                    Вид в проводнике&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;yByW&quot;&gt;
    &lt;li id=&quot;UwFv&quot;&gt;Теперь мы можем проверить статус наших файла с помощью команды &lt;code&gt;git status&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;tMK5&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/df/32/df32cc30-b31f-4aa8-be9a-e6ce87959113.png&quot; width=&quot;637&quot; /&gt;
    &lt;figcaption&gt;                                                                     Папка и файл имеют статус &amp;quot;untracked&amp;quot;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7Lvl&quot;&gt;Таким образом мы наполнили наш локальный репозиторий и можем приступать к коммитам.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;VcJf&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;owRd&quot; data-align=&quot;center&quot;&gt;7. Создание первого коммита&lt;/h3&gt;
  &lt;p id=&quot;3qTW&quot;&gt;Для написания первого коммита необходимо подготовить файлы и перенести их в индекс.&lt;/p&gt;
  &lt;ul id=&quot;fzNN&quot;&gt;
    &lt;li id=&quot;tLRn&quot;&gt;Добавим файлы &lt;strong&gt;Codimcrypty.txt&lt;/strong&gt; и&lt;strong&gt; Admins.txt&lt;/strong&gt; в индекс с помощью команды &lt;code&gt;git add&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;GM0i&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7d/aa/7daaf2a0-10d0-4f4a-bb80-9497e3b08982.png&quot; width=&quot;589&quot; /&gt;
    &lt;figcaption&gt;                                                                       подготовленные файлы для  commit&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;IIzO&quot;&gt;
    &lt;li id=&quot;L06R&quot;&gt;Напишем наш первый коммит для этих файлов с помощью команды &lt;code&gt;git commit -m &amp;quot;текст&amp;quot; &lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;JhPA&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3c/dd/3cdd1572-6e61-465e-ae8b-71cacc4d5610.png&quot; width=&quot;490&quot; /&gt;
    &lt;figcaption&gt;                                                        Изменения 2 файлов и добавление 2 новых строк&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vad0&quot;&gt;Каждый коммит содержит уникальную контрольную сумму -&lt;em&gt; идентификатор/хеш&lt;/em&gt;, который &lt;strong&gt;Git&lt;/strong&gt; использует, чтобы ссылаться на коммит. Чтобы отслеживать историю, &lt;strong&gt;Git &lt;/strong&gt;хранит указатель &lt;strong&gt;HEAD&lt;/strong&gt;, который указывает на первый коммит, увидеть это можно с помощью команды &lt;code&gt;git log&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;AoaN&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/38/01/38013e12-a924-4cce-91a3-f3ea0cceafb4.png&quot; width=&quot;561&quot; /&gt;
    &lt;figcaption&gt;                                                                 Показывает хеш, дату, автора и сам коммит&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;RPCp&quot;&gt;Команда &lt;code&gt;git log&lt;/code&gt; используется для просмотра истории коммитов, начиная с самого свежего и уходя к истокам проекта.&lt;/blockquote&gt;
  &lt;p id=&quot;l1DU&quot;&gt;&lt;strong&gt;Git &lt;/strong&gt;распределяет все объекты по папкам и подпапкам исходя из &lt;em&gt;хеша&lt;/em&gt; и найти эту папку можно по первым двум символам хеша. Для этого необходимо перейти в скрытую папку &lt;strong&gt;.git&lt;/strong&gt; и &lt;strong&gt;objects&lt;/strong&gt; и далее выбрать нужную вам папку.&lt;/p&gt;
  &lt;figure id=&quot;DVkQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e3/68/e3683430-a9b0-4b0b-afa4-c20908627379.png&quot; width=&quot;641&quot; /&gt;
    &lt;figcaption&gt;                                                                            в моем случае это папка 6b&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pgJZ&quot;&gt;На данном этапе мы уже: создали и наполнили репозиторий, создали структуру, отработали на практики все пройденные теоретические знания и написали наш первый коммит. Теперь мы можем приступать к работе с изменениями проекта и написанием второго коммита.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;jTds&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;zWBW&quot; data-align=&quot;center&quot;&gt;8. Написание второго коммита&lt;/h3&gt;
  &lt;p id=&quot;xaPl&quot;&gt;Создадим новую папку, добавим туда файл, добавим их в индекс и напишем второй коммит для практической наглядности перемещения между версиями проекта.&lt;/p&gt;
  &lt;figure id=&quot;xwrJ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/81/ea/81eae8f2-1366-4004-9ef5-975d451f2f30.png&quot; width=&quot;453&quot; /&gt;
    &lt;figcaption&gt;                                                                                 новая папка KurimKrypty&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;kbzD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c1/70/c17078fe-ca46-4bf1-8040-ec52a11326d1.png&quot; width=&quot;475&quot; /&gt;
    &lt;figcaption&gt;                                                      Дали второй коммит новому файлу в новой папке&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;tIGz&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;1IWS&quot; data-align=&quot;center&quot;&gt;9. Перемещение между версиями&lt;/h3&gt;
  &lt;p id=&quot;1NIN&quot;&gt;Чтобы переместиться между версиями проекта нам прежде всего необходимо перемести &lt;em&gt;указатель HEAD&lt;/em&gt; на первый коммит.&lt;/p&gt;
  &lt;ul id=&quot;iVHr&quot;&gt;
    &lt;li id=&quot;o8bQ&quot;&gt;Для этого скопируем часть хеша нашего первого коммита и пропишем команду &lt;code&gt;git checkout часть хеша&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;FIYC&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/54/59/5459b673-5295-41ad-b6ce-6475c98739c3.png&quot; width=&quot;615&quot; /&gt;
    &lt;figcaption&gt;                                                              как видим HEAD успешно переместился &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;4NwA&quot;&gt;
    &lt;li id=&quot;IWqm&quot;&gt;Введем команду &lt;code&gt;dir&lt;/code&gt; для просмотра всех объектов папки и можем заметить отсутствие недавно созданной папки KurimKrypty. Это произошло из-за возврата на 1 версию нашего проекта и Git изменил содержимое рабочей директории.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;SlIR&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2d/ad/2dadf7b9-c41e-45f9-a05c-a0b887f7f51f.png&quot; width=&quot;456&quot; /&gt;
    &lt;figcaption&gt;                                                          HEAD ссылается на коммит а не  мастер ветку&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;0iL8&quot;&gt;Для возврата на master ветку используем команду &lt;code&gt;git checkout master&lt;/code&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;mTc0&quot;&gt;Мы закончили часть с обучением создания репозитория и коммитов файлов, теперь можем переходить к следующей невероятно важной теме.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;sixw&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;pB3j&quot; data-align=&quot;center&quot;&gt;10. Ветки в Git и работа с ними&lt;/h3&gt;
  &lt;blockquote id=&quot;Cfdb&quot;&gt;&lt;strong&gt;Ветка&lt;/strong&gt; - ссылка на коммит&lt;/blockquote&gt;
  &lt;p id=&quot;SlZq&quot;&gt;Ветвление - это возможность работать над разными версиями проекта. Вместо одного списка с упорядоченными коммитами история будет расходиться в определённых точках. Каждая ветвь содержит указатель HEAD на последний коммит, что позволяет без лишних затрат создать много веток. Ветка по умолчанию называется &lt;em&gt;master/main.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;BALu&quot;&gt;Итак, есть общий указатель &lt;strong&gt;HEAD&lt;/strong&gt; и HEAD для каждой ветки. Переключение между ветками предполагает только перемещение &lt;strong&gt;HEAD&lt;/strong&gt; в HEAD соответствующей ветки.&lt;/p&gt;
  &lt;figure id=&quot;eYFU&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d5/b5/d5b55546-6d52-45d9-b82a-d7ebddcaed49.png&quot; width=&quot;660&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;eZ5W&quot;&gt;Команды для работы с ветками&lt;/h3&gt;
  &lt;ul id=&quot;UQoK&quot;&gt;
    &lt;li id=&quot;UM8T&quot;&gt;&lt;code&gt;git branch имя ветки&lt;/code&gt; - создаёт новую ветку с HEAD, указывающим на &lt;strong&gt;HEAD&lt;/strong&gt;. Если не передать аргумент &lt;code&gt;&amp;lt;имя ветки&amp;gt;&lt;/code&gt;, то команда выведет список всех локальных веток.&lt;/li&gt;
    &lt;li id=&quot;Aok9&quot;&gt;&lt;code&gt;git checkout имя ветки&lt;/code&gt; - переключается на эту ветку. Можно передать опцию &lt;code&gt;-b&lt;/code&gt;, чтобы создать новую ветку перед переключением.&lt;/li&gt;
    &lt;li id=&quot;TZAq&quot;&gt;&lt;code&gt;git branch -d имя ветки&lt;/code&gt; - удаляет ветку.&lt;/li&gt;
    &lt;li id=&quot;yGgk&quot;&gt;&lt;code&gt;git branch&lt;/code&gt; - отображает список всех ветвей в локальном репозитории.&lt;/li&gt;
    &lt;li id=&quot;0ZNG&quot;&gt;&lt;code&gt;git branch -m новое имя ветки&lt;/code&gt; - переименовывает текущую ветку.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;dwCV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/07/5f/075f6522-3e78-4749-9054-74a89d958a13.png&quot; width=&quot;376&quot; /&gt;
    &lt;figcaption&gt;                                                                 Cоздал новую ветку и переключился на нее&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;c6lT&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;DFTr&quot; data-align=&quot;center&quot;&gt;11. Удаленные репозитории&lt;/h3&gt;
  &lt;p id=&quot;KRj2&quot;&gt;Чтобы иметь возможность совместной работы над каким-либо проектом, необходимо знать как управлять удалёнными репозиториями. Удалённые репозитории - репозитории, хранящиеся на сервере. Я использую Github, как самую распространённую и удобную платформу и все мои будущие проекты будут публиковаться именно там.&lt;/p&gt;
  &lt;p id=&quot;zi6u&quot;&gt;При использовании команды &lt;code&gt;git remote url репозитория&lt;/code&gt; мы добавляем удаленный репозиторий, который находится по указанному адресу и которому присваивается имя origin.&lt;/p&gt;
  &lt;blockquote id=&quot;htfp&quot;&gt;Origin - имя удаленного репозитория по-умолчанию.&lt;/blockquote&gt;
  &lt;p id=&quot;6SjX&quot;&gt;Наиболее употребляемые команды:&lt;/p&gt;
  &lt;ul id=&quot;BJnj&quot;&gt;
    &lt;li id=&quot;QU07&quot;&gt;&lt;code&gt;git remote add имя url&lt;/code&gt; - добавляет удалённый репозиторий с заданным именем.&lt;/li&gt;
    &lt;li id=&quot;UQuk&quot;&gt;&lt;code&gt;git remote remove имя &lt;/code&gt;- удаляет удалённый репозиторий с заданным именем.&lt;/li&gt;
    &lt;li id=&quot;eKdY&quot;&gt;&lt;code&gt;git remote rename старое имя новое имя&lt;/code&gt; - переименовывает удалённый репозиторий.&lt;/li&gt;
    &lt;li id=&quot;5vmd&quot;&gt;&lt;code&gt;git remote set-url имя url&lt;/code&gt; - присваивает репозиторию с именем новый адрес;&lt;/li&gt;
    &lt;li id=&quot;frvJ&quot;&gt;&lt;code&gt;git remote show имя&lt;/code&gt;- показывает информацию о репозитории.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;JPok&quot;&gt;Таким образом несколько людей могут запрашивать изменения с сервера, делать изменения в локальных копиях и затем отправлять их на удалённый сервер, что позволяет взаимодействовать друг с другом в пределах одного репозитория.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;eniY&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;JA9m&quot; data-align=&quot;center&quot;&gt;12. Связь локального репозитория с удаленным &lt;/h3&gt;
  &lt;p id=&quot;0u5W&quot;&gt;Теперь когда у нас есть свой локальный репозиторий и мы разобрались с удаленными репозиториями мы можем их связать и залить готовый репозиторий на свой GitHub.&lt;/p&gt;
  &lt;ul id=&quot;iszh&quot;&gt;
    &lt;li id=&quot;uM9O&quot;&gt;Переходим в наш ранее созданный аккаунт GitHub и переходим в раздел создания нового репозитория.&lt;br /&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;fJmx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a3/43/a343e8ad-3b41-433f-b0ec-4e44be39cdfd.png&quot; width=&quot;1593&quot; /&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;UQaB&quot;&gt;
    &lt;li id=&quot;e5ha&quot;&gt; Создаем новый пустой репозиторий, выбираем название проекта и настраиваем под себя&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;Gu6n&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/80/cc/80cc0aef-b1c7-4ae4-807e-17917ab68571.png&quot; width=&quot;950&quot; /&gt;
    &lt;figcaption&gt;                 Я ничего не менял&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;ul id=&quot;1ebJ&quot;&gt;
    &lt;li id=&quot;LB7W&quot;&gt;Пролистываем создавшийся репозиторий вниз до указаний о пуше через терминал&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;QBsj&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9f/0b/9f0b77a4-9137-4999-b289-1b8b448cc64a.png&quot; width=&quot;1298&quot; /&gt;
    &lt;figcaption&gt; Нам нужны эти 3 строки&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;agW2&quot;&gt;&lt;code&gt;git remote add origin&lt;/code&gt; - добавляет удаленный репозиторий.&lt;br /&gt;&lt;code&gt;git branch -M main&lt;/code&gt; - рекомендация от GitHub по названию главной ветки.&lt;br /&gt;&lt;code&gt;git push -u origin main&lt;/code&gt; - загрузить изменения с локального на удаленный.&lt;/blockquote&gt;
  &lt;figure id=&quot;EwC9&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/84/358401f9-29c5-4580-bc20-4137ce3997b2.png&quot; width=&quot;764&quot; /&gt;
    &lt;figcaption&gt;Результат выполнения в терминале&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;rZeM&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7f/01/7f01133e-b026-4037-b030-2002f66ff0d0.png&quot; width=&quot;1230&quot; /&gt;
    &lt;figcaption&gt;Результат на GitHub&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ALJX&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;aj7e&quot; data-align=&quot;center&quot;&gt;Промежуточные итоги&lt;/h3&gt;
  &lt;p id=&quot;KbHR&quot;&gt;С гитом я знаком еще с универа, и на 1 курсе нас заставляли работать именно в терминале, ведь надо было подогнать всех под один стандарт. При самостоятельном изучении у вас всегда есть выбор где и как вы хотите работать, но терминал может стать для вас отправной точкой оттачивания практических навыков выполнения команд.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;2Dh2&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;fdlh&quot; data-align=&quot;center&quot;&gt;Справочник по git командам&lt;/h3&gt;
  &lt;blockquote id=&quot;PGeV&quot;&gt;Тут собраны самые основные и наиболее часто используемые git команды в алфавитном порядке&lt;/blockquote&gt;
  &lt;ol id=&quot;COAM&quot;&gt;
    &lt;li id=&quot;lro2&quot;&gt;&lt;code&gt;git add&lt;/code&gt; - добавляет файлы в индекс git.&lt;/li&gt;
    &lt;li id=&quot;urpl&quot;&gt;&lt;code&gt;git archive&lt;/code&gt; - создает архив из ветки.&lt;/li&gt;
    &lt;li id=&quot;hYUz&quot;&gt;&lt;code&gt;git bisect&lt;/code&gt; - бинарный поиск коммита, который привел к ошибке.&lt;/li&gt;
    &lt;li id=&quot;SrT3&quot;&gt;&lt;code&gt;git branch&lt;/code&gt; - работа с ветками: просмотр, создание, удаление.&lt;/li&gt;
    &lt;li id=&quot;PbG0&quot;&gt;&lt;code&gt;git bundle&lt;/code&gt; - позволяет упаковать в бинарный файл то, что было бы отправлено в репозиторий с помощью git push. &lt;/li&gt;
    &lt;li id=&quot;NDWx&quot;&gt;&lt;code&gt;git checkout&lt;/code&gt; - переключает нас на разные ветки репозитория и восстанавливает файлы в рабочей ветке (приводит содержимое в соответствие с удаленным репозиторием). Также позволяет создать новую ветку. &lt;/li&gt;
    &lt;li id=&quot;5FCA&quot;&gt;&lt;code&gt;git cherry-pick&lt;/code&gt; - из нескольких коммитов собирает один и применяет его в текущей ветке.&lt;/li&gt;
    &lt;li id=&quot;GTVz&quot;&gt;&lt;code&gt;git clean&lt;/code&gt; - удаляет файлы, которые не отслеживаются в репозитории.&lt;/li&gt;
    &lt;li id=&quot;X3TI&quot;&gt;&lt;code&gt;git clone&lt;/code&gt; - команда клонирует репозиторий в новую директорию.&lt;/li&gt;
    &lt;li id=&quot;wFLL&quot;&gt;&lt;code&gt;git config&lt;/code&gt; - команда позволяет работать с настройками репозитория, читать их или задавать новые значения опциям.&lt;/li&gt;
    &lt;li id=&quot;Novm&quot;&gt;&lt;code&gt;git commit&lt;/code&gt; - добавляет описание к файлам.&lt;/li&gt;
    &lt;li id=&quot;Qcwe&quot;&gt;&lt;code&gt;git diff&lt;/code&gt; - сравнение содержимого (фиксами, деревьями и так далее).&lt;/li&gt;
    &lt;li id=&quot;7dBP&quot;&gt;&lt;code&gt;git fetch&lt;/code&gt; - скачивание объектов и ссылок из другого репозитория. Обратите внимание, что данная команда скачивает только информацию об изменениях, но не сами файлы.&lt;/li&gt;
    &lt;li id=&quot;XxKL&quot;&gt;&lt;code&gt;git gc&lt;/code&gt; - чистка репозитория от устаревших и временных данных.&lt;/li&gt;
    &lt;li id=&quot;27rm&quot;&gt;&lt;code&gt;git gui&lt;/code&gt; - портативный графический интерфейс к Git.&lt;/li&gt;
    &lt;li id=&quot;Kxmq&quot;&gt;&lt;code&gt;git init&lt;/code&gt; - команда используется для инициализации проекта, как репозитория git.&lt;/li&gt;
    &lt;li id=&quot;ZVTC&quot;&gt;&lt;code&gt;git log&lt;/code&gt; - показывает журналы коммитов.&lt;/li&gt;
    &lt;li id=&quot;ycBN&quot;&gt;&lt;code&gt;git merge&lt;/code&gt; - объединяет ветки.&lt;/li&gt;
    &lt;li id=&quot;XHkS&quot;&gt;&lt;code&gt;git mv&lt;/code&gt; - перемещает или переименовывает файл.&lt;/li&gt;
    &lt;li id=&quot;zLEI&quot;&gt;&lt;code&gt;git notes&lt;/code&gt; - создать примечание для объекта.&lt;/li&gt;
    &lt;li id=&quot;MRgK&quot;&gt;&lt;code&gt;git pull&lt;/code&gt; - скачиваем файлы из другого репозитория.&lt;/li&gt;
    &lt;li id=&quot;Fk0L&quot;&gt;&lt;code&gt;git push&lt;/code&gt; - отправляет файлы на сервер. &lt;/li&gt;
    &lt;li id=&quot;KxsG&quot;&gt;&lt;code&gt;git rebase&lt;/code&gt; - слияние веток с заменой всех коммитов на один единственный. В итоге мы получаем ветку, которая, как будто, только что была создана заново.&lt;/li&gt;
    &lt;li id=&quot;Bf5z&quot;&gt;&lt;code&gt;git reset&lt;/code&gt; - сбрасывает состояние изменений для текущей ветки. Позволяет без объединений заменить файлы при выполнении git pull&lt;a href=&quot;https://www.dmosk.ru/miniinstruktions.php?mini=git#commands-pull&quot; target=&quot;_blank&quot;&gt;.&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;RoYD&quot;&gt;&lt;code&gt;git restore&lt;/code&gt; - восстановление файлов рабочего дерева. А именно, приводит содержимое в соответствие с удаленным репозиторием.&lt;/li&gt;
    &lt;li id=&quot;eGg6&quot;&gt;&lt;code&gt;git remote add&lt;/code&gt;&lt;strong&gt; - &lt;/strong&gt;команда используется для добавления или подключения к удаленному репозиторию.&lt;/li&gt;
    &lt;li id=&quot;uQLG&quot;&gt;&lt;code&gt;git remote -v&lt;/code&gt; - команда используется для просмотра подключенных удаленных репозиториев.&lt;/li&gt;
    &lt;li id=&quot;vddB&quot;&gt;&lt;code&gt;git rm&lt;/code&gt; - удаляет файлы из ветки и индекса.&lt;/li&gt;
    &lt;li id=&quot;6LLN&quot;&gt;&lt;code&gt;git shortlog&lt;/code&gt; - выполняет группировку всех коммитов по автору.&lt;/li&gt;
    &lt;li id=&quot;3Gjc&quot;&gt;&lt;code&gt;git show&lt;/code&gt; - показывает объект в удобочитаемом виде.&lt;/li&gt;
    &lt;li id=&quot;iNdQ&quot;&gt;&lt;code&gt;git status&lt;/code&gt; - команда используется для просмотра статуса файлов в вашем локальном репозитории.&lt;/li&gt;
    &lt;li id=&quot;W2xt&quot;&gt;&lt;code&gt;git switch&lt;/code&gt; - позволяет переключаться между ветками.&lt;/li&gt;
    &lt;li id=&quot;gDng&quot;&gt;&lt;code&gt;git tag&lt;/code&gt; - работа с тегами.&lt;/li&gt;
    &lt;li id=&quot;eJxz&quot;&gt;&lt;code&gt;git worktree&lt;/code&gt; - управление несколькими рабочими ветками.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;8orT&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;aJBL&quot; data-align=&quot;center&quot;&gt;ADVANCED LVL&lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4EJK&quot;&gt;В моей части, advanced level представляет из себя знания, которые упростят вам работу с гитом и его функциями, но не являются первостепенными для создания первого проекта. Читайте, набирайтесь опыта и задавайте вопросы в L1 чате.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;at1T&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;QWYk&quot; data-align=&quot;center&quot;&gt;1. Слияние веток&lt;/h3&gt;
  &lt;p id=&quot;0yH6&quot;&gt;Данная вещь необходима для работы в команде и позволяет разработчикам совместить свои рабочие ветки в одну, после отладки функционала разных частей кода.&lt;/p&gt;
  &lt;p id=&quot;Dr5h&quot;&gt;Слиние, включает в себя создание нового коммита, который основан на общем коммите - предке двух ветвей и указывает на оба HEAD в качестве предыдущих коммитов.&lt;/p&gt;
  &lt;figure id=&quot;7ScQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c2/53/c2532b9a-935a-4b50-bfad-5d30e98c38ad.png&quot; width=&quot;660&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote id=&quot;paZ9&quot;&gt;Feature branch(тематическая ветка) - ветка из которой мы переносим готовый&lt;/blockquote&gt;
  &lt;blockquote id=&quot;kFfy&quot;&gt;Receving branch(основная ветка) - ветка в которую мы сливаем изменения &lt;/blockquote&gt;
  &lt;p id=&quot;1dYI&quot;&gt;Для слияния мы переходим на основную ветку и используем команду &lt;code&gt;git merge &amp;lt;тематическая ветка&amp;gt;&lt;/code&gt;.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;GxeF&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;j6mp&quot; data-align=&quot;center&quot;&gt;2. Перемещение&lt;/h3&gt;
  &lt;p id=&quot;9O6T&quot;&gt;Вместо слияния двух ветвей, перемещение заново воспроизводит коммиты тематической ветки в виде набора новых коммитов базовой ветки, что выливается в более чистую историю коммитов.&lt;/p&gt;
  &lt;figure id=&quot;1UHD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/87/62/87621d9f-59dd-4deb-9d85-b3a4520ed7e8.png&quot; width=&quot;660&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;86qh&quot;&gt;Для перемещения используется команда &lt;code&gt;git rebase &amp;lt;основная ветка&amp;gt; &amp;lt;тематическая ветка&amp;gt;&lt;/code&gt;, которая воспроизводит изменения тематической ветки на основной; HEAD тематической ветки указывает на последний воспроизведённый коммит.&lt;/p&gt;
  &lt;p id=&quot;mnxm&quot;&gt;&lt;strong&gt;Проблема перемещения&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ktwb&quot;&gt;После слияния &lt;code&gt;log&lt;/code&gt; с историей может выглядеть довольно беспорядочно, а  перемещение позволяет переписать историю в нормальной, последовательной форме. Но перемещение — не всегда выход от запутанных логов: перемещённые коммиты отличаются от оригинальных, хотя и имеют одного и того же автора, сообщение и изменения.&lt;/p&gt;
  &lt;p id=&quot;JUjz&quot;&gt;Вот пример:&lt;/p&gt;
  &lt;ul id=&quot;hyXl&quot;&gt;
    &lt;li id=&quot;rPkW&quot;&gt;В своей ветке вы создаёте несколько коммитов и сливаете их в мастер ветку.&lt;/li&gt;
    &lt;li id=&quot;LgCp&quot;&gt;Кто-то ещё решает поработать на основе ваших коммитов.&lt;/li&gt;
    &lt;li id=&quot;Wgri&quot;&gt;Вы решаете переместить ваши коммиты и отправить их на сервер.&lt;/li&gt;
    &lt;li id=&quot;WGsg&quot;&gt;Когда кто-то попытается слить свою работу на основе ваших изначальных коммитов, в итоге мы получим две параллельные ветки с одним автором, сообщениями и изменениями, но разными коммитами.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Nn3z&quot;&gt;Перемещайте изменения только на вашей приватной локальной ветке - не перемещайте коммиты, от которых зависит ещё кто-то.&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;DdLE&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;87pk&quot; data-align=&quot;center&quot;&gt;3. Работа с pull request &lt;/h3&gt;
  &lt;p id=&quot;7An6&quot;&gt;Запросы pull — это механизм, с помощью которого разработчик уведомляет участников команды о том, что он подготовил некий функционал.&lt;/p&gt;
  &lt;figure id=&quot;w7fw&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c6/97/c6978634-f69c-41c6-99d2-d220cbacd9f6.png&quot; width=&quot;1587&quot; /&gt;
    &lt;figcaption&gt;Пример пул реквеста от Жени в мой проект&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;6UYP&quot; class=&quot;m_column&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/37/17/37172743-e1d2-47c0-a78b-3fb2e90274db.png&quot; width=&quot;1152&quot; /&gt;
    &lt;figcaption&gt;Пример пул реквеста от Жени в мой проект&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;80yY&quot;&gt;Любой пул реквест мы можем одобрить или отклонить, если у него есть проблемы в коде, коммите и т.д. Если вы и дальше работаете в той же ветке, а пулреквест ещё не принят, все ваши изменения автоматически добавятся в пулреквест, созданный из этой ветки после команды &lt;code&gt;git push origin название текущей ветки&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;Q7QA&quot;&gt;Про создание пул реквеста а GitHub и как это выглядит со стороны, вы уже увидели у Жени, а я перейду к структуре пулл реквеста.&lt;/p&gt;
  &lt;h3 id=&quot;sGp7&quot;&gt;Структура запроса pull&lt;/h3&gt;
  &lt;p id=&quot;wJjT&quot;&gt;Создавая пул реквест, вы предлагаете разработчику забрать вашу ветку из вашего репозитория в его репозиторий. Поэтому для создания пул реквеста необходимо указать 4 параметра: исходный репозиторий, исходную ветку, репозиторий назначения и ветку назначения.&lt;/p&gt;
  &lt;figure id=&quot;qvQ4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/77/ad/77ad49c3-2766-4e0e-ac03-5742f3a8da6b.png&quot; width=&quot;780&quot; /&gt;
  &lt;/figure&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;tGbO&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;vNXj&quot; data-align=&quot;center&quot;&gt;Промежуточные итоги&lt;/h3&gt;
  &lt;p id=&quot;IKus&quot;&gt;Подводя итоги части &amp;quot;Advanced&amp;quot;, я бы хотел посоветовать вам при работе с терминалом как можно чаще создавать свои проекты, ведь только тогда вы сможете быстро выполнять все команды, лучше поймете структуру и работу гита и узнаете для себя кое-что новое. &lt;/p&gt;
  &lt;p id=&quot;seay&quot;&gt;Я, надеюcь, вы узнали для себя кое-что новое из этой главы и научились работать с Git через консоль. Выражаю огромную благодарность за прочтение этой статьи и желаю вам успехов в разработке!&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;UM2Y&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;xNkP&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;h2 id=&quot;Z4RT&quot; data-align=&quot;center&quot;&gt;ЗАКЛЮЧЕНИЕ &lt;/h2&gt;
  &lt;/section&gt;
  &lt;p id=&quot;m0ZB&quot;&gt;В целом, для работы с &lt;strong&gt;Git &lt;/strong&gt;совсем не зазорно использовать терминал, но только представьте, что человек платит за лицензию &lt;strong&gt;PyCharm &lt;/strong&gt;или любой другой крутой &lt;strong&gt;IDE &lt;/strong&gt;и по итогу все, чем он пользуется - это зеленая кнопка &lt;strong&gt;&lt;em&gt;run&lt;/em&gt;&lt;/strong&gt;, чтобы не утруждать себя запуском приложения из консоли:) Это глупо, и не разумно, остановитесь и выделите хотя бы немного времени на то, чтобы разобраться со средой, в которой работаете. &lt;/p&gt;
  &lt;p id=&quot;doiP&quot;&gt;В остальном же, Благодарю тебя, Дорогой читатель за прочтение материала, который мы готовили ровно три дня без учета нашего же изучения Git.&lt;/p&gt;
  &lt;p id=&quot;53mS&quot;&gt;&lt;strong&gt;Цель этой статьи:&lt;/strong&gt; помочь каждому, кто давно хотел работать с Git, начать, и замотивировать тех, кто до этого считал системы контроля версий - ненужной тратой времени. &lt;/p&gt;
  &lt;p id=&quot;VTU5&quot;&gt;&lt;em&gt;— Я считаю, что цель вы выполнили.&lt;strong&gt; Спасибоу! &lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(323, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;hyUN&quot;&gt;&lt;em&gt;&lt;strong&gt;Обещанные 10 тикетов в {Layer 1}: &lt;a href=&quot;https://t.me/+6qxiOTYaOEA4NTcy&quot; target=&quot;_blank&quot;&gt;https://t.me/+6qxiOTYaOEA4NTcy&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;/section&gt;

</content></entry></feed>