О ветвлении в двух словах
Почти каждая система контроля версий (СКВ) в какой-то форме поддерживает ветвление. Используя ветвление, Вы отклоняетесь от основной линии разработки и продолжаете работу независимо от неё, не вмешиваясь в основную линию. Во многих СКВ создание веток — это очень затратный процесс, часто требующий создания новой копии каталога с исходным кодом, что может занять много времени для большого проекта.
Некоторые люди, говоря о модели ветвления Git, называют ее «киллер-фича», что выгодно выделяет Git на фоне остальных СКВ. Что в ней такого особенного? Ветвление Git очень легковесно: операция создания ветки выполняется почти мгновенно, переключение между ветками туда-сюда, обычно, также быстро. В отличие от многих других СКВ, Git поощряет процесс работы, при котором ветвление и слияние выполняется часто, даже по несколько раз в день. Понимание и владение этой функциональностью дает вам уникальный и мощный инструмент, который может полностью изменить привычный процесс разработки.
Для точного понимания механизма ветвлений, необходимо вернуться назад и изучить то, как Git хранит данные.
Как вы можете помнить из Что такое Git?, Git не хранит данные в виде последовательности изменений, он использует набор снимков (snapshot).
Когда вы делаете коммит, Git сохраняет его в виде объекта, который содержит указатель на снимок (snapshot) подготовленных данных. Этот объект так же содержит имя автора и email, сообщение и указатель на коммит или коммиты непосредственно предшествующие данному (его родителей): отсутствие родителя для первоначального коммита, один родитель для обычного коммита, и несколько родителей для результатов слияния двух и более веток.
Предположим, у вас есть каталог с тремя файлами и вы добавляете их все в индекс и создаёте коммит.
Во время индексации вычисляется контрольная сумма каждого файла (SHA-1 как мы узнали из Что такое Git?), затем каждый файл сохраняется в репозиторий (Git называет такой файл
$ git add README test. rb LICENSE $ git commit -m 'Initial commit'
Когда вы создаёте коммит командой git commit
, Git вычисляет контрольные суммы каждого подкаталога (в нашем случае, только основной каталог проекта) и сохраняет его в репозитории как объект дерева каталогов.
Затем Git создаёт объект коммита с метаданными и указателем на основное дерево проекта для возможности воссоздать этот снимок в случае необходимости.
Ваш репозиторий Git теперь хранит пять объектов: три блоб объекта (по одному на каждый файл), объект дерева каталогов, содержащий список файлов и соответствующих им блобов, а так же объект коммита, содержащий метаданные и указатель на объект дерева каталогов.
Рисунок 9. Коммит и его дерево
Если вы сделаете изменения и создадите ещё один коммит, то он будет содержать указатель на предыдущий коммит.
Рисунок 10. Коммит и его родители
Ветка в Git — это простой перемещаемый указатель на один из таких коммитов.
По умолчанию, имя основной ветки в Git — master
. Как только вы начнёте создавать коммиты, ветка master
будет всегда указывать на последний коммит.
Каждый раз при создании коммита указатель ветки master
будет передвигаться на следующий коммит автоматически.
Примечание | Ветка «master» в Git — это не какая-то особенная ветка.
Она точно такая же, как и все остальные ветки.
Она существует почти во всех репозиториях только лишь потому, что её создаёт команда |
Рисунок 11. Ветка и история коммитов
Создание новой ветки
Что же на самом деле происходит при создании ветки?
Всего лишь создаётся новый указатель для дальнейшего перемещения.
Допустим вы хотите создать новую ветку с именем testing
.
Вы можете это сделать командой git branch
:
$ git branch testing
В результате создаётся новый указатель на текущий коммит.
Рисунок 12. Две ветки указывают на одну и ту же последовательность коммитов
Как Git определяет, в какой ветке вы находитесь?
Он хранит специальный указатель HEAD
.
Имейте ввиду, что в Git концепция HEAD
значительно отличается от других систем контроля версий, которые вы могли использовать раньше (Subversion или CVS).
В Git — это указатель на текущую локальную ветку.
В нашем случае мы все еще находимся в ветке master
.
Команда git branch
только создаёт новую ветку, но не переключает на неё.
Рисунок 13. HEAD указывает на ветку
Вы можете легко это увидеть при помощи простой команды git log
, которая покажет вам куда указывают указатели веток.
Эта опция называется --decorate
.
$ git log --oneline --decorate f30ab (HEAD -> master, testing) Add feature #32 - ability to add new formats to the central interface 34ac2 Fix bug #1328 - stack overflow under certain conditions 98ca9 Initial commit
Здесь можно увидеть указывающие на коммит f30ab
ветки: master
и testing
.
Переключение веток
Для переключения на существующую ветку выполните команду git checkout
.
Давайте переключимся на ветку testing
:
$ git checkout testing
В результате указатель HEAD
переместится на ветку testing
.
Рисунок 14. HEAD указывает на текущую ветку
Какой в этом смысл? Давайте сделаем ещё один коммит:
$ vim test.rb $ git commit -a -m 'made a change'
Рисунок 15. Указатель на ветку HEAD переместился вперёд после коммита
Интересная ситуация: указатель на ветку testing
переместился вперёд, а master
указывает на тот же коммит, где вы были до переключения веток командой git checkout
.
Давайте переключимся назад на ветку master
:
$ git checkout master
Примечание |
Если выполнить команду Ветка никуда не исчезла; просто Git не знает, что именно она вас интересует, и выводит наиболее полезную по его мнению информацию.
Другими словами, по умолчанию Для просмотра истории коммитов другой ветки необходимо явно указать её имя: |
Рисунок 16. HEAD перемещается когда вы делаете checkout
Эта команда сделала две вещи: переместила указатель HEAD
назад на ветку master
и вернула файлы в рабочем каталоге в то состояние, на снимок которого указывает master
.
Это также означает, что все вносимые с этого момента изменения будут относиться к старой версии проекта.
Другими словами, вы откатили все изменения ветки testing
и можете продолжать в другом направлении.
Примечание | Переключение веток меняет файлы в рабочем каталоге Важно запомнить, что при переключении веток в Git происходит изменение файлов в рабочем каталоге. |
Давайте сделаем еще несколько изменений и создадим очередной коммит:
$ vim test.rb $ git commit -a -m 'made other changes'
Теперь история вашего проекта разошлась (см Разветвлённая история).
Вы создали ветку и переключились на нее, поработали, а затем вернулись в основную ветку и поработали в ней.
Эти изменения изолированы друг от друга: вы можете свободно переключаться туда и обратно, а когда понадобится — объединить их.
И все это делается простыми командами:
, checkout
и commit
.
Рисунок 17. Разветвлённая история
Все описанные действия можно визуализировать с помощью команды git log
.
Для отображения истории коммитов, текущего положения указателей веток и истории ветвления выполните команду git log --oneline --decorate --graph --all
.
$ git log --oneline --decorate --graph --all * c2b9e (HEAD, master) Made other changes | * 87ab2 (testing) Made a change |/ * f30ab Add feature #32 - ability to add new formats to the central interface * 34ac2 Fix bug #1328 - stack overflow under certain conditions * 98ca9 initial commit of my project
Ветка в Git — это простой файл, содержащий 40 символов контрольной суммы SHA-1 коммита, на который она указывает; поэтому операции с ветками являются дешёвыми с точки зрения потребления ресурсов или времени. Создание новой ветки в Git происходит так же быстро и просто как запись 41 байта в файл (40 знаков и перевод строки).
Это принципиально отличает процесс ветвления в Git от более старых систем контроля версий, где все файлы проекта копируются в другой подкаталог. В зависимости от размера проекта, операции ветвления в таких системах могут занимать секунды или даже минуты, когда в Git эти операции мгновенны. Поскольку при коммите мы сохраняем указатель на родительский коммит, то поиск подходящей базы для слияния веток делается автоматически и, в большинстве случаев, очень прост. Эти возможности побуждают разработчиков чаще создавать и использовать ветки.
Давайте посмотрим, почему и вам имеет смысл делать так же.
Примечание | Одновременное создание новой ветки и переключение на неё Как правило, при создании новой ветки вы хотите сразу на неё переключиться — это можно сделать используя команду |
Примечание | Начиная с Git версии 2.23, вы можете использовать
|
prev | next
Что такое Git и GitHub
Git — распределенные системы контроля версий, которые помогают обмениваться кодом и «ковать» проекты в команде — отслеживать и контролировать все изменения в коде. Если вы занимаетесь разработкой приложений, веб-сайтов или игр, то наверняка сталкивались с этим.
Одна из таких систем — GitHub — платформа для хостинга репозиториев. Расскажем о ней подробнее: как зарегистрироваться, создать проект, вносить в него изменения и не столкнуться с конфликтами версий.
Регистрация на GitHub: создание аккаунта
Для работы с платформой нужно создать аккаунт. Для этого переходим по ссылке и тапаем по кнопке Sign up.
На странице регистрации вводим данные:
- Адрес электронной почты. Если на почту уже был зарегистрирован аккаунт, на странице появится сообщение об ошибке: «Email is invalid or already taken».
- Пароль. Система рекомендует использовать для пароля последовательность из 15 символов или 8, но с использованием хотя бы одной цифры и строчной буквы.
- Имя пользователя. «Юзернейм» должен быть уникальным. При этом он не может начинаться или заканчиваться дефисом.
Теперь нужно нажать кнопку Continue, принять или отклонить предложение о подписке на рассылку и пройти экстравагантную валидацию:
Затем подтвердите адрес электронной почты.
Во всплывающих окнах указывайте настройки на свое усмотрение. Для ознакомления и некоммерческого использования достаточно бесплатного тарифа. Регистрация завершена.
Установка Git
Для работы с репозиторием необходимо скачать Git-терминал или GitHub Desktop. Что из этого выбрать — решать вам. Но предпочтительней уметь работать с командной строкой Git. Такое требование часто можно встретить в вакансиях. Вдобавок, знание командной строки позволяет работать с другими платформами, подобными GitHub.
Терминал
Если у вас установлен Linux, смело пропускайте раздел. С Mac и Windows другая история.
Mac OS
Если вы пользовались XCode, вероятно, Git уже установлен. В противном случае зайдите в терминал, выполните команду git и нажмите кнопку Установить.
После установки можно узнать версию Git.
git --version
Windows
На винду Git можно скачать с официального сайта или через пакет Git Chocolatey. Дополнительная информация о Git Windows доступна по ссылке.
GitHub Desktop. Краткий обзор
Непривычна работа в командной строке — установите «десктопную» версию (доступна на всех ОС). Она хорошо подходит для базовых операций.Установщик есть на официальной странице GitHub Desktop. Там же и наиболее подробное описание программы.
При первом запуске пользователя встречает окно с авторизацией.
А после — интерфейс с привычным функционалом: можно создавать и клонировать репозитории.
Важно отметить, что установка GitHub Desktop на Linux может отличаться в зависимости от дистрибутива. Рекомендуем ознакомиться с официальной инструкцией.
Создание первого репозитория
После регистрации и настройки рабочего окружения можно приступить к работе с проектом. Для начала создадим репозиторий на GitHub — облачное пространство, в котором размещаются файлы проекта и его документация. Существует несколько способов.
Первый способ — синхронизация с локальным репозиторием
Допустим, нам нужно выложить в открытый доступ код программы Selectel — определитель динозавров по фотографиям.
Перед его загрузкой в глобальный репозиторий можно создать локальный.
Для этого необходимо зайти в терминал, перейти в директорию проекта и ввести команду:
git init
Загрузка файлов в репозиторий. Создание коммитов
Далее следует добавить все файлы проекта в своеобразный пакет изменений и сделать commit («закоммитить») — загрузить изменения.
git add main.py git add GAN_core.py git add dino_ds_api.py git commit -m “первый коммит”
Последняя команда делает сам «коммит», а флаг -m указывает на сообщение «первый коммит».
В примере были «закоммичены» несколько python-файлов: main, GAN_core и dino_ds_api. Если вам нужно добавить в «коммит» все, что есть в директории, — используйте команду:
git add .
Теперь создадим репозиторий на GitHub. Для этого нужно нажать на кнопку Create repository.
В открывшемся окне обязательно к заполнению только поле с названием проекта. Оно должно быть кратким, но понятным. В нашем примере это gan-dino (gan от generative adversarial networks и dino от dinosaur).
Все остальное опционально:
- Описание. Поле с кратким описанием проекта.
- Режим доступа. Для коммерческих или корпоративных продуктов обычно устанавливается режим private (репозиторий доступен ограниченному кругу лиц). В остальных случаях — public (доступно по ссылке).
- Файл README. Если в репозитории нужно подробное описание проекта — поставьте галочку рядом с Add a README file. Но есть нюанс: для первого способа создания репозитория галочки быть не должно.
- Конфигурация .gitignore. Бывает, что в проекте нужно разместить невидимые для Git файлы. Чтобы как-то их обозначить, придумали конфигурацию . gitignore, в которой их можно перечислить.
- Лицензия. Чтобы никто не использовал ваш код в коммерческих целях без спроса, необходимо добавить файл с лицензией. В нем правообладатели прописывают правила использования своей интеллектуальной собственности.
Создадим public-проект gan-dino, без файла README и конфигурации .gitignore.
Далее GitHub показывает наборы команд, необходимые для загрузки исходного кода в репозиторий. Нас интересует второй блок.
git remote add origin https://github.com/t-rex-general/gan-dino.git git branch -M main git push -u origin main
Первая строка загружает origin — прообраз нашего проекта в глобальном репозитории. Со второй командой мы познакомимся позже. Третья команда загружает (пушит) изменения в GitHub-репозиторий.
После ввода команд система попросит авторизоваться с помощью пароля и названия профиля.
После 13 августа 2021 года вместо пароля нужно вводить токен.
Откройте настройки вашего аккаунта, выберите пункт меню Developer settings, кликните по Personal access tokens и generate new token. А затем повторите попытку.
Получилось! В репозиторий загрузились нужные файлы. Можно смело делиться ссылкой на него.
Второй способ — от глобального к локальному
Бывает другая ситуация, когда кода программы нет и нужно создать пустой репозиторий на GitHub, а после — сделать его локальный дубликат. Данный процесс называется локальным развертыванием.
Повторяем все действия из первого способа (заполняем поля с названием, описанием, присваиваем режим доступа), но ставим галочку напротив README. Тогда непустой новый репозиторий, в который не нужно ничего подгружать из локального проекта.
Чтобы клонировать этот репозиторий себе на компьютер, нужно нажать на зеленую кнопку Code, скопировать HTTPS-адрес, перейти в терминал, в нужную директорию и ввести команду:
git clone https://github.com/t-rex-general/gan-dino2.git
В результате файл README.md появится в выбранной директории — локальном репозитории.
С помощью этой же команды можно клонировать и чужие проекты. Например, чтобы не писать все модули для определителя динозавров самостоятельно, можно клонировать чужой репозиторий себе на компьютер. Или сделать fork («форк»), то есть скопировать чей-то проект в свой GitHub-профиль для его доработки.
Третий способ — внутри GitHub
Если нет возможности использовать Git-терминал или GitHub Desktop, можно работать напрямую с GitHub. Перед этим создаем репозиторий с файлом README.
Внутри GitHub есть онлайн-редактор кода и интерфейс работы с пространством имен (создание файлов, директорий и загрузка других элементов).
Например, для создания нового файла достаточно нажать на кнопку Create new file. Откроется встроенный редактор кода.
Потом необходимо сделать коммит.
Работа с ветками
С точки зрения Git, весь процесс разработки — это история коммитов. Такие истории называются ветками — своеобразными указателями на последний коммит.
Представьте ситуацию:
Два программиста работают над одним контроллером для авторизации. Первому нужно написать шифрование пароля по заданному «юзер-токену», а второму — запрограммировать регистрацию информации в базу данных. Разработчики обнаружили, что у токена не тот тип данных, и решают преобразовать его, используя новую переменную. Они это сделают по-разному. Но ничего страшного: каждый из них работал в своей ветке и заметит конфликт при их слиянии.
Создание веток через Git
Чтобы создать ветку (например, dev) в проекте, нужно ввести команду:
git branch dev
После ветка появится в общем списке.
git branch
Видно, что выбрана ветка main, то есть все коммиты загружаются в нее. Чтобы работать с веткой dev, нужно переключиться.
git checkout dev
Попробуем изменить файл проекта и загрузить коммит.
Добавили в программу конструкцию ifgit add main.py git commit -m “добавили if”
Теперь можно посмотреть логи — историю добавления коммитов.
Действительно, второй коммит «улетел» в ветку dev. Если нас не устроили изменения, можно откатиться до предыдущего (любого) коммита по его номеру.
git checkout 61a8f08226eb8067d4e356387f1dcce5c79812dd
Чтобы запушить ветку в онлайн-репозиторий введем команду:
git push --set-upstream origin dev
Открываем репозиторий в GitHub и видим, что добавилась ветка dev:
Но если мы зайдем в main.py, то никаких изменений там не обнаружим, пока не выберем ветку dev.
Чтобы изменения затронули и main-ветку, нужно сделать merge — слияние веток.
Создание веток через GitHub
Как и в случае создания репозитория, можно быстро создавать новую ветвь в GitHub и переключаться между существующими ветками.
В рамках веток можно также вносить изменения — механизм работы не меняется.
Слияние веток проекта
Мы почти разработали свой проект. Самое время объединить ветки dev и main.
Первым шагом необходимо переместиться в ветку main:
git checkout main
Вторым шагом — сделать merge с веткой dev и запушить изменения:
git merge dev git push
Теперь в GitHub-репозитории отображается актуальная информация.
Работа в команде: конфликты версий и git pull
После релиза нашего приложения прошло немало времени. Пользователи приложения требуют обновлений, а в команду пришли еще два разработчика — Василий и Григорий.
Было принято решение добавить в программу новую функцию — определитесь массы динозавра на изображении.
Однако в команде не была налажена совместная работа, и оба программиста внесли изменения, не посоветовавшись друг с другом. Помимо прочего, у них были равносильные права доступа к репозиторию, из-за чего Вася даже успел запушить обновление на GitHub.
Код различается: в программе слева выводится максимальная масса динозавра, а справа — последовательность из возможных значений.
Гриша пытается сделать коммит и пуш своей программы, но сталкивается с ошибкой — конфликтом версий, когда изменения от разных кодеров накладываются друг на друга.
Отчет об ошибкеПеред тем как пушить файл на сервер, Гриша должен был получить последние изменения:
git pull
Если это сделать, в файле main. py появится структура, в которой будут видны изменения, которые внесли Вася и Гриша.
Теперь, если Василий считает свою версию более важной, он может убрать код Гриши из программы, и сделать пуш:
git add main.py git commit -m “dino_weight” git push
Репозиторий успешно обновлен.
На практике конфликтов гораздо больше и разрешаться они могут по-разному. Важно научиться серфить по руководству git и гуглить. Впрочем, это относится ко всему процессу изучения Git и GitHub.
Fork и Pull Request
Бывает, что ваш репозиторий кто-то форкает и вносит свои коррективы. Вы можете даже не знать, кто инициатор. Если он захочет поделиться корректировками с вами, то создаст запрос слияния (Pull Request).
Зайдем с другого аккаунта, найдем репозиторий gan-dino через поисковую систему в GitHub и сделаем форк.
В нашем списке репозиториев появился новый gan-dino-FORK — это форк-образ gan-dino. Теперь можно внести изменения, например, в main.py, и сделать pull request.
Затем владельцу репозитория нужно подтвердить или отклонить запрос. Чтобы это сделать, нужно перейти во вкладку «Pull requests», выбрать интересующий pull-запрос и нажать одну из предложенных кнопок.
Домашнее задание
Любой конкурентоспособный разработчик должен разбираться в Git. Нелишним будет и знание GitHub, в котором есть много возможностей, значительно упрощающих работу над проектами в команде (project management). Например, дашборды во вкладке Projects, повторяющие функционал Trello и Jira.
GitHub — это целая социальная сеть для разработчиков из разных частей света.
На этом наш краткий обзор GitHub и Git подошел к концу. Мы рассмотрели, как создавать аккаунты GitHub и работать с репозиториями через терминал Git (регистрация и установка, коммиты, пуши и пулы изменений). Это основное. Более подробную информацию можно найти в справочниках Git и GitHub.
Используем GitHub в разработке сервисов
Присоединяйтесь к нашей команде и погрузитесь в наши git-проекты.
Ознакомиться с вакансиями
Если у вас остались вопросы по работе с Git или GitHub, напишите нам.
Рабочий процесс Gitflow Workflow | Atlassian Git Tutorial
Git-flow — это устаревшая версия рабочего процесса Git, в свое время ставшая принципиально новой стратегией управления ветками в Git. Популярность Git-flow стала снижаться под влиянием магистральных рабочих процессов, которые на сегодня считаются предпочтительными для современных схем непрерывной разработки ПО и применения DevOps. Кроме того, Git-flow не слишком удобно применять в процессах CI/CD. В этой публикации приводится описание Git-flow для истории.
Что собой представляет Git-flow?
Git-flow — альтернативная модель ветвления Git, в которой используются функциональные ветки и несколько основных веток. Эта модель была впервые опубликована и популяризована Винсентом Дриссеном на сайте nvie. По сравнению с моделью магистральной разработки, в Git-flow используется больше веток, каждая из которых существует дольше, а коммиты обычно крупнее. В соответствии с этой моделью разработчики создают функциональную ветку и откладывают ее слияние с главной магистральной веткой до завершения работы над функцией. Такие долгосрочные функциональные ветки требуют тесного взаимодействия разработчиков при слиянии и создают повышенный риск отклонения от магистральной ветки. В них также могут присутствовать конфликтующие обновления.
Git-flow можно использовать для проектов, в которых запланирован цикл релизов и реализуется характерная для DevOps методика непрерывной поставки. В этом рабочем процессе используются понятия и команды, которые были предложены в рамках рабочего процесса с функциональными ветками. Однако Git-flow привносит новые специфические роли для разных веток и определяет характер и частоту взаимодействия между ними. Помимо функциональных веток в рамках этого рабочего процесса используются отдельные ветки для подготовки, поддержки и регистрации релизов. При этом вы по-прежнему можете пользоваться преимуществами рабочего процесса с функциональными ветками, такими как запросы pull, изолированные эксперименты и эффективное командное взаимодействие.
Начало работы
Gitflow — это лишь методика работы с Git; в ней определяется, какие виды веток необходимы проекту и как выполнять слияние между ними. Ниже мы познакомимся с назначением веток. Набор инструментов git-flow представляет собой отдельную утилиту командной строки, которая требует установки. Процесс установки прост. Пакеты команд git-flow доступны для многих операционных систем. В системах OS X можно выполнить команду brew install git-flow
. Если вы используете Windows, вам нужно загрузить и установить git-flow. После установки решения git-flow необходимо выполнить команду git flow init
, чтобы использовать его в проекте. Этот набор инструментов играет роль обертки Git. Команда git flow init
является расширением стандартной команды git init
и не вносит изменений в репозиторий помимо создания веток.
Порядок действий
Ветка разработки и главная ветка
В этом рабочем процессе для регистрации истории проекта вместо одной ветки main
используются две ветки. В главной ветке main
хранится официальная история релиза, а ветка разработки develop
предназначена для объединения всех функций. Кроме того, для удобства рекомендуется присваивать всем коммитам в ветке main
номер версии.
Первый шаг рабочего процесса заключается в создании ветки develop
от стандартной ветки main
. Разработчику будет проще создать пустую ветку develop
локально и отправить ее на сервер.
git branch develop
git push -u origin develop
В этой ветке будет храниться полная история проекта, а в ветке main
— сокращенная. Теперь другим разработчикам следует клонировать центральный репозиторий и создать отслеживающую ветку для ветки develop
.
При использовании библиотеки расширений git-flow, для создания ветки develop
можно выполнить команду git flow init
в существующем репозитории:
$ git flow initInitialized empty Git repository in ~/project/. git/
No branches exist yet. Base branches must be created now.
Branch name for production releases: [main]
Branch name for "next release" development: [develop]How to name your supporting branch prefixes?
Feature branches? [feature/]
Release branches? [release/]
Hotfix branches? [hotfix/]
Support branches? [support/]
Version tag prefix? []$ git branch
* develop
main
Функциональные ветки (feature)
Под каждую новую функцию нужно выделить собственную ветку, которую можно отправить в центральный репозиторий для создания резервной копии или совместной работы команды. Ветки feature
создаются не на основе main
, а на основе develop
. Когда работа над функцией завершается, соответствующая ветка сливается с веткой develop. Функции не следует отправлять напрямую в ветку main
.
Обратите внимание, что комбинация веток feature
с веткой develop
фактически представляет собой рабочий процесс с функциональными ветками. Но рабочий процесс Gitflow на этом не заканчивается.
Как правило, ветки feature
создаются на основе последней ветки develop
.
Создание функциональной ветки
Без использования расширений git-flow:
git checkout develop
git checkout -b feature_branch
С использованием расширений git-flow:
git flow feature start feature_branch
Продолжайте работу с Git как обычно.
Окончание работы с функциональной веткой
После завершения работы над функцией следует объединить ветку feature_branch
с develop
.
Без использования расширений git-flow:
git checkout develop
git merge feature_branch
С использованием расширений git-flow:
git flow feature finish feature_branch
Ветки выпуска (release)
Когда в ветке develop
оказывается достаточно функций для выпуска (или приближается назначенная дата релиза), от ветки develop
создается ветка release
. Создание этой ветки запускает следующий цикл релиза, и с этого момента новые функции добавить больше нельзя — допускается лишь исправление багов, создание документации и решение других задач, связанных с релизом. Когда подготовка к поставке завершается, ветка release
сливается с main
и ей присваивается номер версии. Кроме того, нужно выполнить ее слияние с веткой develop
, в которой с момента создания ветки релиза могли возникнуть изменения.
Благодаря тому, что для подготовки выпусков используется специальная ветка, одна команда может дорабатывать текущий выпуск, в то время как другая команда продолжает работу над функциями для следующего. Это также позволяет разграничить этапы разработки (например, можно без труда посвятить неделю подготовке к версии 4.0 и действительно увидеть это в структуре репозитория).
Создание веток release
— это еще одна простая операция ветвления. Как и ветки feature
, ветки release
основаны на ветке develop
. Создать новую ветку release
можно с помощью следующих команд.
Без использования расширений git-flow:
git checkout develop
git checkout -b release/0.1.0
При использовании расширений git-flow:
$ git flow release start 0.1.0
Switched to a new branch 'release/0.1.0'
Когда подготовка к поставке завершается, релиз сливается с ветками main
и develop
, а ветка release
удаляется. Важно слить ее с веткой develop
, поскольку в ветку release
могли добавить критические обновления, которые должны быть доступны для новых функций. Если в вашей организации уделяют повышенное внимание проверке кода, это идеальное место для выполнения запроса pull.
Для завершения работы в ветке release
используйте следующие команды:
Без использования расширений git-flow:
git checkout main
git merge release/0.1.0
Или при использовании расширений git-flow:
git flow release finish '0. 1.0'
Ветки исправления (hotfix)
Ветки сопровождения или исправления (hotfix
) используются для быстрого внесения исправлений в рабочие релизы. Ветки hotfix
очень похожи на ветки release
и feature
. Отличие заключается в том, что они создаются на основе main
, а не develop
. Это единственная ветка, которую нужно обязательно создавать напрямую от main
. Как только исправление завершено, эту ветку следует слить с main
и develop
(или текущей веткой release
), а ветке main
присвоить обновленный номер версии.
Благодаря специальной ветке для исправления ошибок команда может устранять проблемы, не прерывая остальную часть рабочего процесса и не дожидаясь следующего цикла релиза. Ветки сопровождения можно рассматривать как специальные ветки release
, которые работают непосредственно с main
. Ветку hotfix
можно создать с помощью следующих команд.
Без использования расширений git-flow:
git checkout main
git checkout -b hotfix_branch
При использовании расширений git-flow:
$ git flow hotfix start hotfix_branch
По завершении работы с веткой hotfix
ее сливают с main
и develop
(как и в случае с веткой release
).
git checkout main
git merge hotfix_branch
git checkout develop
git merge hotfix_branch
git branch -D hotfix_branch
$ git flow hotfix finish hotfix_branch
Пример
Далее показан полный цикл работы с функциональной веткой (предполагается, что у нас есть репозиторий с веткой main
).
git checkout main
git checkout -b develop
git checkout -b feature_branch
# work happens on feature branch
git checkout develop
git merge feature_branch
git checkout main
git merge develop
git branch -d feature_branch
Помимо работы с ветками feature
и release
, продемонстрируем работу с веткой hotfix
:
git checkout main
git checkout -b hotfix_branch
# work is done commits are added to the hotfix_branch
git checkout develop
git merge hotfix_branch
git checkout main
git merge hotfix_branch
Резюме
В этой статье мы рассмотрели модель работы Gitflow. Gitflow — лишь одна из многих методологий работы с Git, доступных вам и вашей команде.
Ключевые идеи, которые нужно запомнить о Gitflow:
- Данная модель отлично подходит для организации рабочего процесса на основе релизов.
- Работа по модели Gitflow предусматривает создание специальной ветки для исправления ошибок в рабочем релизе.
Последовательность действий при работе по модели Gitflow:
- Из ветки
main
создается веткаdevelop
. - Из ветки
develop
создается веткаrelease
. - Из ветки
develop
создаются веткиfeature
. - Когда работа над веткой
feature
завершается, она сливается в веткуdevelop
. - Когда работа над веткой
release
завершается, она сливается с веткамиdevelop
иmain
. - Если в ветке
main
обнаруживается проблема, изmain
создается веткаhotfix
. - Когда работа над веткой
hotfix
завершается, она сливается с веткамиdevelop
иmain
.
Рекомендуем ознакомиться с моделью рабочего процесса с форками или посетить нашу страницу сравнения рабочих процессов.
Как работать в программе GitHub Desktop — Блог HTML Academy
Самая короткая инструкция о том, как сохранить файлы в GitHub и ничего не сломать. И самое главное — никакой консоли, всё через окошки и с помощью мышки. Для этого используем GitHub Desktop.
Внимание! GitHub Desktop не работает на Windows 7×32, поэтому если у вас эта версия системы, обновитесь до Windows 10 или воспользуйтесь программой GitKraken на свой страх и риск.
В этой статье идёт рассказ о системах контроля версий. Если вы совсем ничего о них не знаете, прочитайте статьи «Словарь терминов для Git и GitHub» и «Введение в системы контроля версий», чтобы понять терминологию и разобраться, зачем мы вообще это делаем.
Регистрация и вход
Если у вас ещё нет аккаунта на GitHub, то о его создании есть отдельная статья в блоге Академии.
После первого входа в GitHub Desktop вас попросят ввести ваши логин и пароль от GitHub. com. После этого у вас появится доступ ко всем репозиториям, сохранённым в профиле.
Создание репозитория
Если вы никогда не пользовались гитхабом, нужно будет создать репозиторий для работы над проектом.
На главном экране GitHub Desktop выбираем пункт «Create a New Repository on your hard drive».
Нужно будет ввести название репозитория, его описание и выбрать папку на компьютере, куда будут сохраняться файлы.
После этого нажимаем на Create repository, ждём несколько секунд и готово — на компьютере появилась папка, которой можно пользоваться для разработки вашего проекта.
Клонирование репозитория
Если у вас уже какой-нибудь репозиторий на Гитхабе, его можно клонировать. Клонировать — это скачать все файлы к себе на компьютер, чтобы можно было их изменять и потом загружать обратно.
Выбираем Add -> Clone Repository…
В открывшемся окне выбираем один из имеющихся репозиториев. В данном случае он называется zaverstai, но у вас может быть любой другой.
После этого файлы репозитория начнут скачиваться — если их много, то это займет некоторое время.
Работа с репозиторием. Меняем файлы и сохраняем обратно
Вне зависимости от того, создали вы репозиторий или клонировали его, так выглядит GitHub Desktop с открытым репозиторием, в котором мы пока ничего не меняли.
Слева — поле для измененных файлов, справа — служебная информация. Слева снизу — поле для коммитов.
Если не усложнять, то склонированный репозиторий это просто каталог на компьютере. Можно нажать «Show in Finder» на Mac или «Show in Explorer» в Windows и откроется папка, где лежат все файлы, которые есть в репозитории.
Давайте добавим какой-нибудь файл. Например, я добавил в локальный репозиторий (скопировал в папку) файл index. html, который взял отсюда. Вы можете загрузить файл с кодом вашего проекта или изменить уже существующий.
Сразу после добавления или изменения файла в окне GitHub Desktop будет видно, что изменилось — если мы добавили целый новый файл, то все строчки будут с плюсиками и зелёные. Это значит, что они были добавлены в файл и GitHub Desktop раньше их никогда не видел.
Загружаем новый репозиторий на GitHub
Если вы не создавали новый репозиторий, а склонировали старый, то можете пропустить этот пункт.
После того, как мы добавили какой-то код в свежесозданный репозиторий, нужно сделать коммит, то есть зафиксировать все сохранённые изменения и дать им название. Текст должен быть лаконичным и в то же время сообщать о том, что делает коммит. Например, «добавляет имя наставника в Readme», «вводит функцию сортировки изображений», «правит ошибку в поиске городов на карте». Вводим имя жмём большую синюю кнопку «Commit to main»
Изменения, которые мы внесли и сохранили, пока локальны. Их нужно послать на GitHub. Чтобы опубликовать свежесозданный репозиторий на GitHub, нажмите Publish repository.
Появится подтверждение о публикации репозитория — проверяем название и описание, если нужно, ставим галочку о том, что код приватный, и публикуем.
Готово — после этого репозиторий появится в вашем профиле на GitHub. com.
Добавляем код и коммитим изменения
Репозиторий создан и загружен на GitHub, теперь нужно добавить немного кода.
Когда вы допишете код в файлы, которые находятся в репозитории, вы сможете просмотреть все их изменения в окне GitHub Desktop. Вот здесь, например, мы изменили «второй» на «третий» в тексте страницы — и изменения сразу видны, можно проверить, что всё исправленное будет загружено.
Дальше действуем по проверенной схеме — коммитим изменения.
В центре главного экрана появится предложение запушить коммит в удалённый репозиторий. Соглашаемся и жмём Push origin.
Готово! Теперь, если зайти на GitHub. com, в наш репозиторий, увидим уже изменённый файл, который мы только что отправили.
Всё получилось — теперь вы можете создать или склонировать репозиторий, добавить туда файлы, опубликовать всё это на GitHub. com, не прикасаясь к консоли. Это ли не чудо!
В этой статье была показана работа только с основной веткой репозитория. Если вы хотите разобраться, как создавать новые ветки (и зачем это нужно) и добавлять их в основную ветку, прочитайте статью «Работа с git через консоль». Это более сложная статья, поэтому можете сделать небольшой перерыв и вернуться к ней позже.
Без Git веб-разработчику никуда
Но без кода Git не пригодится. Поэтому прокачайте навыки в JavaScript на курсе «Архитектура клиентских приложений».
Хочу
Ссылка на оригинал Время создания: 07.06.2012 23:37 Раздел: Компьютер — Программирование — Системы контроля версий (VCS) — Git Запись: xintrea/mytetra_syncro/master/base/1339097829h0xmeapk1u/text.html на raw.github.com | |||||
Работа с Git репозиториями Почему Git Краткий ответ: потому что не появляются задержки от работы с системой контроля версий. Git хранит всё локально, включая историю, ветки, коммиты и позволяет переключаться между всем добром без обращения к сети. Авторизация в GIT производится по персональному ключу а не паролю, который кешируется на некоторое время на стороне клиента, а не запоминается навсегда в настройках клиента. GIT позволяет легко работать с ветками, без видоизменений раскладки репозитория, и древесный просмотр изменений позволяет видеть что из какой ветки пришло. Более подробно можно прочитать http://habrahabr.ru/blogs/Git/104198/ Общие сведения о Git Подробно о работе с Git, что это такое можно прочитать в Git Book по адресу http://book.git-scm.com/ В классических VCS (Version Control System) (CVS, SVN), в рабочей копии хранится текущее состояние репозитория, и базовая копия текущей ревизии. На сервере хранятся все ревизии в виде изменений от предыдущей, либо в виде полных копий каждой ревизии с вычислением разницы по запросу. Все ревизии нумеруются по порядку начиная от первой. Git относится к классу DVCS (Distributed Version Control System). При этом рабочая копия содержит все коммиты, историю, ветки, всё необходимое для ведения разработки без обращения к какому-либо серверу. Для синхронизации изменений между разными копиями репозитория, в нужный момент делается pull чтобы скопировать изменения удалённого репозитория к себе, либо push чтобы скопировать локальные изменения в удалённый репозиторий. В случае с Git, каждый коммит имеет уникальный ID в виде хеша, содержащий в себе все файлы, относящиеся к нему. Каждый коммит имеет один коммит-родитель, и, возможно, коммит-источник слияния. Таким образом, коммиты представляют собой дерево наборов файлов. «Веткой» является указатель на какой-либо коммит. Таким образом, чтобы создать ветку, нужно просто дать имя какому-либо коммиту. Чтобы слить две ветки, одна из которых начинается с конца другой, можно просто передвинуть указатель второй ветки на новый коммит (это называется Fast-Forward). Чтобы поддерживать «плоскую» основную ветку (master), используется техника ребейза веток перед слиянием, и слияение без fast-forward’а. Rebase означает смену родителя ветки на новый коммит. При ребейзе все изменения, внесенные в данной ветке, откатываются назад и сохраняются в виде изменений, внесенных каждым коммитом; после чего указатель ветки переносится на новое начало, и на него последовательно начинают применяться изменения. Если конфликтов нет, то изменения накладываются автоматически, после чего ветка представляет собой набор изменений относительно нового начала. Если теперь сделать слияние этой ветки с исходной, указатель головы исходной ветки будет просто передвинут на новое место, и мы потеряем информацию о том, что вообще существовала новая ветка. Именно поэтому используется слияние без fast-forward’а. При этом, даже если новая ветка начинается с конца предыдущей, создаётся специальный merge-commit, содержащий информацию о том, что в этом месте сливается текущая ветка с дополнительной. Подробнее о том, что такое rebase в картиках тут: http://book.git-scm.com/4_rebasing.html Алгоритм работы над задачей Стандартный алгоритм работы над какой-либо задачей выглядит так:
Правила ведения чистых коммитов Все коммиты, которые попадают в центральную ветку, должны следовать следующим правилам:
Работа под Windows Для работы с Git под Windows самое удобное – использовать TortoiseGit. Однако следует знать, что на 2017 год есть более удобный инструмент — SmartGit. Подготовка к работе
Получение репозитория В папке, где будут размещаться все рабочие проекты, жмём Основные используемые функции При работе используются либо консольные утилиты, аналогично linux, либо графический интерфейс.
Стандартные процедуры работы
Работа под Linux Подготовка к работе
Получение репозитория Переходим в директорию для работы, и запускаем git clone ssh://git@СЕРВЕР:ПОРТ/РЕПОЗИТОРИЙ.git Основные используемые функции
Стандартные процедуры работы
| |||||
Так же в этом разделе:
| |||||
|
Основные сведения о Git и GitHub для создания документации — Contributor Guide
- Статья
- Чтение занимает 4 мин
Обзор
Как участник проекта по созданию документации вы будете использовать ряд инструментов и процессов. Вы будете работать параллельно с другими участниками над одним и тем же проектом, иногда над тем же содержимым и в то же время. Все это возможно благодаря программному обеспечению Git и GitHub.
Git — это система управления версиями с открытым исходным кодом. Она упрощает совместную работу над проектами такого типа с помощью распределенной системы управления версиями файлов, которые хранятся в репозиториях. По сути, Git позволяет интегрировать в определенный репозиторий потоки работы, выполненные несколькими участниками в течение определенного времени.
GitHub — это служба размещения репозиториев Git в Интернете, которые используются для хранения содержимого Документации Майкрософт. В GitHub размещается основной репозиторий всех проектов. Из этого репозитория участники копируют свою работу.
Git
Если вы знакомы с централизованными системами управления версиями (например, Team Foundation Server, SharePoint или Visual SourceSafe), вы заметите, что Git использует уникальный рабочий процесс и специальную терминологию для поддержки распределенной модели. Например, в Git не блокируются файлы, как это обычно бывает, когда файл берут на редактирование или возвращают после редактирования. На самом деле Git учитывает изменения на более тонком уровне, сравнивая файлы байт за байтом.
Git также использует многоуровневую структуру для хранения содержимого проекта и управления им.
- Репозиторий — это единица хранения самого высокого уровня. Репозиторий содержит одну или несколько ветвей.
- Ветвь — это единица хранения с текущими файлами и папками, которые формируют содержимое проекта. Ветви используются для разделения потоков работы (обычно они называются версиями). Участники всегда вносят изменения в содержимое в определенной ветви, и эти изменения привязаны к соответствующей ветви. Все репозитории содержат ветвь по умолчанию (обычно она называется главной, «main») и одну или несколько ветвей, предназначенных для объединения с ветвью по умолчанию. Ветвь по умолчанию является текущей версией и «единственным истинно верным источником» для определенного проекта. Из этой родительской ветви создаются все остальные ветви в репозитории.
Участники взаимодействуют с Git, чтобы обновлять репозитории и управлять ими локально и на уровне GitHub.
- Для локального взаимодействия участники используют такие инструменты, как консоль Git Bash, которая поддерживает команды Git для управления локальными репозиториями и обмена данными с репозиториями GitHub.
- Кроме того, участники используют сайт www.github.com с интегрированной системой Git для управления согласованием изменений, возвращаемых обратно в основной репозиторий.
GitHub
Примечание
Хотя управление проекта Docs основано на использовании GitHub, некоторые команды используют Visual Studio Team Services для размещения репозиториев Git. Клиент Visual Studio Team Explorer — это графический интерфейс для взаимодействия с репозиториями Team Services. Этот интерфейс является альтернативой использованию команд Git в командной строке. Кроме того, многие приведенные ниже руководства разработаны в качестве рекомендаций, которые появились в результате многолетнего размещения содержимого служб Azure в GitHub. Они могут понадобиться для работы с некоторыми репозиториями Docs.
Все рабочие процессы начинаются и заканчиваются на уровне GitHub, где хранится основной репозиторий любого проекта Docs. Копии, создаваемые участниками для собственного использования, распространяются на нескольких компьютерах. В итоге они согласовываются в основном репозитории GitHub проекта.
Организация каталогов
Как упоминалось ранее, ветвь по умолчанию выступает в качестве текущей версии содержимого проекта. Содержимое ветви по умолчанию (и ветвей, созданных из нее) примерно соответствует структуре статей на соответствующих страницах документации. Подкаталоги используются для разделения содержимого (например, служб), мультимедийного содержимого (например, файлов изображений) и файлов include, которые позволяют повторно использовать содержимое.
Основной каталог articles
обычно находится в корне репозитория. Этот каталог статей содержит набор подкаталогов. Статьи в подкаталогах форматируются в виде файлов Markdown, использующих расширение MD. Некоторые репозитории, которые поддерживают несколько служб, например репозиторий Azure-Docs, используют универсальный подкаталог /articles
. Другие репозитории, например IntuneDocs, используют подкаталог, который называется как служба: /IntuneDocs
.
В корне этого каталога находятся общие статьи, которые описывают службу или продукт в целом. Как правило, каталог содержит еще одну серию подкаталогов, которые соответствуют функциям и службам или распространенным сценариям. Например, статьи, которые описывают службу виртуальных машин Azure, находятся в подкаталоге /virtual-machines
, статьи «Изучение вопроса» службы Intune размещены в подкаталоге /understand-explore
.
Подкаталог Media
В каждом каталоге находится подкаталог /media
для соответствующих файлов мультимедиа. Файлы мультимедиа содержат изображения, используемые в статьях со ссылками на изображения.
Подкаталог includes
Содержимое для многократного использования, которое является общим для двух или нескольких статей, помещается в подкаталог /includes
основного каталога articles
. В файле Markdown, где используется включаемый файл, соответствующее расширение Markdown include помещается в расположение, на которое должна указывать ссылка на включаемый файл.
Дополнительные рекомендации см. в разделе Справочник по разметке Markdown — Включаемые файлы.
Шаблон файла Markdown
Для удобства в корневом каталоге каждого репозитория обычно находится файл шаблона Markdown с именем template.md
. Его можно использовать как начальный файл для создания статьи с последующей отправкой в репозиторий. Файл содержит следующие компоненты.
- Заголовок метаданных в верхней части файла, разделенный двумя строками с тремя дефисами. Он содержит различные теги, используемые для отслеживания информации, относящейся к статье. Метаданные статьи обеспечивают дополнительные возможности. Например, можно указать ссылки на автора и участника, настроить строку навигации, добавить описание статьи. Они также включают оптимизацию для поисковых систем и процессы создания отчетов, которые корпорация Майкрософт использует для оценки производительности содержимого. Как видите, метаданные имеют большое значение.
- Раздел метаданных с описанием различных тегов и значений метаданных. Если вы не знаете, какие значения нужно использовать для раздела метаданных, их можно оставить пустыми или закомментировать с помощью начального хэштега (#). Так рецензент запроса на вытягивание в репозитории сможет проверить или выполнить их.
- Различные примеры использования разметки Markdown для форматирования элементов статьи.
- Общие инструкции по использованию расширений разметки Markdown, которые можно применить для различных типов оповещений.
- Примеры встраивания видео с помощью iframe.
- Общие инструкции по использованию расширений технической документации Майкрософт, которые можно применять для специальных элементов управления, таких как кнопки и селекторы.
Запросы на вытягивание
Запрос на вытягивание — используя этот удобный способ, участник предлагает набор изменений для внесения в стандартную ветвь. Изменения (они также называются фиксациями) хранятся в ветви участника. GitHub использует их для моделирования результатов их объединения со стандартной ветвью. Запрос на вытягивание также служит механизмом для предоставления участнику отзыва рецензента запроса. Рецензент отправляет участнику отзыв после процесса сборки и проверки, чтобы решить потенциальные проблемы или вопросы до того, как изменения будут объединены в стандартной ветви.
Существует два способа работы с запросом на вытягивание в зависимости от размера изменений, которые вы хотите предложить. Дополнительные сведения см. в статье Рабочий процесс для участников GitHub: незначительные или эпизодические изменения.
Debian — Руководства пользователя Debian
- FAQ по Debian GNU/Linux
- Руководство по установке Debian
- Примечания к выпуску Debian
- Справочная карта Debian
- Руководство администратора Debian
- Справочник по Debian
- Руководство по обеспечению безопасности Debian
- руководство пользователя aptitude
- Руководство пользователя АСТ
- Использование APT в автономном режиме
- Часто задаваемые вопросы о Debian Java
- Руководство сопровождающего Debian Hamradio
Часто задаваемые вопросы по Debian GNU/Linux
Часто задаваемые вопросы пользователей.
Авторы: | Сьюзен Г. Клейнманн, Свен Рудольф, Сантьяго Вила, Хосип Роден, Хавьер Фернандес-Сангино Пенья |
Специалист по обслуживанию: | Хавьер Фернандес-Сангино Пенья |
Статус: | готовы |
Наличие: | Пакет Debian debian-faq Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Руководство по установке Debian
Инструкции по установке дистрибутива Debian GNU/Linux.
В руководстве описан процесс установки с помощью установщика Debian,
система установки Debian, которая впервые была выпущена с
Сардж (Debian GNU/Linux 3.1).
Дополнительную информацию по установке можно найти в
Часто задаваемые вопросы об установщике Debian
и
Вики-страницы установщика Debian.
Авторы: | Команда установщика Debian |
Специалист по обслуживанию: | Команда установщика Debian |
Статус: | Инструкция еще не идеальна. В настоящее время ведется активная работа. и будущие выпуски Debian. Помощь приветствуется, особенно с не-x86 монтаж и переводы. Контакт [email protected] Чтобы получить больше информации. |
Наличие: | Пакет Debian руководство по установке Опубликованная версия
для стабильной версии Готовится версия для следующей стабильной (в тестировании) Версия для разработчиков Последний исходный код XML доступен в репозитории Git.
|
Версии руководства по установке для предыдущих выпусков (и, возможно, следующий выпуск) Debian связаны с выпуском страница для этих выпусков.
Примечания к выпуску Debian
Этот документ содержит информацию о том, что нового в текущей версии Debian. Распространение GNU/Linux и полная информация по обновлению для пользователей старые выпуски Debian.
Авторы: | Адам Ди Карло, Боб Хиллиард, Иосип Роден, Энн Беземер, Роб Брэдфорд, Франс Поп, Андреас Барт, Хавьер Фернандес-Сангино Пенья, Стив Лангасек |
Статус: | Активно работал над выпусками Debian. Контакт [email protected] Чтобы получить больше информации. О проблемах и исправлениях следует сообщать как ошибки против псевдопакет примечаний к выпуску. |
Доступность: | Выпущенная версия Доступен на официальных полных CD и DVD. в каталоге /doc/release-notes/. Последний исходный код XML доступен в репозитории Git.
|
Справочная карта Debian
Эта карта предоставляет новым пользователям Debian GNU/Linux самые важные команды на одной странице для использования в качестве справочника при работе с системами Debian GNU/Linux. Базовый (или лучше) знание компьютеров, файлов, каталогов и командной строки требуется.
Авторы: | В. Мартин Боргерт |
Специалист по обслуживанию: | В. Мартин Боргерт |
Статус: | опубликовано; в активном развитии |
Наличие: | Пакет Debian дебиан-refcard Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Руководство администратора Debian
Справочник администратора Debian учит основы для всех, кто хочет стать эффективным и независимым Debian Администратор GNU/Linux.
Авторы: | Рафаэль Герцог, Роланд Мас |
Статус: | Опубликовано; в активном развитии |
Наличие: | Пакет Debian debian-справочник Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Справочник Debian
Этот справочник по Debian GNU/Linux охватывает многие аспекты системного администрирование через примеры команд оболочки. Основные руководства, советы и другая информация предоставляется по темам, включая установку системы, Управление пакетами Debian, ядро Linux под Debian, настройка системы, создание шлюза, текстовые редакторы, VCS, программирование и GnuPG.
Ранее известный как «Краткий справочник».
Авторы: | Осаму Аоки (青木 修) |
Специалист по обслуживанию: | Осаму Аоки (青木 修) |
Статус: | Опубликовано; в активном развитии |
Наличие: | Пакет Debian ссылка на дебиан Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Руководство по обеспечению безопасности Debian
В этом руководстве описывается безопасность Debian GNU/Linux. операционной системы и в рамках проекта Debian. Это начинается с процессом защиты и укрепления Debian GNU/Linux по умолчанию установка (как вручную, так и автоматически) охватывает некоторые общие задачи, связанные с настройкой безопасной пользовательской и сетевой среды, дает информацию о доступных инструментах безопасности, шагах, которые необходимо предпринять до и после компрометации, а также описывает, как обеспечивается безопасность. применяется в Debian командой безопасности. Документ включает пошаговое руководство по закалке и в приложении есть подробная информация о том, как настроить обнаружение вторжений систему и брандмауэр-мост с Debian GNU/Linux.
Авторы: | Александр Рилсен, Хавьер Фернандес-Сангино Пенья |
Специалист по обслуживанию: | Хавьер Фернандес-Сангино Пенья |
Статус: | Опубликовано; в разработке с небольшими изменениями. Некоторый его контент может быть не полностью обновлен. |
Наличие: | Пакет Debian жесткий документ Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Руководство пользователя aptitude
Вводное руководство по диспетчеру пакетов aptitude с полный справочник команд.
Авторы: | Дэниел Берроуз |
Статус: | Опубликовано; в активном развитии |
Наличие: | Пакет Debian aptitude-doc Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Руководство пользователя APT
В этом документе представлен обзор того, как использовать диспетчер пакетов APT.
Авторы: | Джейсон Ганторп |
Статус: | Опубликовано; несколько несвежий |
Наличие: | Пакет Debian ап-док Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Использование APT в автономном режиме
В этом документе описывается, как использовать APT в несетевом окружении, в частности, подход «sneaker-net» для выполнения обновлений.
Авторы: | Джейсон Ганторп |
Статус: | Опубликовано; несколько несвежий |
Наличие: | Пакет Debian ап-док Последняя версия:
Последний исходный код XML доступен в репозитории Git.
|
Часто задаваемые вопросы по Debian Java
Цель этого FAQ — быть местом для поиска всех видов вопросы, которые могут возникнуть у разработчика или пользователя относительно Java и Debian касается, это включает в себя проблемы с лицензией, доступные пакеты разработки, и программы, связанные с созданием среды свободного программного обеспечения Java.
Авторы: | Хавьер Фернандес-Сангино Пенья, Торстен Вернер, Нильс Тикьер, Сильвестр Ледрю |
Статус: | Опубликовано; в активной разработке, хотя некоторая часть его содержимого может быть устаревшей. |
Наличие: | Пакет Debian Java-общий Последняя версия:
Последняя версия исходного кода доступна через SGML Git-репозиторий.
|
Руководство сопровождающего Debian Hamradio
Руководство для сопровождающих Debian Hamradio — это документ, в котором описывается командная политика и лучшие текущая практика для команды упаковки Deian Hamradio Maintenanceers.
Авторы: | Иэн Р. Лермонт |
Статус: | Опубликовано; в активном развитии. |
Наличие: | Пакет Debian hamradio-mainguide Последняя версия:
Последний исходный код restructuredText доступен в репозитории Git.
|
| |
|
Приложение A. Получение FreeBSD | Портал документации FreeBSD
Содержание
А.1. Зеркала
Официальные зеркала проекта FreeBSD состоят из множества машин, управляемых администраторами кластера проекта и за GeoDNS, чтобы направлять пользователей к ближайшему доступному зеркалу. Текущие местоположения: Австралия, Бразилия, Япония (два объекта), Малайзия, Нидерланды, Южная Африка, Тайвань, Великобритания, Соединенные Штаты Америки (Калифорния, Нью-Джерси и Вашингтон).
Официальный сервис зеркал:
Название сервиса | Протоколы | Дополнительная информация |
---|---|---|
; Рекомендуется загрузить | ||
git.FreeBSD.org | git через | 9
|
PKG.FreeBSD.ORG | PKG (8) более | 88. |
vuxml.FreeBSD.org / www.VuXML.org | https | веб-страница VMLBS Free.
Все официальные зеркала поддерживают IPv4 и IPv6.
Веб-сайт FreeBSD (https://www. FreeBSD.org и https://docs.FreeBSD.org) не размещен в инфраструктуре GeoDNS; ведутся исследования его реализации.
http://ftp-archive.FreeBSD.org не входит в инфраструктуру GeoDNS, размещен только в одном месте (США).
Проект ищет новые локации; те, кто хочет спонсировать, пожалуйста, свяжитесь с командой администраторов кластера для получения дополнительной информации.
Mirror list maintained by the community and other companies:
Country | Hostname | Protocols | |||||
---|---|---|---|---|---|---|---|
Australia | ftp.au.FreeBSD.org | http http_v6 rsync rsync_v6 | |||||
ftp3.au.FreeBSD.org | http ftp rsync | ||||||
ftp.at.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | ||||||
Brazil | ftp2. br.FreeBSD.org | http rsync rsync_v6 | |||||
FTP3.BR.FREEBSD.ORG | http ftp rsync | ||||||
|
|
| . .900.900.900.900.900.900.900.900.900.900.900.900.900.900.900.900.918 | .0028 ftp ftp_v6 rsync rsync_v6 | |||
Czech Republic | ftp.cz.FreeBSD.org | http http_v6 rsync rsync_v6 | |||||
Denmark | ftp.dk.FreeBSD .org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
Finland | FTP.FI.FLEAR.0039 | ||||||
France | ftp.fr. FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp3.fr.FreeBSD.org | ftp | ||||||
ftp6.fr.FreeBSD.org | http ftp rsync | ||||||
Germany | ftp.de.FreeBSD.org | ftp ftp_v6 rsync rsync_v6 | |||||
ftp1.de.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | ||||||
ftp2.de.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | ||||||
ftp5.de.FreeBSD.org | ftp ftp_v6 | ||||||
ftp7.de.FreeBSD.org | http http_v6 ftp ftp_v6 | ||||||
Greece | ftp.gr.FreeBSD.org | http http_v6 ftp ftp_v6 | |||||
ftp2. gr.FreeBSD.org | http http_v6 ftp ftp_v6 rsync | ||||||
Japan | ftp.jp.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp2.jp.FreeBSD.org | ftp rsync rsync_v6 | ||||||
ftp3.jp.FreeBSD.org | http rsync | ||||||
ftp4.jp.FreeBSD.org | ftp | ||||||
ftp6.jp.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | ||||||
Korea | ftp.kr.FreeBSD.org | http https ftp rsync | |||||
ftp2.kr.FreeBSD.org | rsync | ||||||
Latvia | ftp. lv.FreeBSD.org | http ftp | |||||
Netherlands | ftp.nl.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp2.nl.FreeBSD.org | http ftp rsync | ||||||
New Zealand | ftp.nz.FreeBSD.org | http ftp | |||||
Norway | ftp.no.FreeBSD .org | FTP FTP_V6 RSYNC RSYNC_V6 | |||||
Польша | FTP.PL.PREEBSD.ORG | .0031 | |||||
Russia | ftp.ru.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp2.ru.FreeBSD.org | https ftp rsync | ||||||
Slovenia | ftp. si.FreeBSD.org | http http_v6 ftp ftp_v6 | |||||
South Africa | ftp.za.FreeBSD.org | https https_v6 rsync rsync_v6 | |||||
ftp2.za.FreeBSD.org | http http_v6 ftp_v6 | ||||||
ftp4.za. Freebsd.org | HTTP FTP RSYNC | ||||||
Sweden | FTP.SE.FreeBSD.ORG | FTP.SE.FreeBSD.ORG | FTP.0042 | ||||
Taiwan | ftp4.tw.FreeBSD.org | https ftp rsync | |||||
ftp5.tw.FreeBSD.org | http ftp | ||||||
Ukraine | ftp.ua.FreeBSD.org | http ftp ftp_v6 rsync rsync_v6 | |||||
United Kingdom | ftp. uk.FreeBSD.org | http http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp2.uk.FreeBSD.org | http http_v6 https https_v6 ftp ftp_v6 | ||||||
United States of America | ftp11 .FreeBSD.org | http_v6 ftp ftp_v6 rsync rsync_v6 | |||||
ftp14.FreeBSD.org | |||||||
FTP5.FreeBSD.ORG | HTTP HTTP_V6 FTP FTP_V6 |
. .
А.2. Использование Git
A.2.1. Введение
По состоянию на декабрь 2020 г. FreeBSD использует git в качестве основной системы управления версиями для хранения всего базового исходного кода и документации FreeBSD. По состоянию на апрель 2021 года FreeBSD использует git как единственную систему контроля версий для хранения всей коллекции портов FreeBSD.
Git обычно является инструментом разработчика. Пользователи могут предпочесть использовать |
В этом разделе показано, как установить Git в системе FreeBSD и использовать его для создания локальной копии репозитория исходного кода FreeBSD.
А.2.2. Установка
Git можно установить из коллекции портов или в виде пакета:
# pkg install git
A.2.3. Запуск Git
Чтобы получить чистую копию исходников в локальный каталог, используйте git clone
.
Этот каталог файлов называется рабочим деревом .
Git использует URL-адреса для обозначения репозитория.
Существует три разных репозитория: src
для исходного кода системы FreeBSD, doc
для документации и портов 9.1046 для коллекции портов FreeBSD. Все три доступны по двум разным протоколам: HTTPS и SSH.
Например, URL-адрес
https://git.FreeBSD.org/src.git
указывает основную ветвь репозитория src
, используя протокол https
.
Предмет | GIT URL |
---|---|
.0028 | |
Репозиторий src только для чтения через anon-ssh | |
Read-only doc repo via HTTPS | |
Read-only doc repo via anon-ssh | |
Read-only ports repo via HTTPS | |
Read-only ports repo via anon-ssh | |
Также доступны внешние зеркала, поддерживаемые участниками проекта; см. раздел «Внешние зеркала».
Чтобы клонировать копию репозитория исходного кода системы FreeBSD:
# git clone -o freebsd https://git.FreeBSD.org/src.git /usr/src
Параметр -o freebsd
указывает источник; по соглашению в документации FreeBSD источником считается freebsd
.
Поскольку первоначальная проверка должна загрузить полную ветку удаленного репозитория, это может занять некоторое время.
Пожалуйста, будьте терпеливы.
Изначально рабочее дерево содержит исходный код основной ветки
, которая соответствует ТЕКУЩЕЙ.
Чтобы вместо этого переключиться на 13-STABLE:
# компакт-диск /usr/src # git checkout stable/13
Рабочее дерево можно обновить с помощью git pull
. Чтобы обновить /usr/src, созданный в приведенном выше примере, используйте:
# cd /usr/src # git pull --rebase
Обновление выполняется намного быстрее, чем проверка, переносятся только измененные файлы.
А.2.4. Веб-браузер репозитория
Проект FreeBSD использует cgit в качестве веб-браузера репозитория: https://cgit.FreeBSD.org/.
А.2.5. Для разработчиков
Для получения информации о доступе для записи в репозитории см. Руководство Committer.
А.2.6. Внешние зеркала
Эти зеркала не размещены на FreeBSD.org, но по-прежнему поддерживаются участниками проекта.
Пользователи и разработчики могут извлекать или просматривать репозитории на этих зеркалах.
Запросы на вытягивание репозитория doc
GitHub принимаются; в противном случае рабочий процесс проекта с этими зеркалами все еще обсуждается.
- Кодеберг
документ: https://codeberg.org/FreeBSD/freebsd-doc
порты: https://codeberg. org/FreeBSD/freebsd-ports
источник: https://codeberg. org/FreeBSD/freebsd-src
- GitHub
документ: https://github.com/freebsd/freebsd-doc
бесплатные порты: https://github/dfreebsd.com -ports
источник: https://github.com/freebsd/freebsd-src
- GitLab
документ: https://gitlab.com/FreeBSD/freebsd-doc
порты: https://gitlab.com/FreeBSD/freebsd-ports
4://gitlab.com/FreeBSD/freebsd-src
А.2.7. Списки рассылки
Основной список рассылки для общего использования и ответов на вопросы о git в проекте FreeBSD — freebsd-git. Для получения более подробной информации, включая списки сообщений фиксации, см. главу «Списки рассылки».
А.2.8. SSH host keys
gitrepo.FreeBSD.org host key fingerprints:
ECDSA key fingerprint is
SHA256:seWO5D27ySURcx4bknTNKlC1mgai0whP443PAKEvvZA
ED25519 key fingerprint is
SHA256:lNR6i4BEOaaUhmDHBA1WJsO7h4KtvjE2r5q4sOxtIWo
RSA key fingerprint is
SHA256:f453CUEFXEJAXlKeEHV+ajJfeEfx9MdKQUD7lIscnQI
Отпечатки ключей хоста git. FreeBSD.org:
ECDSA key fingerprint is
SHA256:/UlirUAsGiitupxmtsn7f9b7zCWd0vCs4Yo/tpVWP9w
ED25519 key fingerprint is
SHA256:y1ljKrKMD3lDObRUG3xJ9gXwEIuqnh406tSyFd1tuZE
RSA key fingerprint is
SHA256:jBe6FQGoh5HjvrIVM23dcnLZk9kmpdezR/CvQzm7rJM
Они также публикуются как записи SSHFP в DNS.
А.3. Использование Subversion
A.3.1. Введение
По состоянию на декабрь 2020 года FreeBSD использует git в качестве основной системы управления версиями для хранения всего исходного кода и документации FreeBSD.
Изменения из репозитория git в ветках stable/11
, stable/12
и соответствующих releng экспортируются в репозиторий subversion.
Этот экспорт будет продолжаться на протяжении всей жизни этих отраслей.
С июля 2012 года по март 2021 года FreeBSD использовала Subversion как единственную систему контроля версий для хранения всей коллекции портов FreeBSD. По состоянию на апрель 2021 года FreeBSD использует git как единственную систему контроля версий для хранения всей коллекции портов FreeBSD.
Subversion обычно является инструментом разработчика.
Пользователи могут предпочесть использовать |
В этом разделе показано, как установить Subversion в системе FreeBSD и использовать ее для создания локальной копии репозитория FreeBSD. Включена дополнительная информация об использовании Subversion.
А.3.2. Svnlite
Облегченная версия Subversion уже установлена на FreeBSD как svnlite
. Портированная или пакетная версия Subversion нужна только в том случае, если требуется Python или Perl API, или если требуется более поздняя версия Subversion.
Единственное отличие от обычного использования Subversion состоит в том, что имя команды svnlite
.
А.3.3. Установка
Если svnlite
недоступен или требуется полная версия Subversion, ее необходимо установить.
Subversion можно установить из коллекции портов:
# cd /usr/ports/devel/subversion # make install clean
Subversion также можно установить в виде пакета:
# pkg install subversion
A.3.4. Запуск Subversion
Чтобы получить чистую копию исходников в локальный каталог, используйте svn
.
Файлы в этом каталоге называются локальной рабочей копией .
Переместите или удалите существующий каталог назначения перед использованием |
Subversion использует URL-адреса для обозначения репозитория в форме протокол://имя хоста/путь .
Первым компонентом пути является репозиторий FreeBSD для доступа.
Существует три разных репозитория: base
для исходного кода базовой системы FreeBSD, портов
для коллекции портов и doc
для документации.
Например, URL-адрес https://svn.FreeBSD.org/base/head/
указывает основную ветвь репозитория src, используя протокол https
.
Извлечение из данного репозитория выполняется с помощью следующей команды:
# svn checkout https://svn.FreeBSD.org/repository/branch lwcdir
где:
репозиторий является одним из Репозитории проекта:
base
,порты
илиdoc
.ветка зависит от используемого репозитория.
порты
иdoc
в основном обновляются в веткеhead
, в то время какbase
поддерживает последнюю версию -CURRENT подhead
и соответствующие последние версии -STABLE веток подstable/11
(11 , x ) истабильных/12
(12, x ).lwcdir — целевой каталог, в который следует поместить содержимое указанной ветки. Обычно это /usr/ports для
портов
, /usr/src дляbase
и /usr/doc дляdoc
.
В этом примере исходное дерево извлекается из репозитория FreeBSD с использованием протокола HTTPS, при этом локальная рабочая копия помещается в /usr/src.
Если /usr/src уже существует, но не был создан svn
, не забудьте переименовать или удалить его перед оформлением заказа.
# svn checkout https://svn. FreeBSD.org/base/head /usr/src
Поскольку первоначальная проверка должна загрузить полную ветку удаленного репозитория, это может занять некоторое время. Пожалуйста, будьте терпеливы.
После начальной проверки локальную рабочую копию можно обновить, выполнив:
# svn update lwcdir
Чтобы обновить /usr/src, созданный в приведенном выше примере, используйте:
# svn update /usr/src
Обновление выполняется намного быстрее, чем проверка, переносятся только измененные файлы.
Альтернативный способ обновления локальной рабочей копии после извлечения предоставляется Makefile в каталогах /usr/ports, /usr/src и /usr/doc.
Установите SVN_UPDATE
и используйте цель обновления
.
Например, чтобы обновить /usr/src:
# cd /usr/src # сделать обновление SVN_UPDATE=yes
A.3.5. Зеркальные сайты Subversion
Репозиторий FreeBSD Subversion:
svn. FreeBSD.org
Это общедоступная зеркальная сеть, которая использует GeoDNS для выбора подходящего внутреннего сервера. Для просмотра репозиториев FreeBSD Subversion через браузер используйте https://svnweb.FreeBSD.org/.
Предпочтительным протоколом является HTTPS, но для автоматической проверки сертификатов необходимо установить пакет security/ca_root_nss.
А.3.6. Для получения дополнительной информации
Дополнительную информацию об использовании Subversion см. в «Книге по Subversion» под названием «Управление версиями с помощью Subversion» или в документации по Subversion.
А.4. Наборы компакт-дисков и DVD
Наборы компакт-дисков и DVD FreeBSD можно приобрести в нескольких интернет-магазинах:
FreeBSD Mall, Inc.
1164 Claremont Dr
Brentwood, CA
94513
США
Телефон: +1 925 240-6652
Факс: +1 925 674-0821
Электронная почта: [email protected]
WWW https/ /www.freebsdmall.comGetlinux
WWW: https://www. getlinux.fr/Dr. Hinner EDV
Schäftlarnstr. 10 // 4. Stock
D-81371 München
Germany
Телефон: +49 171 417 544 6
Электронная почта: [email protected]
WWW: http://www.hinner.de/linux/freebsd.html
Last modified on : September 7, 2022 by Danilo G. Baio
Table of Contents
Resources
- Single HTML
- Download PDF
- Edit this page
Переход на Rocky Linux — документация
Предпосылки и предположения
- CentOS Stream, CentOS, Alma Linux, RHEL или Oracle Linux хорошо работают на аппаратном сервере или VPS. Текущая поддерживаемая версия для каждого из них — 8.5.
- Знание командной строки.
- Практические знания SSH для удаленных компьютеров.
- Слегка рискованное отношение.
- Все команды должны выполняться от имени пользователя root. Либо войдите в систему как root, либо приготовьтесь много печатать «sudo».
Введение
В этом руководстве вы узнаете, как преобразовать все перечисленные выше операционные системы в полнофункциональные установки Rocky Linux. Это, вероятно, один из самых окольных способов установки Rocky Linux, но он пригодится людям в самых разных ситуациях.
Например, некоторые поставщики серверов некоторое время не будут поддерживать Rocky Linux по умолчанию. Или у вас может быть рабочий сервер, который вы хотите преобразовать в Rocky Linux без переустановки всего.
Что ж, у нас есть для вас инструмент: migrate2rocky.
Это скрипт, который при выполнении изменит все ваши репозитории на репозитории Rocky Linux. Пакеты будут установлены и обновлены/понижены по мере необходимости, и вся торговая марка вашей ОС также изменится.
Не волнуйтесь, если вы новичок в системном администрировании, я постараюсь сделать это максимально удобным для пользователя. Ну, насколько удобна для пользователя командная строка.
Предостережения и предупреждения
- Обязательно загляните на страницу README на сайте migrate2rocky (ссылка выше), потому что существует известное несоответствие между сценарием и репозиториями Katello. Вполне вероятно, что со временем мы обнаружим (и, в конечном итоге, исправим) больше коллизий и несовместимостей, так что вам будет интересно узнать о них, особенно для производственных серверов.
- Этот сценарий, скорее всего, будет работать без происшествий на полностью новых установках. Если вы хотите преобразовать рабочий сервер, ради всего святого и хорошего, сделайте резервную копию данных и снимок системы или сначала сделайте это в промежуточной среде.
Хорошо? Мы готовы? Давай сделаем это.
Подготовьте сервер
Вам необходимо получить файл сценария из репозитория. Это можно сделать несколькими способами.
Ручной способ
Загрузите сжатые файлы с GitHub и извлеките тот, который вам нужен (это будет migrate2rocky. sh ). Вы можете найти zip-файлы для любого репозитория GitHub в правой части главной страницы репозитория:
.Затем загрузите исполняемый файл на свой сервер с помощью ssh, выполнив эту команду на своем локальном компьютере:
scp ПУТЬ/К/ФАЙЛУ/migrate2rocky.sh [email protected]:/home/
Просто, знаете ли, настройте все пути к файлам и домены серверов или IP-адреса по мере необходимости.
Путь мерзавца
Установите git на свой сервер с помощью:
днф установить гит
Затем клонируйте репозиторий rocky-tools с помощью:
клонgit https://github.com/rocky-linux/rocky-tools.git
Примечание: этот метод загрузит все скрипты и файлы из репозитория rocky-tools.
Простой, но менее безопасный способ
Ладно, с точки зрения безопасности это не лучший вариант. Но это самый простой способ получить сценарий.
Запустите эту команду, чтобы загрузить сценарий в любой каталог, который вы используете:
curl https://raw. githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh -o migrate2rocky.sh
Эта команда загрузит файл прямо на ваш сервер, и только файл, который вы хотите. Но опять же, есть проблемы с безопасностью, которые предполагают, что это не обязательно лучшая практика, так что имейте это в виду.
Сценарии выполнения и установка
Используйте команду cd
, чтобы переключиться в каталог, в котором находится скрипт, убедитесь, что файл является исполняемым, и предоставьте владельцу файла скрипта разрешения x.
chmod u+x migrate2rocky.sh
И теперь, наконец, запустите скрипт:
./migrate2rocky.sh -r
Эта опция "-r" говорит сценарию, что нужно просто установить все.
Если вы все сделали правильно, окно терминала должно выглядеть примерно так:
Теперь сценарию потребуется некоторое время, чтобы преобразовать все, в зависимости от фактической машины/сервера и подключения к более широкому Интернету.
Если вы видите Complete! сообщение в конце, значит все нормально и можно перезапустить сервер.
Дайте ему немного времени, снова войдите в систему, и у вас должен быть шикарный новый сервер Rocky Linux, с которым можно играть... Я имею в виду очень серьезную работу. Запустите команду hostnamectl
, чтобы убедиться, что ваша ОС была правильно перенесена, и все готово.
Последнее обновление: 12 февраля 2022 г.
Автор: Эсекьель Бруни
Авторы: Тианчи Ли, Стивен Спенсер
GitHub приостанавливает действие российских учетных записей, удаляет историю проекта и запросы на вытягивание · Джесси Сквайрс
Согласно различным сообщениям ([1], [2], [3], [4]), GitHub приостанавливает действие учетных записей российских разработчиков и организаций, связанных с или связаны с организациями, находящимися под санкциями правительства США в связи с вторжением России в Украину. Но похоже, что GitHub не продумал это до конца, потому что эти приостановки аккаунтов портят мои проекты.
* * *
Во-первых, краткий контекст и предыстория.
Недавно я стал ведущим специалистом по сопровождению двух популярных проектов в сообществе разработчиков Apple, Quick и Nimble. Я только что выпустил версии 5.0 Quick несколько дней назад. В течение недели, предшествовавшей релизу, я просматривал и объединял множество пулл-реквестов. Но когда пришло время писать примечания к выпуску, я заметил очень странное поведение. Таинственным образом некоторые запросы на включение были удалены . Пуф. Прошло. Затем я понял, что присутствие всех участников исчезло — все их комментарии к проблемам исчезли, все проблемы, которые они открыли, исчезли, все запросы на включение, которые они открыли, исчезли. Все действия, связанные с пользователем, исчезли. Какого хрена?!
В качестве примера вы можете увидеть эту строку из автоматически сгенерированных примечаний к выпуску GitHub:
@BobCatC сделали свой первый вклад в #1129
И учетная запись пользователя, и запрос на извлечение приводят к ошибке 404. Но здесь вы можете найти фиксацию слияния, и это все, что осталось с точки зрения исторического учета этого изменения. Это особенно примечательно для этого проекта, потому что PR # 1129 был критическим исправлением ошибки.
Сегодня сопровождающая Рэйчел Бриндл открыла запрос на вытягивание с другим важным исправлением ошибки, но посетовала на тот факт, что первоначальный запрос на вытягивание , вызвавший ошибку, с тех пор был удален:
Первоначальный PR, который представил его, с тех пор был удален, поэтому я точно не уверен в намерении этого вклада.
Итак, последние несколько дней я сижу и думаю, что, черт возьми, происходит. Почему нескольких пользователей и пулл-реквесты исчезают из нашего проекта? Я благодарен Томашу Сапете за то, что он помог нам понять, что все эти загадочные исчезновения происходят из-за того, что GitHub легкомысленно приостанавливает действие учетных записей российских разработчиков, не обращая внимания на разрушительные побочные эффекты.
Есть несколько участников Quick, чьи учетные записи были заблокированы, что означает, что мы потеряли все, что они внесли, за исключением необработанной истории коммитов.
* * *
Мне неясно, каков был предполагаемый результат GitHub с этими приостановками учетной записи, но это кажется невероятно разрушительным для любого проекта с открытым исходным кодом, который взаимодействовал с приостановленной учетной записью. В таком сервисе, как Twitter, вы можете посетить профиль-заполнитель приостановленной учетной записи и увидеть сообщение о том, что учетная запись приостановлена, а @упоминания учетной записи других пользователей по-прежнему связаны с профилем приостановленной учетной записи. На GitHub это работает совсем не так.
Судя по всему, «приостановка действия учетной записи» на GitHub на самом деле означает удаление всей активности для пользователя , что приводит к (1) удалению всех запросов на вытягивание из приостановленной учетной записи , (2) каждой проблеме, открытой приостановленной учетной записью удалено , (3) каждый комментарий или обсуждение из приостановленной учетной записи удалено . По сути, вся активность и история пользователя испаряются. Все эти ценные данные потеряны. Единственное, что осталось нетронутым, — это необработанная история коммитов Git. Как будто пользователя никогда не существовало.
Опять же, в настоящее время мне не ясно, была ли потеря данных целью GitHub или это была ошибка. В любом случае, это массовая проблема. Удаление этих данных без предварительного уведомления является злоупотреблением доверием. Должны ли мы продолжать доверять GitHub важные данные?
* * *
Это было абсолютно озадачивающим, потому что GitHub не получил уведомления или сообщения об этом, кроме их общего заявления, в котором они утверждали, что «мы продолжаем обеспечивать бесплатные услуги с открытым исходным кодом, доступные для всех, включая разработчиков в России». Вот и все. Я работал всего неделю или около того над проектом, который достался мне по наследству, стараясь старательно отслеживать изменения, как хороший сопровождающий, а потом началось всякое странное и неожиданное странное дерьмо. Без моего ведома GitHub незаметно присоединился к остальному западному миру в его крестовом походе по наказанию невинных российских гражданских лиц, чье единственное преступление заключалось в том, что они родились в неположенном месте и, возможно, ранее были связаны с банком, который теперь находится под санкциями. К черту Путина, но я не вижу, как удаление учетных записей GitHub и создание нехватки еды для мирных жителей является «выигрышным» для кого-либо. Насколько я мог судить, ныне отсутствующие участники были обычными разработчиками iOS и macOS, заинтересованными в участии в проекте сообщества с открытым исходным кодом.
Эти действия GitHub вредны и наносят ущерб проектам с открытым исходным кодом и сообществу открытого исходного кода. Внезапно я увидел, что запросы на вытягивание, проблемы и комментарии исчезли у пользователей, которые активно участвовали в проекте. Мы потеряли ценный вклад, информацию, контекст и историю обсуждений по проблемам и запросам на вытягивание. Мы даже потеряли пул-реквесты, которые были открыты и активно проверялись. Сейчас эта работа полностью утеряна. Ушел навсегда. Для запросов на вытягивание, которые сделал слияние , у нас есть необработанная история коммитов, но это не заменяет полного обзора кода и обсуждения.
* * *
Достаточно сложно поддерживать проекты с открытым исходным кодом. Еще сложнее унаследовать старый, несколько запущенный проект и попытаться вернуть его в нужное русло. В этом сценарии каждый отдельный запрос на включение, проблема и комментарий важны для долгосрочного обслуживания и успеха проекта. Комментарии, обсуждения и обзоры кода предоставляют ценный контекст, который не всегда фиксируется в истории коммитов, особенно для проектов с открытым исходным кодом, которые на протяжении многих лет циклически менялись несколькими сопровождающими. Я думаю, что правильным решением от GitHub было бы оставить все вклады нетронутыми, заморозить подозрительные учетные записи, чтобы предотвратить будущую активность, и четко пометить страницы профиля учетной записи как приостановленные. А затем, когда это возможно, переключите переключатель, чтобы снова включить учетные записи. Но, видимо, GitHub решил, что лучше всего удалить все это.
Итак, спасибо GitHub за то, что вы все испортили.
Обновить
21 апреля 2022 г.Хорошие новости! Мартин Вудворд, старший директор по связям с разработчиками в GitHub, сообщил мне, что GitHub восстановил отсутствующие запросы на вытягивание, проблемы, комментарии и т. д. от российских разработчиков, чьи учетные записи были заблокированы. Профили пользователей также восстанавливаются, хотя в них конкретно не упоминается, что аккаунты заблокированы.
По его словам, единственный механизм, который GitHub ранее должен был приостанавливать учетные записи, был создан для борьбы со спамерами и другими злоумышленниками — сценарии, в которых, как правило, лучше всего сделать так, чтобы учетные записи и вся активность полностью исчезли. Понятно, что в данном случае это было неуместно. Я очень ценю, что Мартин связался со мной и помог найти лучшее решение этой проблемы внутри GitHub.
Я по-прежнему не согласен с наказанием простых людей за зверства, совершенные российским государством (и всеми государствами, если на то пошло), но я полагаю, что у большинства американских корпораций нет другого выбора, кроме как уступить давлению правительства. Это тема для другого поста.
Одно приложение, которое заменит их всех
Создано для всех
Визуализируйте и планируйте
Управляйте любым проектом от начала до заканчивайте с широкими возможностями настройки представлений, которые упрощают планирование проекта.
Совместная работа
Работайте с вашей командой в режиме реального времени с Общайтесь, добавляйте комментарии к действиям и всегда получайте уведомления, которые приносят все в одном месте.
Отслеживание прогресса
Добавить визуальные виджеты для членов команды, задачи, спринты, отслеживание времени, статусы, документы, встраивания и многое другое.
Начать
Разрабатывайте лучшие продукты быстрее.
От невыполненной работы до выпуска, расставляйте приоритеты и планируйте свои инициативы, эпики, задачи и документы — все на общей платформе с вашими ключевыми заинтересованными сторонами.
Наглядность — без рутинной работы
Инструментальные панели Agile обеспечивают лучшее понимание, автоматическое отслеживание прогресса и обновления, а также сокращение избыточных совещаний.
Полная интеграция DevOps
Объедините существующие рабочие процессы разработки с нативными интеграциями для GitHub, GitLab Bitbucket, Sentry, Slack, Figma и других.
Начать
Автоматизируйте процессы продаж
Обеспечьте продвижение сделок через ваш конвейер с автоматизацией, которая назначает потенциальных клиентов, отслеживает последующие действия и инициирует обновление статуса потенциальных клиентов для твоя команда.
Управление учетными записями
Отслеживание потенциальных клиентов, клиентов и сделок в виде списка, доски или таблицы, которые упрощают визуализацию ваших учетных записей с первого взгляда.
Отчетность в режиме реального времени
Посмотрите, как сделки отслеживаются с течением времени, кто закрытие и общую эффективность вашей команды с помощью настраиваемых информационных панелей.
Начать
Управление кампанией
Планируйте свои маркетинговые кампании на гибкая временная шкала, позволяющая легко отслеживать акции, рекламные кампании, события и многое другое.
Совместная работа над маркетинговыми активами
Составление и редактирование документов с вашим команду, комментируйте файлы дизайна и управляйте всеми своими маркетинговыми активами в одном месте.
Календари контента
Визуализируйте расписание контента на календарь с датами, исполнителями и пользовательскими статусами, которые позволяют легко понять, где ваши содержание стоит с первого взгляда.
Начать
Расставьте приоритеты, спланируйте и выполните
Объедините все отзывы, идеи, эпики и спринты в единую дорожную карту продукта, предоставляя заинтересованным сторонам полный контекст и представление о том, что будет дальше.
Настройте свои рабочие процессы
Создавайте настраиваемые гибкие рабочие процессы, адаптированные для управления продуктами, и автоматизируйте передачу функций для проектирования и разработки.
Платформа «все в одном»
Подключайте обзоры продуктов, доски, документы и многое другое непосредственно к своим эпопеям и историям для большей наглядности — без рутинной работы.
Начать
Управление творческими рабочими процессами
Реализуйте все свои дизайнерские проекты в одном месте с помощью настраиваемых представлений ClickUp — см. сведения о проекте в списке, рабочие процессы в Доска или сроки выполнения в календаре.
Совместная работа над дизайном
Дизайн с помощью популярных инструментов, таких как Figma и Invision непосредственно в ClickUp с нашей встроенной интеграцией — отметьте свою команду для получения обновлений и хранить все свои активы в одном месте.
Ускоренная обратная связь и утверждение
Проверка и аннотирование файлов проекта с свою команду, приглашайте гостей и оставляйте комментарии для быстрой обратной связи и одобрения.
Начать
Управление бюджетами
Управление бюджетами и счетами с молниеносные электронные таблицы, которые можно организовать в наглядную базу данных.
Создавайте отчеты и делитесь ими
Создавайте наглядные информационные панели, которые собрать всю отчетность в одном месте; добавить настраиваемые виджеты для счетов, оплаты напоминания, специальные запросы и многое другое.
Автоматизация рутинных задач и напоминаний
Автоматическое создание задач отчетности, назначать работу, уведомлять свою команду, когда необходимо отправить уведомления о сборах, и многое другое.
Начать
Адаптация сотрудников
Создание масштабируемой программы адаптации с индивидуальными задачами и требованиями к сотрудникам, чтобы с первого дня ввести всех в курс дела.
Документооборот
Управление персоналом и сотрудничество с ним документы с вашей командой в одном месте, а затем легко делиться ими с сотрудниками.
Отслеживание производительности и целей
Отслеживание эффективности сотрудников с помощью отчеты в режиме реального времени, которые позволяют визуализировать выполненные задачи, прогресс в достижении целей, загруженность и многое другое.