Содержание

О ветвлении в двух словах

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

Некоторые люди, говоря о модели ветвления 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 — это не какая-то особенная ветка. Она точно такая же, как и все остальные ветки. Она существует почти во всех репозиториях только лишь потому, что её создаёт команда

git init, а большинство людей не меняют её название.

Рисунок 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 log не показывает все ветки по умолчанию

Если выполнить команду git log прямо сейчас, то в её выводе только что созданная ветка «testing» фигурировать не будет.

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

Для просмотра истории коммитов другой ветки необходимо явно указать её имя: git log testing Чтобы посмотреть историю по всем веткам — выполните команду с дополнительным флагом: git log --all

.

Рисунок 16. HEAD перемещается когда вы делаете checkout

Эта команда сделала две вещи: переместила указатель HEAD назад на ветку master и вернула файлы в рабочем каталоге в то состояние, на снимок которого указывает master. Это также означает, что все вносимые с этого момента изменения будут относиться к старой версии проекта. Другими словами, вы откатили все изменения ветки testing и можете продолжать в другом направлении.

Примечание

Переключение веток меняет файлы в рабочем каталоге

Важно запомнить, что при переключении веток в Git происходит изменение файлов в рабочем каталоге.

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

Давайте сделаем еще несколько изменений и создадим очередной коммит:

$ vim test.rb
$ git commit -a -m 'made other changes'

Теперь история вашего проекта разошлась (см Разветвлённая история). Вы создали ветку и переключились на нее, поработали, а затем вернулись в основную ветку и поработали в ней. Эти изменения изолированы друг от друга: вы можете свободно переключаться туда и обратно, а когда понадобится — объединить их. И все это делается простыми командами:

branch, 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 checkout -b <newbranchname>.

Примечание

Начиная с Git версии 2.23, вы можете использовать git switch вместо git checkout, чтобы:

  • Переключиться на существующую ветку: git switch testing-branch.

  • Создать новую ветку и переключиться на нее: git switch -c new-branch. Флаг -c означает создание, но также можно использовать полный формат:` —create`.

  • Вернуться к предыдущей извлечённой ветке: git switch -.

prev | next

Что такое Git и GitHub

Git — распределенные системы контроля версий, которые помогают обмениваться кодом и «ковать» проекты в команде — отслеживать и контролировать все изменения в коде. Если вы занимаетесь разработкой приложений, веб-сайтов или игр, то наверняка сталкивались с этим.

Одна из таких систем — GitHub — платформа для хостинга репозиториев. Расскажем о ней подробнее: как зарегистрироваться, создать проект, вносить в него изменения и не столкнуться с конфликтами версий. 

Регистрация на GitHub: создание аккаунта

Для работы с платформой нужно создать аккаунт. Для этого переходим по ссылке и тапаем по кнопке Sign up.

На странице регистрации вводим данные:

  1. Адрес электронной почты. Если на почту уже был зарегистрирован аккаунт, на странице появится сообщение об ошибке: «Email is invalid or already taken».
  1. Пароль. Система рекомендует использовать для пароля последовательность из 15 символов или 8, но с использованием хотя бы одной цифры и строчной буквы.
  1. Имя пользователя. «Юзернейм» должен быть уникальным. При этом он не может начинаться или заканчиваться дефисом.  

Теперь нужно нажать кнопку 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

Попробуем изменить файл проекта и загрузить коммит.

Добавили в программу конструкцию if
git 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 init

Initialized 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:

  1. Из ветки main создается ветка develop.
  2. Из ветки develop создается ветка release.
  3. Из ветки develop создаются ветки feature.
  4. Когда работа над веткой feature завершается, она сливается в ветку develop.
  5. Когда работа над веткой release завершается, она сливается с ветками develop и main.
  6. Если в ветке main обнаруживается проблема, из main создается ветка hotfix.
  7. Когда работа над веткой 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 на курсе «Архитектура клиентских приложений».

Хочу

GIT: Инструкция-шпаргалка для начинающих

GIT: Инструкция-шпаргалка для начинающих

Ссылка на оригинал

Время создания: 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), в рабочей копии хранится текущее состояние репозитория, и базовая копия текущей ревизии. На сервере хранятся все ревизии в виде изменений от предыдущей, либо в виде полных копий каждой ревизии с вычислением разницы по запросу. Все ревизии нумеруются по порядку начиная от первой.
В случае CVS хранятся изменения и нумерая по каждому файлу независимо, в случае SVN, нумеруются изменения репозитория.
Так как SVN хранит только изменения всего репозитория, «ветки» в нем реализуются через специальную организацию файлов в хранилище. Классически, это /trunk/ для последнего кода, /branch/somename/ для веток. Для создания ветки, делается копия /trunk/ в /branch/somename/, над которым уже работает разработчик.
При этом, при каждом коммите, идёт обращение к центральному репозиторию, для сохранения изменения, отрабатывают скрипты на сервере, идет непрерывная нумерация изменений, запрос истории так же требует обращения на сервер и т.д.

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

Алгоритм работы над задачей

Стандартный алгоритм работы над какой-либо задачей выглядит так:

  1. Создаётся ветка, основывающаяся на последней копии master ветки. Название новой ветки содержит класс задачи, краткое описание, номер задачи в БТ. Например feature/sessions_add_datetime_filter.5503
  2. Все изменения производятся внутри этой ветки. При каждом атомарном логическом изменении (например, добавили плагин – закоммитили добавление; поправили API одной функции во всех местах – закоммитили и тп) создаётся свой коммит. Это позволяет разделять какие были изменения, упрощается чтение и проверка на ошибки процесса разработки.
  3. После того как код в ветке сделан и отлажен, все изменения закоммичены, данная ветка ребейзится относительно последнего мастера, и пушится в центральный репозиторий.
  4. Второй человек, работающий над тем же проектом, делает к себе pull центрального репозитория. Если он уже смотрел – то удаляет свою локальную копию ветки, после чего переключается на указанную ветку. Прочитывает код, проверяет его работоспособность, после чего либо отдаёт на доработку, если там обнаружены проблемы, либо делает еще раз rebase поверх мастера, и слияние ветки с мастером.
  5. После слияния с мастером, ревьюер пушит новый мастер в центральный репозиторий, удаляет у себя локальную ветку задачи, пушит в мастер удаление ветки задачи.
  6. Разработчик удаляет локальную ветку задачи после того как задача была закрыта и изменения попали в master.

Правила ведения чистых коммитов

Все коммиты, которые попадают в центральную ветку, должны следовать следующим правилам:

  1. Автором должен быть прописан разработчик – Имя, Фамилия, рабочий e-mail.
  2. Текст комментария должен содержать краткое описание изменения. Для зарубежных проектов описание обязано быть на английском языке, для проектов российского бранча приемлемо комментировать на русском.
  3. Коммит не должен содержать в себе файлы, не относящиеся к изменениям. Если ваша IDE, OS, какой-то плагин какому-либо софту использующемуся при разработке создают технические файлы, либо добавьте их в .gitignore, либо не добавляйте к коммиту, либо удаляйте перед коммитом.
  4. Коммит не должен добавлять/убирать пустые строки, менять пробелы на табы и наоборот, менять число пробелов и т. п. нигде, кроме случаев, относящихся к сути коммита. То есть при рефакторинге это нормально, но если ваш редактор поменял во всем файлые пробелы на табы или наоборот – меняйте настройки редактора или перед коммитом приводите всё к виду «как было».
  5. Стиль исходного кода и отступов должен совпадать с текстом вокруг. То есть, если всюду в файле используются табы для отступа, не следует вставлять еще один case выровненный пробелами.
  6. Минимизация конфликтов. При добавлении кода следует стараться форматировать код так, чтобы модификация его приводила к минимуму конфликтов при слиянии.

Работа под Windows

Для работы с Git под Windows самое удобное – использовать TortoiseGit. Однако следует знать, что на 2017 год есть более удобный инструмент — SmartGit.

Подготовка к работе

  1. Устанавливается putty со страницы http://www.chiark.greenend.org.uk/~sgtatham/putty/
    Лучше всего ставить полный пакет, со всеми программами. По надобятся как минимум plink, puttygen.
  2. Устанавливается msysGit из проекта http://code.google.com/p/msysgit/
    Выбрать опции при установке «Add “Git Bash here”», «Run Git from the Windows Command Prompt», «Use Windows style line endings», когда спросит – дать путь до plink.exe
  3. Устанавливается TortoiseGit из проекта http://code.google.com/p/tortoisegit/
    После установки зайти в TortoiseGit → Settings → Git → Config, убедиться что путь до msysgit задан, и что опции AutoCRLF и SafeCRLF установлены, настроены имя, фамилия, email разработчика.
  4. С помощью puttygen создаётся пара приватный+публичный ключ.
    Публичный ключ высылается админам для добавления в доступы репозиториев и серверов.
    Приватный ключ добавляется в pagent через клик правой кнопкой → add key.

Получение репозитория

В папке, где будут размещаться все рабочие проекты, жмём
Правой кнопкой→TortoiseGit→Clone, вводим адрес центрального репозитория
ssh://git@СЕРВЕР:ПОРТ/РЕПОЗИТОРИЙ.git
В поле «Load Putty Key» выбираем путь до приватного ключа.

Основные используемые функции

При работе используются либо консольные утилиты, аналогично linux, либо графический интерфейс.

  1. Обновление текущей ветки из центрального репозитория:
    В контекстном меню папки с исходниками TortoiseGit->Pull

  2. Отправка текущей ветки в центральный репозиторий:
    В контекстном меню TortoiseGit→Push
    Выбираем в Local сперва master, потом нашу текущую ветку.
    Remote заполняется при этом автоматически.
    Название remote ветки должно быть идентично local
  3. Переключение на некоторую ветку:
    В контекстном меню TortoiseGit→Switch/Checkout
    В меню Branch выбрать remotes/origin/<нужная ветка>
    [v] «Create new branch», название <нужная ветка>, [v] «Track»

  4. Создание новой ветки
    Контекстное меню→TortoiseGit→Create Branch
    В Name в Branch вводим нужное название ветки
    Чтобы ветка базировалась от текущей, в Base On выбираем HEAD
    Чтобы ветка базировалась от мастера, выбираем Branch, в списке master.
    Ставим [v] Switch to new branch чтобы сразу переключиться на ветку.

  5. Удаление веток
    Открываем меню зажав кнопку Shift → TortoiseGit → Browse Reference
    в разделе heads лежат локальные ветки, в разделе remotes\origin удалённые.
    Выбираем нужную ветку, жмём правой кнопкой → Delete Remote Branch
    Для локальной ветки, соответственно, Delete Branch.
  6. Слияние ветки с текущей
    Контекстное меню → TortoiseGit → Merge
    выбираем Branch который нужно слить с текущей веткой
    ставим обязательно галочку «No fast forward», Merge message не трогаем.
  7. Просмотр и сохранение изменений
    Файлы с изменениями помечены красными восклицательными знаками.
    Чтобы посмотреть общую картину изменений,
    Меню→Git Commit -> “ветка”
    Внизу список изменений в репозитории, обязательно нажимать галочку «View patch» и проверять изменения на предмет соответствия Правилам ведения чистых коммитов.

Стандартные процедуры работы

  1. «Начало работы над задачей»
    Выполняется перед началом работы над задачей. Дерево должно быть без изменений.
    Меню → TortoiseGit → Switch/Checkout,
    Branch: master
    Меню → TortoiseGit → Pull
    Меню → TortoiseGit → Create Branch
    Name Branch: название новой ветки
    Base On: HEAD (master)
    [x] Switch to new branch
  2. «Коммит очередного кусочка работы»
    Выполняется после выполнения некого изменения, суть которого целостная.
    Меню → Git commit -> “имя ветки”
    Отметить файлы, только нужные для данного конкретного коммита
    Обязательно щелкнуть на «View Patch», и убедиться
    в соответствии правилам ведения чистых коммита
    В message ввести описание изменения, соответствующее правилам
  3. «Отправка ветки на центральный репозиторий»
    Выполняется после завершения работы, либо в конце каждого дня (чтобы был бакап на сервере), либо если нужно какие-то изменения показать коллеге.
    Меню → TortoiseGit → Push
    Выбираем в Local сперва master, потом нашу текущую ветку.
    Remote заполняется при этом автоматически.
    Название remote ветки должно быть идентично local
    Не следует делать push после каждого коммита, так как это потребует доступа до удалённого сервера, и, соответственно, времени, потраченного впустую.
  4. «Ребейз относительно мастера»
    Выполняется перед заливкой на сервер законченной задачи, когда все изменения уже закоммичены.
    Меню → Git Sync
    Local branch: master
    Remote branch: master
    Правая стрелочка вниз у первой кнопки (Pull по умолчанию), Fetch
    Меню → TortoiseGit → *Rebase
    Branch: текущая ветка
    UpStream: master
    Если будут конфликты – разобраться с ними через вкладку «Conflict File»
    На выбор, правой кнопкой файла, утилиты
    Edit Conflicts – позволяет по каждому расхождению выбрать
    использовать версию какую блока
    Resolve Conflicts Using
    theirs – использовать версию мастера
    mine – использовать версию текущей ветки
    Open – открыть в редакторе, и исправить вручную
    После исправления сделать Resolve
    После исправления всех конфликтов нажать Commit
    После ребейза нажать Done
  5. «Кратковременное сохранение состояния изменений»
    Выполняется, если требуется временно приостановить работу над текущей веткой на короткое время (например, на ревью, или чтобы сделать какую-либо двухминутную задачу).
    Меню → TortoiseGit → Stash Save
    После этого дерево чисто, можно переключиться на другую ветку/мастер и так далее, поработать, после чего восстановить состояние, если переключиться обратно на рабочую ветку, и сделать
    Меню → TortoiseGit → Stash Pop
    Тем самым восстановив состояние изменения.
  6. «Длительное сохранение состояния изменений»
    Выполняется в конце рабочих суток, чтобы даже частичные изменения были забакаплены; либо при необходимости срочно переключиться на решение другой задачи, которая может занять значительно больше 5-10 минут.
    Меню → Git Commit -> “ветка”
    Отмечаем все-все изменения (Select/Deselect All)
    В текст сообщения пишем «Partial commit»
    Позже, для возврата к тому же состоянию как было до, переключаемся на рабочую ветку, и делаем
    Меню → TortoiseGit → Show Log
    Выделяем коммит, который идет в дереве сразу перед «Partial commit»
    Правой кнопкой → Reset <ветка> to this
    Reset type: Mixed
  7. «Ревью ветки»
    Выполняется на чистом дереве, временно сохраните изменения согласно пункта 5, если требуется.
    Меню → TortoiseGit → Switch/Checkout
    Branch: master
    Меню → TortoiseGit → Pull
    Меню → TortoiseGit → Switch/Checkout
    Branch: remotes/origin/нужнаяветка
    [x] Create new branch: нужнаяветка
    [x] Force
    [x] Track
    [x] Override branch if exists
    Меню → TortoiseGit → *Rebase
    Branch: нужнаяветка
    UpStream: master
    Ветка ветка должна быть «up to date» или заребейзится без конфликтов.
    == Анализируем изменения просмотром лога изменений через
    Меню → TortoiseGit → Show log
    и смотрим изменения от master до последнего
    == Смотрим общее изменение относительно мастера
    Меню → TortoiseGit → Diff with previous version
    Version 1: HEAD
    Version 2: master
    == если всё хорошо, делаем
    Меню → TortoiseGit → Switch/Checkout
    Branch: master
    Меню → TortoiseGit → Merge
    From: нужнаяветка
    [x] No fast forward
    Сообщение не редактируем.
    Меню → TortoiseGit → Push
    И удаляем ветки:
    Shift + Меню → TortoiseGit → Browser Reference
    в дереве слева Refs => heads => находим ветку, правой кнопкой, Delete branch
    в дереве слева remotes => origin => находим ветку, правой кнопкой,
    Delete remote branch

Работа под Linux

Подготовка к работе

  1. Устанавливаются системные пакеты ssh-client и git
  2. Создаётся приватный ключ:

    ssh-keygen -t dsa -C «Ivan Petrov <work@mail>»

  3. Настраивается ФИО и Емейл автора:

    git config —global user. name «Ivan Petrov»
    git config —global user.email work@mail»

  4. Админу отсылается файл ~/.ssh/id_dsa.pub для прописывания доступов до репозиториев и серверов.

Получение репозитория

Переходим в директорию для работы, и запускаем

git clone ssh://git@СЕРВЕР:ПОРТ/РЕПОЗИТОРИЙ.git

Основные используемые функции

  1. Обновление текущей ветки из центрального репозитория:

    git pull

  2. Отправка текущей ветки в центральный репозиторий:

    git push origin branchname

  3. Переключение на некоторую ветку:

    git checkout branchname

    При переключении на ветку, которой еще нет в локальном репозитории, будет создана локальная ветка, связанная с удалённой.

  4. Создание новой ветки, базирующейся на текущей

    git checkout -b branchname

  5. Удаление веток

    git branch -d branchname == удаление локальной уже слитой ветки
    git branch -D branchname == принудительное удаление локальной ветки
    git push origin :branchname == удаление ветки с центрального репозитория

  6. Слияние ветки с текущей

    git merge —no-ff branchname

  7. Посмотреть какие файлы изменены в текущей директории:

    git status

  8. Просмотреть текущие изменения:

    git diff

  9. Сохранение текущих изменений:

    git add именафайлов == добавить измененные/созданные файлы/директории
    git rm именафайлов == добавить удаление файла/директории
    git commit == сохранить добавленные изменения. Откроется редактор, чтобы ввести комментарий к коммиту
    git commit -a == сохранить все добавленные изменения и все измененные файлы. Позволяет сохранять все изменения, если файлы не добавлялись.

Стандартные процедуры работы

  1. «Начало работы над задачей».
    Выполняется перед началом работы над задачей. Дерево должно быть без изменений.

    git checkout master
    git pull
    git checkout -b branchname

  2. «Коммит очередного кусочка работы».
    Выполняется после выполнения некого изменения, суть которого целостная.

    # проверяем, какие файлы изменились к текущему моменту
    # удаляем если что-то попало совсем лишее
    git status

    # смотрим текст изменений, на предмет соответствия
    # правилам ведения чистых коммитов. удаляем, если какой-либо мусор попал
    git diff

    # если какие-либо файлы не должны попасть в коммит (например,
    # относятся к другому атомарному изменению.)
    # то помечаем только те файлы, изменения которых нужно сохранить
    git add …
    git rm …

    # сохраняем. -m можно опустить, тогда комментарий через редактор
    git commit -m «Some commit message»

    # если все на текущий момент созданные изменения нужно сохранить, то
    # через git add добавляем новые файлы, а всё остальное сохраняем через
    git commit -a -m «Some commit message»

  3. «Отправка ветки на центральный репозиторий»
    Выполняется после завершения работы, либо в конце каждого дня (чтобы был бакап на сервере), либо если нужно какие-то изменения показать коллеге.

    git push origin branchname

    Не следует делать push после каждого коммита, так как это потребует доступа до удалённого сервера, и, соответственно, времени, потраченного впустую.

  4. «Ребейз относительно мастера».
    Выполняется перед заливкой на сервер законченной задачи, когда все изменения уже закоммичены:

    git checkout master
    git pull
    git checkout branchname
    git rebase master

    При возникновении конфликтов, нужно:

    (*)
    git status == проверить файлы, для которых есть неразрешенные конфликты.

    Редактируем первый файл с конфликтом: находим в нем «<<<<<». То, что между <<<<< и ==== – содержит копию текста из master ветки, то что между ===== и >>>>> содержит текст из нашей ветки. Нужно на этом месте оставить одну единую версию, содержащую общий код и мастера и нашей ветки

    git add измененный_файл

    перейти на (*)

    После исправления конфликтов во всех файлах, запускаем

    git rebase —continue

    Если конфликты несовместимые с дальнейшим продолжением ребейза

    git rebase —abort == прерывает ребейз и возвращает ветку в исходное

    состояние (до начала ребейза)

    После ребейза обновляем состояние ветки в центральном репозитории

    git push origin branchname -f

  5. «Кратковременное сохранение состояния изменений».
    Выполняется, если требуется временно приостановить работу над текущей веткой на короткое время (например, на ревью, или чтобы сделать какую-либо двухминутную задачу).
    git reset HEAD .

    Важно! После такой процедуры сохранения/восстановления, при следующем

    git push origin branchname

    Будет выдано предупреждение о непоследовательном изменении. Чтобы принудительно отправить изменения, следует добавить опцию -f.

    git push -f origin branchname

    Важно: не следует добавлять -f всегда, так как это спасёт от случайных опечаток в названии ветки, например.

  6. «Ревью ветки».
    Выполняется на чистом дереве, временно сохраните изменения согласно пункта 5, если требуется.

    git checkout master
    git pull
    git branch -D branchname
    git checkout branchname
    git rebase master == ветка обязана наложиться без конфликтов
    git diff master == изучаем разницу от мастера или общим диффом, или
    git log master..HEAD == смотрим какие коммиты были между мастером и текущей веткой

    Если всё хорошо, делаем:

    git checkout master
    git merge —no-ff branchname
    git push origin master
    git push origin :branchname
    git branch -d branchname

Так же в этом разделе:

  • Бесплатные сервиса размещения репозитариев Git
  • Git workflow — Теория
  • Git workflow — Краткое введение по основным инструкциям
  • Git Wizardry
  • Про Git на пальцах (для переходящих с SVN)
  • Git на двоих
  • Ежедневный Git
  • Удачная модель ветвления для Git
  • Синхронизация через GIT
  • Git stash — работа с «карманом» в Git
  • Как посмотреть настройки репозитария Git и как их изменить
  • GIT: Инструкция-шпаргалка для начинающих
  • Как перенести локальный GIT-репозитарий на сервер вместе со всей историей
  • git reset — возврат к определенному коммиту, откат изменений, «жесткий» или «мягкий»
  • git revert — отмена изменений, произведенных в прошлом отдельным коммитом
  • Git — работа с ветками
  • Git: Путь Github. Цикл разработки — Простое объяснение
  • Машина времени в GIT
  • Git Rebase: руководство по использованию
  • Git: просмотр лога (истории) в консоли в виде дерева
  • Git: понимание команды git merge
  • Git: Опции слияния для команд merge и pull — определение стратегии слияния
  • Git: как переключиться на нужный коммит
  • Git: как смержить изменения из experimental в master
  • Git: как посмотреть изменения, внесенные определенным коммитом
  • Git: как посмотреть историю изменения одного файла
  • Git: как вернуть один файл в состояние, которое было в определенном коммите
  • git log — особенности данной команды при навигации по истории через git checkout
  • Git: Как исправить HEAD detached from
  • Git: что делать в состоянии detached head
  • Работа в команде с использованием Git на примере проекта в среде Blender 3D
  • Git: Как внести изменения в последний коммит
  • Как в Git создать новую ветку в условиях, когда что-то уже было изменено после последнего коммита
  • Как в Git залить новую локальную ветку в удаленный репозитарий
  • Git: Как подключить новую ветку с удаленного сервера
  • Git: Как узнать текущую ветку
  • Git: В чем разница между Fetch и Pull?
  • GIT: Как исправить ошибочный комментарий к коммиту или файлы в коммите
  • Как настроить git на использование proxy-сервера
  • Использование Git через HTTP-proxy
  • Настройка работы Git через Proxy-сервер
  • Git через proxy
  • Использование git за прокси с аутентификацией
  • Что делать, если в России заблокирован GitHub — быстрое решение
  • Как в Git смержить изменения до конкретного коммита?
  • Самый удобный визуальный клиент Git под основные платформы — SmartGit
  • Основы системы управления версиями Git для новичков на примере SmartGit
  • Как сделать подключение к репозитарию Git через Socks Proxy в условиях отсутствия DNS
  • Как сделать подключение к репозитарию Git через проксирующее SSH соединение
  • Как работать с незавершенными изменениями в коде? Как их коммитить в Git?
  • Как в Git посмотреть незакоммиченные изменения в текстах исходников?
  • Как поместить на GitHub уже существующий репозитарий
  • Что происходит при откате изменений через git reset —soft
  • Не бойся хардресета! Он твой друг и помощник. (Как пользоваться git reset)
  • Как пометить определенный коммит тегом версии
  • Как в Git удалить файлы из индекса, не удаляя их в рабочей директории
  • Как настроить GIT, чтобы при конфликте слияния он прописывал в файл не только различия, но и «базу» этих различий
  • Git: Разрешение конфликтов объединений
  • Git: Извлечение старой версии файла
  • Git stash: временный отказ от проделанной работы
  • Git: проверка состояния репозитария, поддержание репозитария в рабочем состоянии
  • Как в Git отменить локальные изменения и получить новое состояние из удаленного репозитария
  • Как искать изменения в нужных файлах с помощью интерфейса gitk?
  • Как выбрать одну из версий бинарного файла при возникновнии конфликта слияния?
  • Как в Git посмотреть старый коммит, а потом вернуться обатно к самому последнему коммиту
  • Получение хеша последнего коммита и его даты в Git (для версионирования)
  • Памятка по неочевидным деталям использования Git
  • Как синхронизировать форк на Github с основным репозитарием через веб-интерфейс
  • Как пользоваться GitHUb: форки, ветки, запросы на добавление кода
  • Как отменить (сбросить) еще не закоммиченные изменения в Git
  • Первоначальная настройка имени пользователя и Email в Git-проекте
  • Можно ли принимать изменения через git pull если не закоммичены изменения рабочей директории
  • Как посмотреть какие команды генерирует git gui
  • Как удалить файл в Git-репозитарии с изменением истории

MyTetra Share v. 0.58

Основные сведения о 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

Последняя версия:

  • Английский : [HTML] [обычный текст] [PDF]
  • Немецкий: [HTML] [обычный текст] [PDF]
  • Французский: [HTML] [обычный текст] [PDF]
  • Итальянский: [HTML] [обычный текст] [PDF]
  • Японский: [HTML] [обычный текст] [PDF]
  • Голландский: [HTML] [обычный текст] [PDF]
  • Португальский: [HTML] [обычный text] [PDF]
  • Русский: [HTML] [обычный текст] [PDF]
  • Китайский: [HTML] [обычный текст] [PDF]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/ddp-team/debian-faq
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/ddp-team/debian-faq.git

Руководство по установке Debian

Инструкции по установке дистрибутива Debian GNU/Linux. В руководстве описан процесс установки с помощью установщика Debian, система установки Debian, которая впервые была выпущена с Сардж (Debian GNU/Linux 3.1).
Дополнительную информацию по установке можно найти в Часто задаваемые вопросы об установщике Debian и Вики-страницы установщика Debian.

Авторы: Команда установщика Debian
Специалист по обслуживанию: Команда установщика Debian
Статус: Инструкция еще не идеальна. В настоящее время ведется активная работа. и будущие выпуски Debian. Помощь приветствуется, особенно с не-x86 монтаж и переводы. Контакт [email protected] Чтобы получить больше информации.
Наличие: Пакет Debian руководство по установке

Опубликованная версия для стабильной версии
Доступен на официальных полных CD и DVD. в каталоге /doc/manual/.

Готовится версия для следующей стабильной (в тестировании)

Версия для разработчиков

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/installer-team/installation-guide
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/installer-team/installation-guide.git

Версии руководства по установке для предыдущих выпусков (и, возможно, следующий выпуск) Debian связаны с выпуском страница для этих выпусков.


Примечания к выпуску Debian

Этот документ содержит информацию о том, что нового в текущей версии Debian. Распространение GNU/Linux и полная информация по обновлению для пользователей старые выпуски Debian.

Авторы: Адам Ди Карло, Боб Хиллиард, Иосип Роден, Энн Беземер, Роб Брэдфорд, Франс Поп, Андреас Барт, Хавьер Фернандес-Сангино Пенья, Стив Лангасек
Статус: Активно работал над выпусками Debian. Контакт [email protected] Чтобы получить больше информации. О проблемах и исправлениях следует сообщать как ошибки против псевдопакет примечаний к выпуску.
Доступность: Выпущенная версия
Доступен на официальных полных CD и DVD. в каталоге /doc/release-notes/.

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/ddp-team/release-notes
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/ddp-team/release-notes.git

Справочная карта Debian

Эта карта предоставляет новым пользователям Debian GNU/Linux самые важные команды на одной странице для использования в качестве справочника при работе с системами Debian GNU/Linux. Базовый (или лучше) знание компьютеров, файлов, каталогов и командной строки требуется.

Авторы: В. Мартин Боргерт
Специалист по обслуживанию: В. Мартин Боргерт
Статус: опубликовано; в активном развитии
Наличие: Пакет Debian дебиан-refcard

Последняя версия:

  • Арабский: [PDF]
  • Болгарский: [PDF]
  • Каталонский: [PDF]
  • Чешский: [PDF]
  • Датский: [PDF]
  • Немецкий: [PDF]
  • Греческий: [PDF]
  • Английский : [PDF]
  • Испанский: 90[0PDF4] ].
  • Японский: [PDF]
  • Корейский: [PDF]
  • Литовский: [PDF]
  • Норвежский: [PDF]
  • Голландский: [PDF]
  • Польский: [PDF]
  • Португальский: [PDF]
  • Португальский: [PDF]
  • Румынский: [PDF]
  • Русский: [PDF]
  • 9000 SDFlovak4]
  • Шведский: [PDF]
  • Турецкий: [PDF]
  • Вьетнамский: [PDF]
  • Китайский: [PDF]
  • Китайский: [PDF]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/ddp-team/refcard
  • Интерфейс VCS: git clone https://salsa.debian.org/ddp-team/refcard.git

Руководство администратора Debian

Справочник администратора Debian учит основы для всех, кто хочет стать эффективным и независимым Debian Администратор GNU/Linux.

Авторы: Рафаэль Герцог, Роланд Мас
Статус: Опубликовано; в активном развитии
Наличие: Пакет Debian debian-справочник

Последняя версия:

  • Арабский язык: [HTML]
  • Датский: [HTML]
  • Немец: [HTML]
  • Греческий: [HTML]
  • английский : [HTML]
  • Испанский: [HTML] : [HTML]
  • :
  • Персидский: [HTML]
  • Французский: [HTML]
  • Хорватский: [HTML]
  • Индонезийский: [HTML]
  • Итальянский: [HTML]
  • Японский: [HTML]
  • Норвежский: [HTML]
  • Польский: [HTML]
  • Португальский: [HTML]
  • Румынский: [HTML]
  • Русский:]
  • Турецкий: [HTML]
  • Вьетнамский: [HTML]
  • Китайский: [HTML]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/hertzog/debian-handbook
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/hertzog/debian-handbook.git

Справочник Debian

Этот справочник по Debian GNU/Linux охватывает многие аспекты системного администрирование через примеры команд оболочки. Основные руководства, советы и другая информация предоставляется по темам, включая установку системы, Управление пакетами Debian, ядро ​​Linux под Debian, настройка системы, создание шлюза, текстовые редакторы, VCS, программирование и GnuPG.

Ранее известный как «Краткий справочник».

Авторы: Осаму Аоки (青木 修)
Специалист по обслуживанию: Осаму Аоки (青木 修)
Статус: Опубликовано; в активном развитии
Наличие: Пакет Debian ссылка на дебиан

Последняя версия:

  • Английский : [HTML] [обычный текст] [PDF]
  • Французский: [HTML] [обычный текст] [PDF]
  • Немецкий: [HTML] [обычный текст] [PDF]
  • Испанский: [HTML] [обычный текст] [PDF]
  • Итальянский: [HTML] [обычный текст] [PDF]
  • Японский: [HTML] [ обычный текст] [PDF]
  • Португальский: [HTML] [обычный текст] [PDF]
  • Китайский: [HTML] [обычный текст] [PDF]
  • Китайский: [HTML] [обычный текст] [PDF]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/debian/debian-reference
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/debian/debian-reference.git

Руководство по обеспечению безопасности Debian

В этом руководстве описывается безопасность Debian GNU/Linux. операционной системы и в рамках проекта Debian. Это начинается с процессом защиты и укрепления Debian GNU/Linux по умолчанию установка (как вручную, так и автоматически) охватывает некоторые общие задачи, связанные с настройкой безопасной пользовательской и сетевой среды, дает информацию о доступных инструментах безопасности, шагах, которые необходимо предпринять до и после компрометации, а также описывает, как обеспечивается безопасность. применяется в Debian командой безопасности. Документ включает пошаговое руководство по закалке и в приложении есть подробная информация о том, как настроить обнаружение вторжений систему и брандмауэр-мост с Debian GNU/Linux.

Авторы: Александр Рилсен, Хавьер Фернандес-Сангино Пенья
Специалист по обслуживанию: Хавьер Фернандес-Сангино Пенья
Статус: Опубликовано; в разработке с небольшими изменениями. Некоторый его контент может быть не полностью обновлен.
Наличие: Пакет Debian жесткий документ

Последняя версия:

  • Английский : [HTML]
  • Немецкий: [HTML]
  • Испанский: [HTML]
  • Французский: [HTML]
  • Итальянский: [HTML]
  • Японский: [0HTML]
  • Португальский: 
  • HTML]
  • Китайский: [HTML]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/ddp-team/securing-debian-manual/
  • Интерфейс системы контроля версий: git clone https://salsa. debian.org/ddp-team/securing-debian -manual.git

Руководство пользователя aptitude

Вводное руководство по диспетчеру пакетов aptitude с полный справочник команд.

Авторы: Дэниел Берроуз
Статус: Опубликовано; в активном развитии
Наличие: Пакет Debian aptitude-doc

Последняя версия:

  • Чешский: [HTML]
  • Английский : [HTML]
  • Испанский: [HTML]
  • Финский: [HTML]
  • Французский: [HTML]
  • Итальянский: 9[0[HTML]
  • Итальянский: 9 HTML]
  • Русский: [HTML]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/apt-team/aptitude
  • Интерфейс системы контроля версий: git clone https://salsa. debian.org/apt-team/aptitude.git

Руководство пользователя APT

В этом документе представлен обзор того, как использовать диспетчер пакетов APT.

Авторы: Джейсон Ганторп
Статус: Опубликовано; несколько несвежий
Наличие: Пакет Debian ап-док

Последняя версия:

  • Немецкий: [HTML]
  • Испанский: [HTML]
  • Французский: [HTML]
  • Английский : [HTML]
  • Итальянский: [HTML]
  • Японский: [HTML]
  • 9 Португальский: 0[0ML] 9 [0ML] 9 ]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/apt-team/apt
  • Интерфейс системы контроля версий: git clone https://salsa. debian.org/apt-team/apt.git

Использование APT в автономном режиме

В этом документе описывается, как использовать APT в несетевом окружении, в частности, подход «sneaker-net» для выполнения обновлений.

Авторы: Джейсон Ганторп
Статус: Опубликовано; несколько несвежий
Наличие: Пакет Debian ап-док

Последняя версия:

  • Немецкий: [HTML]
  • Испанский: [HTML]
  • Французский: [HTML]
  • Английский : [HTML]
  • Итальянский: [HTML]
  • Японский: 0[0ML] 9 ]
  • Португальский: [HTML]

Последний исходный код XML доступен в репозитории Git.

  • Веб-интерфейс: https://salsa.debian.org/apt-team/apt
  • Интерфейс системы контроля версий: git clone https://salsa. debian.org/apt-team/apt.git

Часто задаваемые вопросы по Debian Java

Цель этого FAQ — быть местом для поиска всех видов вопросы, которые могут возникнуть у разработчика или пользователя относительно Java и Debian касается, это включает в себя проблемы с лицензией, доступные пакеты разработки, и программы, связанные с созданием среды свободного программного обеспечения Java.

Авторы: Хавьер Фернандес-Сангино Пенья, Торстен Вернер, Нильс Тикьер, Сильвестр Ледрю
Статус: Опубликовано; в активной разработке, хотя некоторая часть его содержимого может быть устаревшей.
Наличие: Пакет Debian Java-общий

Последняя версия:

  • Английский : [HTML] [обычный текст]
  • Итальянский: [HTML] [обычный текст]
  • Французский: [HTML] [обычный текст]

Последняя версия исходного кода доступна через SGML Git-репозиторий.

  • Веб-интерфейс: https://salsa.debian.org/ddp-team/java-faq
  • Интерфейс системы контроля версий: git clone https://salsa.debian.org/ddp-team/java-faq.git

Руководство сопровождающего Debian Hamradio

Руководство для сопровождающих Debian Hamradio — это документ, в котором описывается командная политика и лучшие текущая практика для команды упаковки Deian Hamradio Maintenanceers.

Авторы: Иэн Р. Лермонт
Статус: Опубликовано; в активном развитии.
Наличие: Пакет Debian hamradio-mainguide

Последняя версия:

  • Английский : [HTML] [PDF]

Последний исходный код restructuredText доступен в репозитории Git.

  • Веб-интерфейс: https://salsa. debian.org/debian-hamradio-team/hamradio-maintguide/
  • Интерфейс VCS: git clone https://salsa.debian.org/debian-hamradio-team/hamradio-maintguide.git

Операционная система AROS Research

Сумрио

  • Введение
  • Программное обеспечение
    • Unix
    • АмигаОС
    • Windows
    • MacOS X
  • Вход на сервер
  • Получение исходников AROS
  • Подготовка исходников для сборки
  • Получение дополнительных источников
  • Обновление исходников
  • Фиксация изменений
  • Дальнейшее чтение
  • Источники

GitHub размещает центральный «репозиторий» AROS, который является основным база данных, содержащая опубликованную общую кодовую базу проекта.

Отдельным разработчикам рекомендуется создавать ответвления проекта и отправьте пул-реквесты, чтобы внести изменения обратно в проект. Это позволяет чтобы у них были свои «рабочие копии», локальные копии базы данных определенного времени вместе с локальными изменениями которые еще не были отправлены в центральный репозиторий.

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

Если вы используете Linux, FreeBSD или любой другой современный клон Unix, вы просто нужно установить официальное программное обеспечение Git для вашей ОС. Все распространенные дистрибутивы Linux поставляются с пакетом Git.

Если вы используете AmigaOS, вам понадобится стек TCP/IP и некоторый порт Git установлены.

Если вы используете Microsoft Windows, вы можете использовать клиент TortoiseGit Git, особенно если вам нравится использовать проводник Windows. Эта программа открыта Исходный и бесплатный, многофункциональный и хорошо поддерживаемый. Пожалуйста, убедитесь установить стиль eol на «проверить как есть — зафиксировать как есть» при установке, в противном случае вы можете сломать генерацию кода .

В отличие от CVS, вам не нужно регистрироваться на сервере. Вместо этого, когда Git нужно знаете свой логин и пароль, он их спросит.

Примечание

В репозитории AROS запущен сервер Git, размещенный на GitHub, который означает, что вам необходимо подать заявку на доступ к нему, чтобы иметь возможность сотрудничать в разработке.

Чтобы получить копию исходных кодов AROS, используйте команду «clone», например:

> клон git https://github.com/aros-development-team/AROS.git
 

Это создаст каталог с именем AROS и заполнит его всеми источники, что может занять некоторое время, если у вас медленная сеть связь.

Кроме основного репозитория есть еще «контриб» и «порты» репозитории, содержащие сторонние программы, портированные на AROS. Их можно проверить для включения в сборку AROS следующим образом:

> компакт-диск АРОС
> mkdir вклад
> мкдир портов
> клон git https://github.com/aros-development-team/contrib.git
> клон git https://github. com/aros-development-team/ports.git
 

Dica

После клонирования Git запомнит, откуда исходник.

После клонирования репозитория(ов) необходимо указать git инициализировать подмодули, включенные в клонированный репозиторий. Сделать это выполните следующую команду в клонированном дереве

> обновление подмодуля git —init —recursive

Помимо основных источников AROS, которые мы проверили в предыдущем разделе, на сервере Git есть и другие вещи, не связанные напрямую к ядру операционной системы. Например, модуль «двоичные файлы», который содержит изображения, такие как скриншоты, фоны и тому подобное, а модуль «документация», который содержит исходники сайта.

После проверки исходников вам, вероятно, захочется периодически обновите их, чтобы получить последние изменения, внесенные другими разработчиками. Для этого вы используете команду «тянуть»:

> компакт-диск АРОС
> гит тянуть
 

Это объединит любые изменения, внесенные другими разработчиками, в ваш sources, а также проверить новые каталоги и файлы, которые были добавлены. Если кто-то зафиксировал изменения в файле, который вы также изменили локально, Git попытается автоматически объединить изменения. Если вы оба изменили те же строки Git может потерпеть неудачу при слиянии исходников. Когда это происходит, Git буду жаловаться и ставить обе версии в файле, разделенные <<<<. Вам нужно отредактировать файл и разрешить конфликт вручную. Как только это сделано, вам также нужно использовать команду «git add» и «git commit», чтобы сообщить Говно все хорошо.

Aviso

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

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

> git добавить <файл>
> git commit -m "импортировать изменения"
> гит пуш
 

Если вы сделали форк, вы должны создать запросы на вытягивание, как описано во введении.

  • Книга Pro Git
  • Справка Гитхаба
  • Git-документация

Те, кто заинтересован только в исходниках, также должны иметь возможность их скачать из раздела «Источники» на странице «Ночные сборки».


Direitos de Cpia 1995-2022, A Equipa de Desenvolvimento AROS. Todos Os Direitos Reservados.
Amiga, AmigaOS, Workbench и Intuition для зарегистрированных торговых марок Amiga Inc.

Приложение A. Получение FreeBSD | Портал документации FreeBSD

Содержание

А.1. Зеркала

Официальные зеркала проекта FreeBSD состоят из множества машин, управляемых администраторами кластера проекта и за GeoDNS, чтобы направлять пользователей к ближайшему доступному зеркалу. Текущие местоположения: Австралия, Бразилия, Япония (два объекта), Малайзия, Нидерланды, Южная Африка, Тайвань, Великобритания, Соединенные Штаты Америки (Калифорния, Нью-Джерси и Вашингтон).

Официальный сервис зеркал:

веб-страница VMLBS Free. pkg audit получает список уязвимостей из этой службы.

Название сервиса Протоколы Дополнительная информация

; Рекомендуется загрузить .FreeBSD.org .

git.FreeBSD.org

git через https и ssh

9
    8 Подробнее об использовании git в разделе.

PKG.FreeBSD.ORG

PKG (8) более HTTP и HTTPS

88.

vuxml.FreeBSD.org / www.VuXML.org

https

Все официальные зеркала поддерживают 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:

Австрия1144

6 Официальный0031

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 обычно является инструментом разработчика. Пользователи могут предпочесть использовать freebsd-update («Обновление FreeBSD») для обновления базовой системы FreeBSD и portsnap («Использование коллекции портов») для обновления коллекции портов FreeBSD.

В этом разделе показано, как установить 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 .

Таблица 1. URL-файл FreeBSD GIT Таблица
Предмет GIT URL

.0028 https://git.FreeBSD.org/src.git

Репозиторий src только для чтения через anon-ssh

ssh://[email protected]. git

Read-only doc repo via HTTPS

https://git.FreeBSD.org/doc.git

Read-only doc repo via anon-ssh

ssh://[email protected]/doc.git

Read-only ports repo via HTTPS

https://git.FreeBSD. org/ports.git

Read-only ports repo via anon-ssh

ssh://[email protected]/ports.git

Также доступны внешние зеркала, поддерживаемые участниками проекта; см. раздел «Внешние зеркала».

Чтобы клонировать копию репозитория исходного кода системы 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 обычно является инструментом разработчика. Пользователи могут предпочесть использовать freebsd-update («Обновление FreeBSD») для обновления базовой системы FreeBSD и portsnap («Использование коллекции портов») для обновления коллекции портов FreeBSD. После марта 2021 года подрывная деятельность используется только для устаревших веток ( стабильная/11 и стабильная/12 ).

В этом разделе показано, как установить 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 . Файлы в этом каталоге называются локальной рабочей копией .

Переместите или удалите существующий каталог назначения перед использованием касса в первый раз. Извлечение из существующего каталога, отличного от 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.com

  • Getlinux
    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