Работаем с репозиториями в git

Устанавливаем SSH-ключи

Git установлен, профиль на GitHub создан. Осталось добавить SSH-ключ и можно приступать к работе с проектом.

Что такое SSH-ключ и зачем он нужен?

Чтобы работать со своего компьютера с GitHub, иметь доступ к проектам, хранящимся на сервисе, выполнять команды в консоли без постоянного подтверждения пароля, нужно пройти авторизацию у сервера. В этом помогают SSH-ключи.

Каждый SSH-ключ содержит пару: открытый (публичный) и закрытый (приватный) ключ. Открытый ключ отправляется на сервер, его можно не прятать от всех и не переживать, что кто-то его увидит и украдёт. Он бесполезен без своей пары — закрытого ключа. А вот закрытый ключ — секретная часть. Доступ к нему должен быть только у вас.

Вы отправляете какую-то информацию на сервер, где хранится ваш публичный ключ, сервер понимает, что вы это вы, то есть идентифицирует именно вас, и даёт вам какой-то ответ. И только вы можете расшифровать этот ответ, потому что только у вас есть подходящий закрытый ключ. Получается что-то вроде связки логин-пароль только намного безопасней. Ваш пароль кто-то может узнать или подобрать, а чтобы получить ваш приватный SSH-ключ, злоумышленнику придётся взломать ваш компьютер.

Чтобы пройти авторизацию по SSH-ключу, его надо сгенерировать или найти уже ранее созданный ключ на своём компьютере.

Сначала проверим, есть ли уже на компьютере ключ. По умолчанию SSH-ключи хранятся в каталоге , поэтому нужно проверить содержимое этого каталога.

  1. Открываем консоль.
  2. Вводим , чтобы перейти в нужный каталог.

    Переходим в нужную директорию.

  3. Используем , чтобы увидеть список всех файлов в каталоге.

    Открываем список файлов в директории.

    Ищем пару файлов с названиями вида и . Обычно имя — , , или . Файл с расширением — ваш публичный ключ, а второй — ваш приватный, секретный ключ.
    Если таких файлов или даже каталога у вас нет, вы можете их сгенерировать. Для этого делаем следующее.

    • Открываем консоль и вводим команду:
      ssh-keygen -t rsa -b 4096 -C "your_mail@example.com"

      Указываем тот адрес электронной почты, который вводили при регистрации на GitHub.

      Генерируем ключ.

    • Далее нужно указать расположение файла для сохранения ключа. Если вы не введёте путь до файла и просто нажмёте Enter, ключ сохранится в файле, указанном в скобках.
    • Теперь нужно установить пароль к вашему ключу и дважды ввести его. Если вы не хотите вводить пароль каждый раз, когда используете ключ, пропустите этот шаг, нажав «Enter», и ничего не вводите.

      Указываем расположение ключа и вводим пароль.

  4. Добавляем ключ в (сгенерированный или уже существующий). Проверяем доступность ключа командой и добавляем с помощью , где указываем верный путь до файла с ключом и его имя.

    Добавляем ключ в shh-agent. Несколько важных примечаний:

    • Если вы захотите переименовать ключ, могут возникнуть проблемы. Их можно решить, добавив в связь ключа с доменом.
    • Если у вас Windows и вы пользуетесь программой Cmder, возможны проблемы с командой . Может появиться такое сообщение об ошибке:
      «eval не является внутренней или внешней командой, исполняемой программой или пакетным файлом».

      В Сmder для запуска можно использовать команду .

      Если проблема осталась, рекомендуем работать в Git Bash.

    • Если у вас macOS Sierra версии 10.12.2 и выше, нужно изменить ваш файл, чтобы автоматически загрузить ключи в и хранить пароли.
      Host *
       AddKeysToAgent yes
       UseKeychain yes
       IdentityFile ~/.ssh/id_rsa

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

    • Если у вас Linux, может понадобится переназначить для ~/.ssh права доступа командой
  5. После того как создан ключ, его нужно добавить на GitHub. Для этого копируем его содержимое с помощью одной из следующих команд:
    • Если вы на Windows
    • Для пользователей macOS
    • На Linux используйте , чтобы установить необходимый для копирования пакет , а затем введите

    Можно пойти другим путём, открыть файл прямо в папке и просто скопировать содержимое оттуда.

  6. Переходим на страницу для работы с ключами в вашем профиле на GitHub.

    Страница с настройками ключей в вашем профиле.

    Нажимаем кнопку New SSH key (новый SSH-ключ). Вводим имя ключа (можно придумать абсолютно любое) в поле Title (название), а в Key (ключ) вставляем сам ключ из буфера обмена. Теперь нажимаем Add SSH key (добавить SSH-ключ).

    Добавляем в свой профиль SSH-ключ.

    Если всё сделано верно, в списке появится новый ключ.

    Успешно добавленный ключ.

Теперь, наконец-то, мы можем начать работу с самим проектом.

Я не знаю, что вы только что сказали (Вариант 2)

Я собираюсь предположить, что любой, кто интересуется вариантом 2, является новичком во всем этом и, возможно, имеет папку, полную файлов (или вы планируете иметь один), который вы хотите поместить на GitHub, и вы просто не знаете как это сделать.

Давайте сделаем это!

Скажем, вы хотите создать новый репозиторий. (Вероятно, так и есть! Именно здесь будет жить ваш проект. Если вы не собираетесь создавать новый репозиторий, вы, вероятно, захотите клонировать существующий репозиторий. Мы поговорим об этом позже, но именно так вы получаете чужой проект и информация, которая вам нужна для вашей работы или курса, который вы выбираете.)

Вашхранилищегде вы будете организовывать свой проект. Вы можете хранить папки, файлы, изображения, видео, электронные таблицы, записные книжки Jupyter, наборы данных и все остальное, что нужно вашему проекту. Прежде чем вы сможете работать с Git, вы должны инициализировать репозиторий для вашего проекта и настроить его так, чтобы Git управлял им. Вы можете сделать это прямо на сайте GitHub.

Это хорошая идея, чтобы включитьПРОЧТИ МЕНЯфайл с информацией о вашем проекте. Вы можете создать один в то же время, когда вы создаете свой репозиторий, щелкнув флажок.

  • Перейдите на веб-сайт GitHub, посмотрите в верхнем правом углу, нажмите знак +, а затем нажмите «Новый репозиторий».
  • Назовите репозиторий и добавьте краткое описание.
  • Решите, хотите ли вы, чтобы это был публичный или частный репозиторий
  • Нажмите «Инициализировать этот репозиторий с помощью README», если вы хотите включить файл README. (Я определенно рекомендую сделать это! Это первое, на что люди обратятся, когда проверят ваш репозиторий. Это также отличное место для размещения информации, которая вам необходима, чтобы понять или запустить проект.)

Новый репозиторий
Создание вашего нового хранилища

Вы можете полностью начать работать прямо с этого момента, если хотите! Вы можете загружать файлы, редактировать файлы и т. Д. Прямо из своего репозитория на веб-сайте GitHub. Тем не менее, вы не можете быть удовлетворены только этой опцией.

Есть два способа внести изменения в ваш проект. Вы можете вносить изменения в свои файлы / записные книжки на своем компьютере, а также вносить изменения прямо на GitHub.

Допустим, вы хотите внести некоторые изменения в свой файл README прямо на GitHub.

  • Сначала зайдите в свой репозиторий.
  • Нажмите на имя файла, чтобы вызвать этот файл (например, нажмите «README.md», чтобы перейти к файлу readme).
  • Нажмите значок карандаша в верхнем правом углу файла и внесите некоторые изменения.
  • Напишите короткое сообщение в поле, которое описывает сделанные вами изменения (и расширенное описание, если хотите).
  • Нажмите кнопку «Подтвердить изменения»

Редактирование вашего файла на GitHub
Передача ваших изменений

Теперь изменения были внесены в файл README в вашем новом хранилище! (Я хочу обратить ваше внимание на маленькую кнопку, которую вы можете отметить на изображении выше, которая позволит вам создать новую ветку для этого коммита и запустить запрос на извлечение. Мы поговорим об этом позже!). Довольно легко, правда?

Довольно легко, правда?

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

Добавляем и изменяем файлы

Теперь давайте создадим в нашей папке новый текстовый документ с сообщением “Hello world!”.

Если мы откроем GitHub Desktop, мы увидим что наш файл увидела система и пометила как добавление новгго файла, отметив зеленым плюсом. Справа отобразив что именно сделали с файлом: зеленым выделены добавленные фрагменты.

Теперь мы готовы сделать свой первый коммит (commit). По факту это фраза означает внесения изменения в текущую ветку в локальном репозитории. Чтобы это сделать, нужно написать краткое сообщение, отражающее суть изменений, чтобы потом было проще в них ориентироваться. В данном случае мы добавили новый текстовый файл (сообщение может быть на любом языке, необязательно на английском). Github сам нам подсказал название коммита. Так же мы можем добавить описание изменений, чтобы другим пользователям было проще.

Когда мы готовы сделать коммит, нажимаем кнопку Commit to master. Это означает сделать коммит в локальную ветку master, про сами ветки расскажем чуть позже. Но мы сделали только коммит, теперь нужно чтобы изменились файлы в удаленном репозитории, то есть синхронизировать локальную и удалённую ветки master. Для этого нажимаем кнопку сверху Push origin.

Если все прошло успешно, и изменения запушились в удаленный репозиторий, то, обновив его страницу на GitHub, мы увидим новый файл hello world.txt.

Поверьте, адекватные описания коммитов — это очень важно!

Теперь давайте создадим файл на GitHub и скопируем его в локальный репозиторий. Нажимаем кнопку Create new file и называем его newfile.

Осталось “прописать” коммит и сделать его, нажав Commit new file:

Откроем GitHub Desktop и обнаружим, что система сама определила, что произошел внешний коммит и наши файлы нужно обновить. Если изменений не видно, нажмите F5 или перезапустите приложение. Нажмём на Pull origin и скачаем файлы в свой локальный репозиторий:

Вышел релиз GitLab 13.10 с улучшениями для администраторов и управлением уязвимостями

Перевод

GitLab 13.10 уже доступен! В этом месяце мы сосредоточили наше внимание на масштабируемости и удобстве управления продуктом, чтобы вы могли итерировать и вводить новшества быстрее, безопаснее и с меньшим количеством проблем. Релиз 13.10 предлагает улучшения администрирования для масштабирования DevOps в вашей организации, проверку целостности пакетов для аварийного восстановления с Geo, автоматизацию управления уязвимостями для большей эффективности и согласованности в обеспечении безопасности и, как и всегда, множество фантастических вкладов от нашего обширного сообщества

Это — лишь некоторые из более чем 40 новых фич и улучшений в данном релизе.

Отправка новых файлов на удалённый репозиторий

Перейдите в директорию (папку) с привязанным репозиторием

Поместите в данную директорию свои файл/файлы, которые хотите отправить на удалённый репозиторий GitHub

Кликните правой кнопкой мыши и нажмите на «Git Bash Here»

Откроется окно консоли. Теперь переходим к командам для отправки на удалённый репозиторий. Введите команду для добавления директории в список отправки

Команда для отправки через git на GitHub

Shell

git add newFIles/

1

git add newFIles

и нажмите клавишу Enter, в консоле ничего появится не должно;
Следующим шагом добавим файл для добавления его в список отправки

Команда для отправки через git на GitHub

Shell

git add 5.txt

1

git add5.txt

и нажмите клавишу Enter, в консоле ничего появится не должно;
Теперь проверим какие файлы и директории были добавлены, да и вообще убедимся в каких частях нашего проекта были изменения. Введите команду

Команда для отправки через git на GitHub

Shell

git status

1

git status

и нажмите клавишу Enter, в консоле появится список на отправлениеПоявились новые файлы: один новый файл в корне проекта, четыре новых файла в директории newFiles;
Теперь необходимо создать текстовую запись (можно сказать, что это запись в журнале изменений) о наших изменениях. Называется этот процесс «создание коммита» или «create commit«. Помните, каждый коммит должен быть атомарен, то есть каждый коммит должен отражать одно изменение в проекте. Хорошей практикой является следующая аксиома: «сделал одну правку в проекте — закоммитил и отправил» и таким образом вносить все правки в свой проект. Не беспокойтесь, что коммитов из-за этого может быть много, это не страшно, страшно тогда, когда в ваших коммитах невозможно разобраться. Текст для коммитов должен быть осмысленным и отображать суть внесённых правок. С коммитами можно провести такую ассоциацию: «Коммит — это запись в журнале изменений проекта. Записывается кто внёс правку, какую человек внёс правку и дату внесения изменения». По этим самим коммитам можно вернуться к определённому моменту развития проекта и работать от этого момента, поэтому каждый коммит должен отражать одно изменение. Жёстким требованием это не является (бывают разные случаи, например нет возможности отправить), но рекомендуется поступать именно так.Закомитимся
Введите следующую команду для того, чтобы создать коммит

Команда для отправки через git на GitHub

Shell

git commit -m «Отправка тестовых текстовых файлов»

1

git commit-m»Отправка тестовых текстовых файлов»

и нажмите клавишу EnterПоявилось сообщение о создании новых элементов;

Отправляем в репозиторий GitHub, то есть «пушимся»

Команда для отправки через git на GitHub

Shell

git push

1

git push

файлы благополучно отправлены. Подобное сообщение будет и с отправкой на Ваш репозиторий.
Убедимся, что всё так

Зайдите на страницу своего репозитория на GitHubОбратите внимание на выделенные области, появились новый файл и одна директория, которая содержит в себе четыре файла. Также в заголовке прописано какой был последний коммит в данный репозиторий;

Что такое Git?

Git — система контроля версий (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?

Представьте, что вы с коллегами вместе пишете ядро Linuxнаучную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят. Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста — последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:

  • Ваша папка на компьютере — это не просто папка, а локальный репозиторий.
  • Она является копией удалённого репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket).
  • Eсли вы работаете над проектом с коллегами, то своя локальная копия есть у каждого.
  • Kогда вы внесли некоторое количество изменений, вы можете их сохранить, и это действие запишется в журнал; это называется commit (коммит).
  • После этого можно отправить изменения в удалённый репозиторий; это называется push (пуш, пу́шить, запу́шу, пуши́ от души).
  • Актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удалённом репозитории.
  • Если вы увидели, что ваши коллеги запушили в удалённый репозиторий что-то новенькое, то можно (и нужно!) “скопировать” это себе на компьютер (в локальный репозиторий); это называется pull (пулл).

Чем-то похоже на Dropbox, Google Drive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.

Понятно, что для совместной работы над текстом научной статьи вполне хватит и Google Docs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что:

  • они позволяют работать над проектом в команде;
  • вы видите, кем и когда были внесены те или иные изменения;
  • их всегда можно откатить назад;
  • вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
  • ваши наработки могут быть полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
  • GitHub и GitLab позволяют не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.

Существует много систем управления версиями, но мы будем пользоваться самой распространенной — git. Также нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы — это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для Git, например:

  • TortoiseGit
  • GitKraken
  • GitHub Desktop
  • Fork
  • Git GUI
  • Git Extensions
  • SourceTree

Мы будем пользоваться программой GitHub Desktop, которую можно скачать отсюда. Если вы уже знакомы с Git, то вы можете выбрать любую программу или пользоваться командной строкой — это не принципиально. Стоит отметить, что пользоваться командной строкой гораздо сложнее чем графическим интерфейсом, поэтому она больше подходит продвинутым пользователям.

Итого:

  • Git — разновидность системы контроля версий (самая популярная). Его можно скачать и установить, далее использовать через командную строку.
  • Можно использовать графический интерфейс для работы с Git. При этом скачивать и устанавливать сам Git отдельно не нужно, он обычно идет в комплекте с графическим интерфейсом (но не во всех GUI).
  • Репозиторий — это место где мы храним наш код проекта и всю информацию по файлам, их изменения и т.д. Репозиторий должен где-то хранится, чтобы у всех был доступ к нему и они могли видеть изменения. Его можно хранить и на домашнем компьютере, но не всегда удобно держать компьютер включенным целыми сутками, поэтому используют хостинги для репозиториев. Одними из самых известных являются GitHub и GitLab.

Регистрация на GitHub

Что такое GitHub?

GitHub — веб-сервис, который основан на системе Git. Это такая социальная сеть для разработчиков, которая помогает удобно вести коллективную разработку IT-проектов. Здесь можно публиковать и редактировать свой код, комментировать чужие наработки, следить за новостями других пользователей. Именно в GitHub работаем мы, команда Академии, и студенты интенсивов.

Чтобы начать работу с GitHub, нужно зарегистрироваться на сайте, если вы ещё этого не сделали. За дело.

  1. Переходим на сайт GitHub.

    Cтартовая страница GitHub.

  2. Для начала регистрации:
    • Нажимаем кнопку Sign up (зарегистрироваться), попадаем на страницу регистрации, где вводим обязательные данные: имя пользователя, адрес электронной почты и пароль. После заполнения полей проходим верификацию.

      Первый шаг регистрации профиля на стартовой странице GitHub.

    • После заполнения данных и успешного прохождения верификации нажимаем на кнопку Select a plan.

      Второй шаг регистрации профиля на стартовой странице GitHub.

  3. Третий шаг — небольшой опрос от GitHub, который вы можете пройти, заполнив все поля и нажать Submit или пропустить, нажав skip this step.

    Опрос на третьем шаге регистрации.

  4. После прохождения всех этапов на сайте, на указанный при регистрации ящик вам придёт письмо от GitHub. Откройте его и подтвердите свой почтовый адрес, нажав Verify email address (подтвердить электронный адрес) или скопируйте вспомогательную ссылку из письма и вставьте её в адресную строку браузера.

    Подтверждение электронного адреса.

  5. После верификации GitHub предложит создать новый репозиторий, организацию или узнать больше о GitHub. Этот пункт пока можно пропустить и перейти в профиль.

    Переход в ваш профиль.
    Так выглядит ваш профиль после регистрации.

Теперь у вас есть профиль на GitHub.

Подмодули

Клонирование репозитория с подмодулями

При клонировании репозитория вам необходимо инициализировать и обновить подмодули:

Запуск данной команды эквивалентен запуску команды:

после обычного клонирования репозитория

Обновление подмодулей

Подмодуль ссылается на конкретную коммит в другом репозитории. Чтобы получить
точное состояние всех подмодулей необходимо запустить:

Для получения состояния последнего коммита всех подмодулей необходимо выполнить
следующую команду:

или использовать аргументы по умолчанию команды git pull:

Эта команда просто обновляет локальную рабочую копию. При запуске команды git status
каталоги подмодулей будут показаны изменёнными. Чтобы обновить репозиторий необходимо
зафиксировать изменения:

Для получения состояние последнего коммита конкретного подмодуля необходимо использовать команду:

Добавление подмодулей

В текущий проект можно включить другой репозиторий Git в качестве папки, отслеживаемый Git:

После этого необходимо добавить и зафиксировать новый файл .gitmodules. В нём описано
какие подмодули следует клонировать при запуске команды git submodule update

Клонирование существующего репозитория

Второй вариант создания директории для контроля версий – копирование существующего проекта с другого сервера. Это актуально, когда осуществляется доработка готового проекта или вы желаете внедрить его компоненты в свой. В этом поможет команда git clone, о которой и пойдет речь далее. 

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

Для клонирования существующего репозитория понадобится ввести git clone <url>. Пример такой команды вы видите ниже:

git clone https://github.com/rep/rep

Данная команда позволила вам получить клон всех версий указанного репозитория (в качестве примера было взято название rep). Теперь на вашем сервере создана директория с указанным названием. К ней подключена поддержка контроля версий, то есть появилась папка .git. 

При использовании вышеуказанной команды репозиторий клонируется с текущим названием. Если же оно должно отличаться, используйте следующую вариацию команды:

git clone https://github.com/rep/rep myrep

Завершим этот раздел статьи описанием содержимого, которое появляется в консоли при выполнении команды. Данный вывод соответствует успешному клонированию:

Cloning into 'Git'...

remote: Counting objects: 46, done.

remote: Compressing objects: 100% (25/25), done.

remote: Total 46 (delta 7), reused 43 (delta 4), pack-reused 0

Unpacking objects: 100% (46/46), done.

Checking connectivity... done.

Знакомьтесь, pass

Перевод

Я много лет искал подходящую мне хранилку паролей и недавно наткнулся на Pass на HackerNews. Идея хранить пароли в git-репозитории может выглядеть странно, но в целом это неплохая идея, потому что:

  • Я держу гит-репозиторий локально у себя на компе
  • Все пароли защищены GPG шифрованием, поэтому даже при получении SSH-доступа к моему компьютеру утечка не повлияет на безопасность

Я использую -c чтобы копировать/вставлять пароли. Есть расширение для браузера, но копипейст лично мне удобнее. Проблемы синхронизации с телефоном и всеми linux-дейвайсами тоже не стоит (потому что это всего лишь git).
Делюсь с вами переводом приветственной странички Pass.
Управление паролями должно быть простым и следовать философии Unix. Используя pass, каждый Ваш пароль находится внутри зашифрованного файла gpg, имя которого совпадает с именем ресурса или веб сайта к которому данный пароль привязан. Эти зашифрованные файлы могут быть организованы в удобные иерархии папок, скопированы с носителя на носитель и, в общем, обработаны с помощью любых утилит управления файлами командной строки.
С pass управлять отдельными файлами паролей становится крайне просто. Все пароли хранятся в ~ / .password-store, а pass предоставляет несколько удобных команд для добавления, редактирования, генерации и получения паролей. Это очень короткий и простой Shell скрипт. Он способен временно помещать пароли в буфер обмена и отслеживать изменения паролей с помощью git.

Как пользоваться Git?

Дальше я буду предполагать, что вы выполнили установку и базовую настройку git. Кроме установки, вам нужно указать правильный адрес электронной почты и имя пользователя для доступа к серверу Git, например, на GitHub. Если вы этого еще не сделали смотрите инструкцию установка Git в Ubuntu 16.04.

Обычно, структура проекта в Git будет зависеть от масштаба и сложности вашей программы. Но для начала мы будем использовать проект, состоящий только из одной ветви. Каждый проект содержит одну ветку по умолчанию, она называется master. Наш первый проект будет называться test.

Создание проекта

Когда настройка git завершена перейдем к вашему проекту. В самом начале вам достаточно создать папку для файлов проекта. Если вы собираетесь работать над несколькими проектами, создайте папку git в вашем домашнем каталоге, а уже туда поместите папки ваших проектов:

Эта команда создаст нужную структуру папок и переводит текущий каталог в только что созданный. Теперь создадим первый файл нашего проекта:

Проект готов, но система контроля версий git еще не знает об этом.

Настройка проекта в git

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

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

Если все прошло хорошо, то команда ничего не выведет.

Фиксация изменений

Изменения тоже автоматически не отслеживаются. Фиксация изменений выполняется с помощью команды commit. Вам нужно указать что было изменено с помощью небольшого комментария, буквально в несколько предложений. Хорошая практика выполнять фиксацию перед каждым серьезным изменением.

Таким образом, вы будете хранить все версии проекта, от самой первой и до текущей, а также сможете знать что, когда и где было изменено. Чтобы создать свой первый коммит выполните:

Команде необходимо передать два параметра, первый — это -m, ваш комментарий, второй -a, означает, что нужно применить действие ко всем измененным файлам. Для первого раза используется этот параметр, но обычно вам нужно указать измененные файлы или каталоги. Например, можно делать так:

Отправка изменений

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

Сначала нужно добавить удаленный репозиторий с помощью команды remote. Для этого нужно передать ей URL:

Затем можно посмотреть список удаленных репозиториев:

Вы можете использовать не только github сервера, но и любые другие. Теперь для отправки ваших изменений используйте такую команду:

Команда push указывает, что нужно отправить данные в удаленный репозиторий, origin — наш настроенный репозиторий, а master — ветвь.

Управление ветвями

Для простых проектов достаточно одной ветви. Но если проект большой и он имеет несколько версий, в том числе тестовую, то может понадобиться создать для каждой из них отдельную ветвь. Сначала смотрим доступные ветви:

Опция -a указывает что нужно вывести все ветви, даже не синхронизированные. Звездочка указывает на активную ветвь. Теперь создадим ветвь для разработки с помощью команды checkout:

Переключаться между ветвями можно тоже с помощью той же команды:

Теперь создадим еще один файл:

И добавим его в нашу новую ветвь develop:

Сделаем коммит для внесенных изменений:

Дальше проверим существует ли этот файл в основной ветке master или только в дополнительной. Смотрим текущую ветку:

Затем переключаемся на ветку master и снова смотрим:

Здесь файла нет, так и должно быть. В git есть такая полезная вещь, как слияние. С помощью нее вы можете объединить две ветви. Например, переместить код из рабочей ветки в стабильную. Для этого достаточно выполнить команду merge:

Перед тем как будет выполнено слияние вам нужно ввести комментарий, зачем это нужно. Затем если вы еще раз выполните ls, то увидите, что здесь уже есть нужный файл. Наши примеры git подошли к концу.

Что лучше сделать перед отправкой локальных файлов

Перед отправкой локальных файлов в удаленный репозиторий лучше всего проиндексировать все файлы нашего нового проекта.

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

Чтобы проиндексировать все файлы текущей папки мы вводим команду:

Точка означает текущую папку.

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

Я бы посоветовал делать комментарий не на русском как в примере выше, а на английском. Это будет хорошей привычкой. Т.е. вместо «начало проекта» хорошо бы написать «start project».

Далее командой git status мы проверяем, что всё сделали правильно и видим такой экран:

Перечислю еще несколько полезных команд для работы с Гитом ниже.

Показывает историю коммитов.

Команда выше показывает через хеш коммита какие изменения были произведены.

GitOps: Определение дрейфа вашей инфраструктуры Terraform / Terragrunt

Всем привет.

Допустим Вы работаете с Terraform / Terragrunt (второе здесь непринципиально, но лучше изучайте, если ещё не используете) и автоматизируете инфраструктуру, например, в AWS (но совершенно необязательно AWS). Инфраструктура в коде репозитория, разворачивается из него же, казалось бы вот оно GitOps счастье 🙂

Всё идёт хорошо, пока какой-то пользователь не поменял что-то руками через консоль / UI и конечно забыл об этом кому-либо сказать. А то и сделал что-то нехорошее намеренно. И вот он ваш дрейф: код и инфраструктура больше не совпадают!

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

Создание Git-репозитория

Сначала рассмотрим создание репозитория. Представим, что у вас уже есть папка для хранения файлов, но она еще не находится под контролем Git. 

Откройте «Командную строку‎» (Windows) или Терминал (Linux/macOS) и перейдите по пути данной папки.

В Linux выполните команду: ‎

cd /home/user/directory

В macOS

cd /Users/user/directory

В Windows:

cd C:/Users/user/directory

Остается только ввести нижеуказанную команду, чтобы завершить первый этап.

git init

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

git add

git commit -m 'initial project version'

Теперь у вас есть Git-репозиторий со всеми необходимыми составляющими и отслеживаемыми файлами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector