Git что такое репозиторий: Ежедневная работа с Git / Хабр
Создание и клонирование репозитория git. Урок 2
Урок, в котором мы познакомимся с репозиториями git, научимся их создавать и клонировать, а также узнаем, зачем нужны ssh-ключи
Видеоурок. Часть 1. Практика
Все о репозиториях
- что это такое
- клонирование
- публичные и приватные репозитории
- создаем собственный репозиторий
- Инициализация репозитория
- Генерируем ssh-ключи
ssh-ключи
- что это такое и зачем они нужны
- генерируем свой ключ
Видеоурок. Часть 2
- Что выбрать: github или bitbucket?
- Копирование ssh-ключей
Конспект урока
Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.
Что такое репозиторий
Это каталог в файловой системе, где хранится информация о проекте:
- файлы и папки проекта
- история проекта
- настройки проекта
- служебная информация
Информация о репозитории хранится в скрытой папке .git в корне проекта.
Можно ли работать с git локально
Да, можно. Но при этом проект находится только на нашей машине и в случае поломки железа или случайной потери данных мы не сможем восстановить проект.
Локальный репозиторий
Это репозиторий, который хранится на нашей машине, в рабочей папке проекта. Это та самая скрытая папка .git
Удаленный репозиторий, зачем он нужен
Это репозиторий, который хранится в облаке, на сторонних сервисах, специально созданных под работу с проектами git.
Плюсы удаленного репозитория
- выполняет роль резервной копии
- возможность работать в команде
- некоторые дополнительные возможности, которые предоставляет хостинг. Например, визуализация истории или возможность работать над проектом прямо в веб-интерфейсе
Что такое клонирование
Это копирование удаленного репозитория на локальную машину. Обычно это первое действие при работе с проектом.
При клонировании на нашу машину копируются файлы и папки проекта и вся его история.
То есть мы получаем доступ к истории не с момента начала нашей работы над проектом, а с самого начала проекта.
Как клонировать готовый проект
В первую очередь, нужно получить ссылку на проект. Мы можем найти ее сами или получим готовую, например, на новой работе.
Возьмем для примера репозиторий vuejs — https://github.com/vuejs/vue.git
Наберем в командной строке
$ git clone https://github.com/vuejs/vue.git
При этом в текущем каталоге создастся папка vue, в ней окажутся все файлы проекта vue и специальная скрытая папка .git, то есть сам репозиторий, или информация о нем.
Как клонировать проект в другую папку
При клонировании по умолчанию создается папка с таким же названием, как и у репозитория. Но можно склонировать репозиторий и в другую папку вот так
$ git clone https://github.com/vuejs/vue.git vue-new
Где vue-new — нужное название папки.
Свой удаленный репозиторий
Для своих проектов нам понадобится собственный репозиторий. Можно работать и локально, но плюсы удаленного мы уже рассматривали выше. Теперь нужно выбрать хостинг для наших git-проектов.
Где держать репозиторий
Есть множество вариантов, самые известные — это github и bitbucket. Нужно выбирать.
На самом деле не парьтесь. У них схожий функционал, и в начале работы с git мы не заметим разницы.
bitbucket мне нравится больше из-за интерфейса, но в уроках выберем github из-за его большей популярности.
Чтобы продолжить уроки, нужно зарегистрироваться на github. Если у вас нет там аккаунта, то форму регистрации увидите сразу на главной странице — https://github.com/
Как создать репозиторий в github
После регистрации создание репозитория доступно с главной страницы github. При создании нужно указать название проекта и тип (публичный или приватный). На остальное пока не обращаем внимания.
Права на репозиторий, публичные и приватные
Есть 2 типа репозиториев:
- публичный (public), открыт всем
- приватный (private), доступен только определенному кругу лиц — в первую очередь, нам самим
Публичные репозитории хороши для opensource-проектов и чтобы показать в резюме. Пока нам это не нужно.
Для себя будем создавать приватные репозитории. Для этого нам понадобятся ssh-ключи.
Что такое ssh-ключи
ssh-ключи используются для идентификации клиента на сервере при подключении по безопасному ssh-протоколу.
Другими словами, ssh-ключ нужен для того, чтобы пускать на сервер только определенных клиентов. Только тех, кому разрешен доступ к проекту.
ssh-ключ не имеет прямого отношения к git, но так репозитории находятся на удаленных серверах, то ssh-ключи используются для разграничения доступа к приватным репозиториям.
ssh-ключ состоит из пары ключей: публичного и приватного ключа. Это просто 2 текстовых файла:
- /домашний-каталог/.ssh/id_rsa.pub — публичный
- /домашний-каталог/.ssh/id_rsa — приватный
Публичный ключ передается сторонним серверам, например, github, для открытия доступа на эти сервера. Приватный ключ хранится только на нашей машине и никому не передается.
То есть когда у нас просят ssh-ключ, чтобы дать доступ на какой-нибудь сервер, мы отдаем именно публичный ключ, id_rsa.pub
Как сгенерировать ssh-ключ
ssh-ключи сами собой не появляются, но стоит проверить, возможно, они были установлены раньше. Запустим в терминале команды
$ cd ~/.ssh
$ ls -l
Если видим файлы id_rsa и id_rsa.pub — отлично, ключи уже есть.
Если этих файлов нет, то нужно сгенерировать ключи утилитой ssh-keygen. В Windows она устанавливается вместе с git, в Linux и MacOS при необходимости установите. В Linux, например, вот так
$ sudo apt install ssh-keygen
После этого нужно сгенерировать пару ключей, запустив команду в терминале
$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
Проверяем
$ ls -l
total 24
-rw------- 1 sn8 sn8 1675 Feb 11 2017 id_rsa
-rw-r--r-- 1 sn8 sn8 392 Feb 11 2017 id_rsa.pub
-rw-r--r-- 1 sn8 sn8 5746 Oct 28 21:52 known_hosts
Появились файлы id_rsa и id_rsa.pub — значит, ключи успешно сгенерированы.
known_hosts — это файл, в котором ssh прописывает сервера, на которые мы заходим.
При первом подключении к github нужно будет разрешить доступ к github.com (напечатать yes в терминале)
Как добавить ssh-ключ в настройках github
Открываем публичный ключ id_rsa.pub и копируем его содержимое. В настройках github ищем раздел «SSH и GPG keys» — https://github.com/settings/keys.
Жмем «New SSH key», задаем название ключа, например, имя, и вставляем форму публичный ключ, прямо текстом. Все, теперь у нас есть доступ к нашим приватным репозиториям.
Два способа создания проекта
Первый, когда мы начинаем новый проект. Удобнее будет создать репозиторий на github и склонировать пустой проект на локальную машину.
Второй, когда у нас уже есть проект. Нужно зайти в папку проекта и связать его с уже существующим репозиторием на github. Это называется инициализация.
Рассмотрим оба способа.
Пустой проект
Создаем приватный репозиторий на github, назовем его first-site.
Я зарегистрировался под именем Webdevkin, моя ссылка для клонирования будет такая — [email protected]:Webdevkin/first-site.git. Ваша зависит от имени пользователя.
Идем в командную строку и запускаем
$ git clone [email protected]:Webdevkin/first-site.git
В текущей папке получим новую папку с названием first-site — это и есть наш проект.
P.S. У вас склонировать этот репозиторий не получится — он закрытый. Создайте свой :-)
Непустой проект
Допустим, у нас на локальной машине уже есть проект second-site. Создаем в github репозиторий second-site. Заходим в папку проекта и выполняем команды
$ git init
$ git add .
$ git commit -m "Initial commit"
$ git remote add origin [email protected]:Webdevkin/second-site.git
$ git push -u origin master
Все, можно приступать к работе над проектом. Команды add, commit и push мы разберем в следующих уроках.
Это единственный урок, в котором мы разбирались с тонкостями репозиториев. В дальнейшем будем считать, что репозиторий = проект.
Что могу посоветовать
- github или bitbucket? Для личных проектов неважно, оба сервиса разрешают бесплатно создавать приватные репозитории. Для open source или резюме — github
- не увлекайтесь клонированием в папку со своим названием. Есть шанс запутаться, самому или коллегам
- не путайте публичный и приватный ключи. Отдаем вовне только публичный ключ id_rsa.pub
- при смене рабочей машины можно не генерировать ssh-ключи заново, а скопировать их со старой машины. Тогда не придется заново прописывать новые ключи на серверах
Немного подробнее о копировании ssh-ключей
Как скопировать ssh-ключи с одной машины на другую
Хочу немного затронуть эту тему отдельно. Генерировать ключ на новой машине не обязательно. Но нужно выполнить такие действия
- Скопировать id_rsa и id_rsa.pub со старой машины на новую
- Посмотреть права на файлы, возможно, ключи окажутся слишком «открытыми» для записи и потребуется сменить им права доступа — sudo chmod 700 ~/.ssh/*
- Выполнить команду ssh-add
Ссылки, которые могут пригодиться
На этом все. В следующем уроке мы сделаем первые изменения в проекте и начнем понимать, в чем заключается прелесть git.
Спасибо за внимание и до встречи!
Все уроки курса
Продолжение следует…
Настройка репозитория | Atlassian Git Tutorial
Этот обучающий материал включает в себя обзор настройки репозитория в системе контроля версий Git. На этой странице вы узнаете, как инициализировать репозиторий Git для нового или существующего проекта. Ниже представлены примеры жизненного цикла для репозиториев, созданных локально и клонированных из удаленных репозиториев. Для работы с этим руководством требуются начальные знания о работе с интерфейсом командной строки.
В данном руководстве обсуждаются следующие основные вопросы:
- Инициализация нового репозитория Git
- Клонирование существующего репозитория Git
- Коммит измененной версии файла в репозиторий
- Конфигурирование репозитория Git для удаленной совместной работы
- Распространенные команды для управления версиями Git
По окончании данного модуля вы должны уметь создавать репозиторий Git, использовать основные команды Git, выполнять коммит измененного файла, просматривать историю проекта и настраивать соединение с сервисом хостинга Git (Bitbucket).
Что такое репозиторий Git?
Репозиторий Git — это виртуальное хранилище проекта. В нем можно хранить версии кода для доступа по мере необходимости.
Инициализация нового репозитория: git init
Для создания нового репозитория используется команда git init
. Команду git init
выполняют только один раз для первоначальной настройки нового репозитория. Выполнение команды приведет к созданию нового подкаталога .git
в вашем рабочем каталоге. Кроме того, будет создана новая главная ветка.
Создание версии существующего проекта с использованием нового репозитория Git
В этом примере предполагается, что у вас уже есть папка проекта, в которой вы и хотите создать репозиторий. Выполните команду cd
для перехода к папке проекта, а затем выполните команду git init
.
cd /path/to/your/existing/code git init
Указание в команде git init
существующего каталога проекта приведет к исполнению описанной выше инициализации, но только на уровне этого каталога проекта.
git init
Перейдите на страницу git init, чтобы получить подробные сведения о команде git init
.
Клонирование существующего репозитория: git clone
Если проект уже настроен в центральном репозитории, наиболее распространенным способом создать его локальный клон является команда clone. Клонирование, как и команда git init
, обычно выполняется один раз. Получив рабочую копию, разработчик в дальнейшем выполняет все операции контроля версий из своего локального репозитория.
git clone
Команду git clone
выполняют для создания копии (клонирования) удаленного репозитория. В качестве параметра в команду git clone
передается URL-адрес репозитория. Git поддерживает несколько различных сетевых протоколов и соответствующих форматов URL-адресов. В этом примере используется SSH-протокол Git. URL-адреса SSH в Git имеют следующий шаблон: git@HOSTNAME:USERNAME/REPONAME.git
Пример URL-адреса SSH в Git имеет вид: [email protected]:rhyolight/javascript-data-store.git
, а ниже приведены значения шаблонных параметров:
HOSTNAME: bitbucket.org
USERNAME: rhyolight
REPONAME: javascript-data-store
После исполнения команды последние версии файлов из главной ветки удаленного репозитория будут загружены и помещены в новый каталог. Название нового каталога будет соответствовать параметру REPONAME, в данном случае: javascript-data-store
. В каталоге будет вся история удаленного репозитория и только что созданная главная ветка.
Дополнительную информацию об использовании команды git clone
и поддерживаемых форматах URL-адресов в Git см. на странице git clone.
Сохранение изменений в репозитории: git add и git commit
У вас появился репозиторий, созданный путем клонирования или инициализации. Теперь вы можете выполнять коммиты изменений в версиях файлов. В следующем примере предполагается, что вы настроили проект в каталоге /path/to/project
. В этом примере предлагаются следующие шаги.
- Измените каталоги на
/path/to/project
- Создайте новый файл
CommitTest.txt
с текстом ~«тест для обучения работе с Git»~ - С помощью команды git add добавьте файл
CommitTest.txt
в репозиторий проиндексированных файлов - Создайте новый коммит с комментарием, описывающим, что именно было изменено в коммите
cd /path/to/project echo "тест для обучения работе с Git" >> CommitTest.txt git add CommitTest.txt git commit -m "Добавление файла CommitTest.txt в репозиторий"
По завершении этого примера файл CommitTest.txt
добавится к истории репозитория, и репозиторий будет отслеживать последующие изменения в файле.
В этом примере представлены две новые команды в Git: add
и commit
. Этот очень упрощенный пример. Подробнее обе команды объяснены на страницах git add и git commit. Команду git add
часто используют с флагом --all
. Команда git add --all
добавляет все измененные и неотслеживаемые файлы в репозиторий и обновляет дерево изменений репозитория.
Совместная работа в разных репозиториях: git push
Важно понимать, что рабочая копия в Git существенно отличается от рабочей копии, получаемой при загрузке исходного кода из репозитория SVN. В отличие от SVN, в Git нет разницы между рабочими копиями и центральным репозиторием — все они являются полноценными репозиториями Git.
Поэтому совместная работа в Git принципиально отличается от совместной работы в SVN. В SVN работа строится на отношении между центральным репозиторием и рабочей копией, а модель совместной работы в Git основана на взаимодействии между репозиториями. Вместо загрузки рабочей копии в центральный репозиторий SVN в Git вы отправляете коммиты из одного репозитория в другой или копируете их в обратном направлении.
Вы легко можете задавать особую роль определенным репозиториям Git. Например, обозначив один из репозиториев Git как «центральный», вы можете воспроизвести централизованный процесс с использованием Git. Такой подход требует общих договоренностей, он не встроен в саму систему контроля версий.
Сравнение чистых и клонированных репозиториев
Если в предыдущем разделе («Инициализация нового репозитория») для настройки локального репозитория вы использовали команду git clone
, ваш репозиторий уже готов к удаленной совместной работе. Команда git clone
автоматически настроит репозиторий, в котором значение remote будет соответствовать URL-адресу Git, из которого был клонирован репозиторий. Это означает, что после изменений файла и выполнения коммита вы можете сразу выполнить команду git push
, чтобы отправить эти изменения в удаленный репозиторий.
Если вы использовали команду git init
для создания репозитория с нуля, у вас не будет удаленного репозитория, в который можно помещать изменения. Зачастую для инициализации нового репозитория пользователь переходит на сервис Git-хостинга (например, Bitbucket) и создает репозиторий там. Данный сервис предоставит URL-адрес Git, который затем можно добавить в локальный репозиторий Git. После этого можно выполнять команду git push
в репозиторий на хостинге. После создания удаленного репозитория на выбранном хостинге вам понадобится обновить локальный репозиторий, выполнив привязку. Этот процесс описывается далее в руководстве по установке и настройке.
Если вы предпочитаете поддерживать собственный удаленный репозиторий, вам нужно создать «чистый репозиторий». Для этого команды git init
и git clone
принимают аргумент --bare
. Наиболее популярная причина использования чистого репозитория — создание удаленного центрального репозитория Git
Конфигурирование и настройка: git config
После настройки удаленного репозитория его URL-адрес нужно добавить в локальный файл git config
, а также создать вышестоящую ветку для локальных веток. Такую возможность предоставляет команда git remote
.
git remote add
Эта команда привяжет удаленный репозиторий по адресу к ссылке в вашем локальном репозитории
. После привязки удаленного репозитория в него можно будет отправлять локальные ветки с помощью команды push.
git push -u
Эта команда поместит ветку локального репозитория с названием в удаленный репозиторий
.
Дополнительную информацию о команде git remote
см. на странице удаленной работы в Git
.
Помимо конфигурирования URL-адреса удаленного репозитория, вам может потребоваться установить глобальные параметры Git, например имя пользователя или электронный адрес. Команда git config
позволяет настроить инсталляцию Git (или отдельный репозиторий) из командной строки. С помощью этой команды можно установить любые настройки: от информации о пользователе до его предпочтений и характеристик репозитория. Ниже перечислены распространенные варианты конфигурации.
Git хранит варианты конфигурации в трех различных файлах, позволяющих ограничивать область видимости на уровне отдельных репозиториев (локальный), пользователя (глобальный) или всей системы (системный):
- Локальный:
/.git/config
— настройки на уровне репозитория. - Глобальный:
/.gitconfig
— настройки на уровне пользователя. Здесь хранятся настройки с флагом —global. - Системный:
$(prefix)/etc/gitconfig
— настройки на уровне всей системы.
Укажите имя автора, которое будет использоваться для всех коммитов в текущем репозитории. Обычно для настройки параметров конфигурации для текущего пользователя используется флаг --global
.
git config --global user.name
Эта команда задает имя автора, которое будет использоваться для всех коммитов, выполненных текущим пользователем.
Добавление аргумента --local
или выполнение команды без параметра уровня конфигурации приведет к установке значения user.name
для текущего локального репозитория.
git config --local user.email
Эта команда задает адрес электронной почты автора, который будет использоваться для всех коммитов, выполненных текущим пользователем.
git config --global alias.
Создайте быстрые клавиши для команды Git. Это мощная возможность для создания собственных комбинаций клавиш для часто используемых команд Git. Ниже показан упрощенный пример:
git config --global alias.ci commit
Так создается команда ci
, которую можно использовать как сокращение команды git commit
. Подробнее об алиасах в Git см. на странице git config
.
git config --system core.editor
Выберите текстовый редактор, используемый для таких команд, как git commit
, для всех пользователей текущего компьютера. Аргумент должен представлять собой команду, запускающую нужный редактор (например, vi). В этом примере представлен аргумент
--system
. Аргумент --system
устанавливает настройку на уровне всей системы, включая всех пользователей и все репозитории на компьютере. Дополнительную информацию об уровнях конфигурации см. на странице удаленной работы с git.
git config --global --edit
В текстовом редакторе откройте файл глобальной конфигурации для редактирования вручную. Подробное руководство по настройке текстового редактора для Git см. на странице Git config.
Пояснения
Все варианты конфигурации сохраняются в обычных текстовых файлах, так что команда git config
— это всего лишь удобный интерфейс командной строки. Как правило, установку Git следует настраивать только при начале работы на новом компьютере. В подавляющем большинстве случаев понадобится только флаг --global
. Одно из важных исключений — необходимость переписать электронный адрес автора. Вы можете поставить личный электронный адрес для личных репозиториев и репозиториев с открытым исходным кодом, а рабочий электронный адрес — для рабочих репозиториев.
Git хранит варианты конфигурации в трех различных файлах, что позволяет ограничивать область видимости на уровне отдельных репозиториев, пользователей или всей системы.
/.git/config
— настройки на уровне репозитория.~/.gitconfig
— личные настройки пользователя. Здесь хранятся настройки с флагом —global.$(prefix)/etc/gitconfig
— настройки на уровне всей системы.
Если параметры, указанные в этих файлах, конфликтуют, локальные настройки переопределяют пользовательские настройки, которые в свою очередь переопределяют системные настройки. Если вы откроете один из этих файлов, вы увидите нечто подобное:
[user] name = John Smith email = [email protected] [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim
Вы можете изменить эти значения вручную, эффект будет аналогичен использованию команды git config
.
Пример
В первую очередь после установки Git требуется указать свое имя и адрес электронной почты, а также настроить некоторые параметры по умолчанию. Пример типичной начальной конфигурации показан далее.
Представьтесь репозиторию Git с помощью команды git config
git --global user.name "John Smith" git config --global user.email [email protected]
Выберите любимый текстовый редактор
git config --global core.editor vim
Добавьте алиасы по типу SVN
git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.up rebase git config --global alias.ci commit
Создастся файл ~ /.gitconfig
, описанный в предыдущем разделе. Подробную информацию о команде git config см. на странице Git config.
Резюме
Мы показали, как создать репозиторий Git двумя способами: git init и git clone. Этим руководством можно пользоваться при необходимости управления исходным кодом ПО или другим контентом, при хранении которого требуется поддерживать версионность. Кроме того, были представлены команды git add, git commit, git push и git remote и показаны простые примеры их использования.
Прочтите наше руководство о том, как подобрать оптимальную систему репозиториев кода для своей команды.
Как создать новый репозиторий в Git. Создание локально и удаленного репозитория
В данной статье мы рассмотрим, как создать новый пустой Git репозиторий. Мы создадим локальный репозиторий, а также рассмотрим, как создать удаленный репозиторий на примере Github.
Как создать новый пустой репозиторий
Создайте пустую директорию для вашего будущего репозитория и перейдите в нее:
mkdir myproject
cd myproject
Теперь, чтобы создать в нашей директории новый репозиторий, выполните команду:
git init
В результате будет создан новый локальный пустой репозиторий. На экран будет выведено сообщение вида:
Initialized empty Git repository in /path/to/myproject/.git/
В директории myproject появится скрытая папка .git. Ее можно увидеть, выполнив команду ls -al
Как создать репозиторий из существующих файлов
Предположим, что у вас уже есть какой-то проект, для которого вы хотите создать Git репозиторий. Создание репозитория выполняется точно также, как описано выше. Перейдите в папку проекта:
cd myproject
Создайте репозиторий:
git init
Теперь можно добавить все файлы в индекс и сделать первый коммит:
git add -A
git commit -m "First commit."
Как создать удаленный репозиторий (на примере Github)
Вы создали локальный репозиторий, теперь, например, вам нужно добавить его на Github, тем самым вы фактически создадите удаленный репозиторий.
Перейдите на https://githib.com и войдите в свой аккаунт. Нажмите кнопку New repository (Новый репозиторий). На открывшейся странице введите имя репозитория (Repository name) и нажмите кнопку Create repository.
В своем локальном репозитории теперь выполните команду:
git remote add origin https://github.com/username/myproject.git
Данная команда добавит удаленный репозиторий с именем origin, который указывает на ваш Github-репозиторий. Пока мы только добавили запись об удаленном репозитории.
Теперь можно выполнить команду git push, чтобы отправить все ваши изменения на удаленный репозиторий:
git push -u origin master
Вам нужно будет ввести логин и пароль аккаунта в Github. Результат команды будет примерно следующим:
$ git push -u origin master
Username for 'https://github.com': [email protected]
Password for 'https://[email protected]@github.com':
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 252 bytes | 252.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'master' on GitHub by visiting:
remote: https://github.com/username/myproject/pull/new/master
remote:
To https://github.com/username/myproject.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
В команде git push мы использовали ключ -u. Данный ключ используется для того, чтобы связать локальную ветку master с удаленной origin/master (в нашем случае удаленной ветки не существовало, она автоматически была создана). Так как связь установлена, то последующие выполнения git push из ветки мастер можно выполнять без указания веток. То есть вместо git push origin master), можно просто выполнять команду git push.
руководство для желающих стать профессионалами
Git — абсолютный лидер по популярности среди современных систем управления версиями. Это развитый проект с активной поддержкой и открытым исходным кодом. Система Git была изначально разработана в 2005 году Линусом Торвальдсом — создателем ядра операционной системы Linux. Git применяется для управления версиями в рамках колоссального количества проектов по разработке ПО, как коммерческих, так и с открытым исходным кодом. Система используется множеством профессиональных разработчиков программного обеспечения. Она превосходно работает под управлением различных операционных систем и может применяться со множеством интегрированных сред разработки (IDE).
Git — система управления версиями с распределенной архитектурой. В отличие от некогда популярных систем вроде CVS и Subversion (SVN), где полная история версий проекта доступна лишь в одном месте, в Git каждая рабочая копия кода сама по себе является репозиторием. Это позволяет всем разработчикам хранить историю изменений в полном объеме.
Разработка в Git ориентирована на обеспечение высокой производительности, безопасности и гибкости распределенной системы.
Производительность
Git показывает очень высокую производительность в сравнении со множеством альтернатив. Это возможно благодаря оптимизации процедур фиксации коммитов, создания веток, слияния и сравнения предыдущих версий. Алгоритмы Git разработаны с учетом глубокого знания атрибутов, характерных для реальных деревьев файлов исходного кода, а также типичной динамики их изменений и последовательностей доступа.
Некоторые системы управления версиями руководствуются именами файлов при работе с деревом файлов и ведении истории версий. Вместо обработки названий система Git анализирует содержимое. Это важно, поскольку файлы исходного кода часто переименовывают, разделяют и меняют местами. Объектные файлы репозитория Git формируются с помощью дельта‑кодирования (фиксации отличий содержимого) и компрессии. Кроме того, такие файлы в чистом виде хранят объекты с содержимым каталога и метаданными версий.
Вместе с тем распределенная архитектура системы сама по себе обеспечивает существенный прирост производительности.
Рассмотрим пример: разработчик Элис меняет исходный код. Она добавляет функцию для будущей версии 2.0, после чего делает коммит и сопровождает изменения описанием. Затем она разрабатывает другую функцию и делает еще один коммит. Разумеется, эти изменения сохраняются в истории в виде отдельных рабочих элементов. Затем Элис переключается на ветку, соответствующую версии 1.3 того же ПО — так она сможет исправить баг, затрагивающий эту конкретную версию. Это нужно, чтобы команда Элис могла выпустить версию 1.3.1 с исправлениями до завершения работы над версией 2.0. Затем Элис вернется к ветке для версии 2.0 и продолжит работу над соответствующими функциями. Все перечисленные действия можно выполнить без доступа к сети, поэтому система Git отличается быстротой и надежностью, даже если работать в самолете. Когда Элис будет готова отправить все внесенные изменения в удаленный репозиторий, ей останется лишь выполнить команду push.
Безопасность
При разработке в Git прежде всего обеспечивается целостность исходного кода под управлением системы. Содержимое файлов, а также объекты репозитория, фиксирующие взаимосвязи между файлами, каталогами, версиями, тегами и коммитами, защищены при помощи криптографически стойкого алгоритма хеширования SHA1. Он защищает код и историю изменений от случайных и злонамеренных модификаций, а также позволяет проследить историю в полном объеме.
Использование Git гарантирует подлинность истории изменений исходного кода.
В некоторых других системах управления версиями отсутствует защита от тайного внесения изменений. Это может стать серьезной угрозой информационной безопасности в любой организации, занимающейся разработкой ПО.
Гибкость
Гибкость — одна из основных характеристик Git. Она проявляется в поддержке различных нелинейных циклов разработки, эффективности использования с малыми и крупными проектами, а также совместимости со многими системами и протоколами.
В отличие от SVN, система Git рассчитана прежде всего на создание веток и использование тегов. Поэтому процедуры с участием веток и тегов (например, объединение и возврат к предыдущей версии) сохраняются в истории изменений. Не все системы управления версиями обладают настолько широкими возможностями отслеживания.
Контроль версий с помощью Git
Git — это лучшее решение для большинства команд разработки ПО. Разумеется, оценку следует проводить с учетом конкретных требований. Мы лишь хотим перечислить основные причины, по которым команды предпочитают использовать Git.
Превосходные характеристики
Функциональность, производительность, безопасность и гибкость Git удовлетворяют требованиям большинства команд и разработчиков. Эти качества системы подробно описаны выше. При сравнении системы с большинством альтернатив многие команды приходят к выводу, что Git обладает значительными преимуществами.
Git — признанный стандарт
Git является самым популярным инструментом своего класса, и его привлекательность обусловлена рядом причин. В Atlassian управление исходным кодом практически всех проектов осуществляется в Git.
Великое множество профессиональных разработчиков уже получили опыт использования Git, а выпускники высших учебных заведений зачастую знакомы только с этой системой. В некоторых организациях работникам требуется обучение при переходе на Git с других систем управления версиями, однако многие разработчики (как штатные, так будущие сотрудники) уже обладают необходимыми знаниями.
Однако привлекательность Git обусловлена не только высокой популярностью среди разработчиков. В системе также предусмотрена интеграция различных инструментов и сервисов, включая интегрированные среды разработки и собственные инструменты Atlassian. В число последних входит клиент распределенной системы управления версиями для компьютера Sourcetree, система отслеживания проблем и проектов Jira, а также сервис размещения кода Bitbucket.
Начинающим разработчикам, которые хотят приобрести ценные навыки работы с инструментами разработки ПО, следует изучить Git как одну из систем управления версиями.
Git — это качественный проект с открытым кодом
Проект Git имеет открытый исходный код, а также активно поддерживается и непрерывно развивается уже более 10 лет. Кураторы проекта продемонстрировали взвешенный и продуманный подход к выполнению требований пользователей, регулярно выпуская релизы для повышения удобства и расширения функциональных возможностей системы. Качество ПО с открытым исходным кодом легко проверяется, и многие организации всецело доверяют таким продуктам.
Вокруг Git сформировалось многочисленное сообщество пользователей, а сам проект получает активную поддержку со стороны сообщества. Система обладает подробной и качественной документацией: всем желающим в числе прочего доступны книги, учебные руководства, специализированные веб‑сайты, подкасты и обучающие видеоролики.
Git — это система с открытым исходным кодом, поэтому разработчики‑любители могут пользоваться ей совершенно бесплатно. В сфере разработки ПО с открытым исходным кодом Git определенно выступает главным преемником успешных систем управления версиями предыдущих поколений, таких как SVN и CVS.
Критика Git
Git нередко критикуют за сложность освоения: одни термины могут быть незнакомы новичкам, а другие — иметь иное значение. Так, понятие revert
(возврат к предыдущей версии) в Git имеет другой смысл, нежели в SVN и CVS. Тем не менее Git — очень мощная система, предлагающая пользователям широкие возможности. Их изучение займет какое‑то время, однако усвоенные навыки помогут участникам команды работать намного быстрее.
Команды, перешедшие на Git с нераспределенной системы управления версиями, могут захотеть и дальше пользоваться центральным репозиторием. Несмотря на распределенную архитектуру, Git допускает возможность создания классического репозитория, где сохраняются все изменения проекта. При этом в Git продуктивность разработчиков не зависит от доступности и производительности «центрального» сервера. Каждому пользователю доступна полная копия репозитория, в которой он может просматривать всю историю проекта даже в периоды отсутствия соединения с сетью и перебоев в системе. Распределенная архитектура и гибкость Git позволяют участникам проекта работать в удобном ритме и пользоваться уникальными преимуществами, о которых они могли не подозревать раньше.
Теперь вы разобрались в основах управления версиями, получили представление о Git и узнали, почему командам разработки ПО стоит пользоваться этой системой. Теперь можно перейти к изучению преимуществ, которые Git может предоставить в масштабах организации.
Git и публикация сайта / Хабр
При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.
Я потратил несколько месяцев на борьбу с глюками Git-svn и обдумывание разных вариантов, прежде чем пришёл к этому методу организации рабочего процесса с сайтом — простому, гибкому и удобному в работе.
Основные преимущества:
- Делая push из удалённой копии мы автоматически обновляем live-копию сайта
- Правки файлов на сервере не будут разрушать историю коммитов
- Простота, не нужны особые правила выполнения коммитов
- Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
Обзор
Главная идея системы — создение на сервере двух репозиториев: пустого bare-репозитория и обычного репозитория с рабочей копией сайта. Эта пара связана парой простых хуков, которые автоматизируют push и pull изменений.
Итак, два репозитория:
- Hub — bare-репозиторий. Все репозитории разработчиков клонируются именно от него.
- Prime — обычный репозиторий. Сайт запускается из рабочего каталога этого репозитория.
Работа с двумя репозиториями простая и очень гибкая. Удалённые копии, имеющие ssh-доступ могут легко обновлять live-версию сайта просто выполнив push в Hub-репозиторий. Любые изменения, выполненные в live-версии на сервере мгновенно вливаются в Hub при коммите. В общем, всё работает очень просто — и неважно, где делаются изменения.
Небольшие приготовления перед стартом
Естественно, в первую очередь нужно, что бы Git был установлен на сервере и на всех компах разработчиков. Если на вашем shared-хостинге не установлен Git — вы очень легко можете это исправить (en).
Если вы первый раз работаете с Git на своём сервере, не забудьте указать глобальные настройки. Я указываю особое значения для user.name, чтобы потом видеть в истории проекта изменения, выполненные на сервере:
$ git config --global user.name "Джо, фигачу на сервере"
Поехали!
В первую очередь создадим новый git-репозиторий в live-каталоге нашего сайта, а затем добавим и зафиксируем все файлы сайта. Это будет Prime-репозиторий и рабочая копия. Даже если уже есть история проекта в других местах, содержимое сайта будет базовой точкой, в которую потом будут слиты все остальные копии.
$ cd ~/www
$ git init
$ git add .
$ git commit -m "Импорт всех существующих файлов сайта"
Поскольку мы сделали инициализацию репозитория в рабочей копии – нет нужды отключать сайт на обслуживание и повторно выкладывать все файлы, Git просто содаст репозиторий из имеющихся файлов.
Теперь, когда наш сайт уже находится в Git, создадим bare-репозиторий где-нибудь вне рабочего каталога сайта.
$ cd
$ mkdir site_hub.git
$ cd site_hub.git
$ git --bare init
Initialized empty Git repository in /home/joe/site_hub.git
Ура! Снова вернёмся в рабочий каталог сайта и добавим Hub как удалённый репозиторий, а затем вольём в Hub содержимое ветки master из Prime-репозитория.
$ cd ~/www
$ git remote add hub ~/site_hub.git
$ git remote show hub
* remote hub
URL: /home/joe/site_hub.git
$ git push hub master
Хуки
Как я уже упоминал в начале, Hub и Prime синхронизируются между собой, используя два простых скрипта.
Одно из основных правил при работе с Git — никогда не делайте push в репозтирий, у которого есть рабочая копия. Мы следуем этому правилу и создали репозиторий «Hub». Вместо того, чтобы делать push из Hub, который никак не повлияет на рабочую копию, мы будем использовать хук, который заставит Prime выполнить pull из Hub-репозитория.
Post-update — в Hub-репозитории
Как только в Hub поступит новая порция изменений, сразу будет выполнен этот скрипт. Мы переходим в рабочий каталог Prime-репозитория, и вытягиваем измениния из Hub’а. Проталкивание изменений (push) не изменяет состояния рабочего каталога репозитория, поэтому и нужно делать pull, находясь в рабочем каталоге.
#!/bin/sh
echo
echo "**** Вытягиваем изменения в Prime [Hub's post-update hook]"
echocd $HOME/www || exit
unset GIT_DIR
git pull hub masterexec git update-server-info
Post-commit — в Prime-репозитори
Этот скрипт запускается после каждого коммита в Prime-репозитории и проталкивает изменения в Hub. В идеальном мире, конечно, мы вообще никогда ничего не будем править прямо на сервере. Но в нашем несовершенном мире возможно всё, что угодно, поэтому давайте автоматизируем процесс проталкивания изменений, чтобы не разрушать историю проекта и избежать возможных конфликтов.
#!/bin/sh
echo
echo "**** pushing changes to Hub [Prime's post-commit hook]"
echogit push hub
Итак, используя этот хук, мы сразу же получаем в Hub-репозитория все изменения, выполненные в master-ветке Prime-резпозитория. Прочие ветки также можно клонировать, но они не будут влиять на сайт. Поскольку все удалённые копии получают доступ через SSH-адрес к Hub, то выполнить push и запустить обновление сайта напрямую могут только пользователи, имеющие прямой доступ к shell’у.
Конфликты
«Положить» сайт при такой системе синхронизации двух репозиториев очень сложно. Каждое изменение, сделанное в Prime автоматически попадает в Hub и все конфликты будут сразу видны при попытке выполнить push из клонов репозитория.
Но всё же есть несколько ситуаций, при которых состояние Prime может отличаться от Hub’а, и для исправления ситуации потребуется выполнить несколько дополнительных телодвижений. Если мы что-то правим на Prime и не зафиксировали изменения, а в этот момент сработает post-update в Hub, то все завершится ошибкой с сообщением «Entry ‘foo’ not uptodate. Cannot merge.». Фиксация изменений в рабочем каталоге Prime позволит зачистить его состояние, и post-update хук сможет соединить все неотправленные изменения.
Также я обнаружил, что если конфликт возникает вследствие того, что изменения в Prime не могут быть объединены с Hub’ом, то наилучшим решением будет протолкнуть текущее состояние Prime’а в новую ветку на Hub. Эта команда, выполненная из рабочего каталога Prime создаст удалённую ветку «fixme», основанную на текущем стоянии Prime-репозитория.
$ git push hub master:refs/heads/fixme
Как только изменения окажутся в Hub’е, мы сможем получить ветку в любом из клонов, разрешить конфликт и смержить ветки. Попытка разрешить конфликт прямо на сервере почти наверняка приведёт к проблемам в работе сайте из-за появления маркеров конфликтных областей.
Держим всё в чистоте
Каталог .git Prime-репозитория находится в корневом каталоге сайта, и, верояно, доступен для публичного доступа. Чтобы никто не смог сунуть свой нос, куда не следует, добавьте эти строки в файл .htaccess верхнего уровня:
# deny access to the top-level git repository:
RewriteEngine On
RewriteRule \.git - [F,L]
Прим. переводчика: есть и другие способы закрыть доступ к каталогу на сервере.
Прочие проблемы
Если при попытке выполнить push в репозиторий на сервере вы видите эту ошибку:
git-receive-pack: command not found
fatal: The remote end hung up unexpectedly
В этом случае просто добавьте export PATH=${PATH}:~/bin
в ваш файл .bashrc, лежащий на сервере.
git rebase для начинающих / Хабр
В продолжение статьи на тему что сказать git, чтобы он сделал то, что вам нужно и перед статьей как создать PR в чужой Open Source проект на GitHub думаю стоит полезным рассказать о том, что такое git rebase.
Сам я в этой теме не очень разбираюсь и не люблю ее использовать, по причинам изложенным ниже, поэтому прошу комментировать, дополню по возможности.
Итак git работает с комитами. Каждый комит — набор изменений. У каждого комита есть уникальный hash. Когда происходит слияние веток посредством merge:
# git merge "another_branch"
то все комиты сохраняются — сохраняются комментарии комита, его hash + как правило добавляется еще один искусственный комит. При этом комиты могут чередоваться друг с другом. Это не всегда удобно. Допустим ваш комит решили откатить — выискивать в общем списке где ваш комит, а где не ваш не очень приятно. И вообще — в общей истории хочется видеть действительно важные изменения, а не «ой, я забыл поставить ;». Для того, чтобы несколько комитов склеивать в один можно использовать rebase. Хотя в интерфейсе GitHub есть кнопочка squash & commit — это когда вы создаете pull request (PR) из одной ветки в другую (как правило из вашей рабочей ветки в основную) и после прохождения всех формальностей можно нажать squash & commit, обновить комментарий и ваши изменения появятся в основной ветке как один комит.Другие варианты объединить несколько комитов в одинЯ раньше делал так# git checkout master && git pull && git branch -b <НоваяВетка> && git merge <СтараяВеткаГдеМногоКомитов> --squash
Потом смотрел изменения в IDE, делал предкомитовые review, потом комитил и пушил на сервер.
Из плюсов — можно весь код, все изменения посмотреть в IDE. Иногда бывает удобнее, чем через web UI, который на GitHub.
Осторожно rebase может менять hash комита и приводить к конфликтам слияний, особенно если над одной веткой трудятся несколько человек.
Хочу написать о двух случаях использования rebase:
- Когда изменения включаются из одну ветку в другую не посредством merge, а посредством rebase:
# git rebase "another_branch"
Это позволяет ваши локальные комиты поставить после всех комитов, которые были внесены в ветку «another_branch». Хэши ваших комитов изменятся. - Когда можно руками отредактировать несколько ваших комитов — например склеить их, изменить коментарий:
# git rebase -i {HEAD~_commit_count_|commit_hash}
Примечание: стоит настроить редактор, который будет использоваться git-ом, перед вызовом этой команды. Лично я предпочитаю mcedit.
Итак вы все сделали в своей уютненькой веточки и решили поделиться этим комитом с миром, но мир хочет от вас только один комит. `git rebase -i ` запустит редактор и предложит отредактировать комиты (порядок следования комитов — сверху вниз в отличие от git log). Можно оставить комит как есть, можно изменить комментарий, можно склеить с предыдущим. Как правило ваш первый комит надо оставить как есть, а все остальные изменить наpick "commit_hash" "comment" → fixup "commit_hash" "comment"
.
При этом все комментарии, которые были в fixup комитах потеряются и будет использоваться комментарий от первого комита. Если вам были дороги комментарии, то стоит использовать squash вместо fixup.
Но если процесс разработки был долог, то скорее всего вам приходилось делать merge основной ветки. И все ваши комиты перемешаются с общими комитами и склеивать ваши с не вашими будет задачей непростой. Поэтому перед тем, как делать `git rebase -i <>` стоит сделать `git rebase`. `git rebase` поставит все ваши комиты в конец списка всех комитов (в чем можно убедиться запустив `git log`) и после этого запустиь `git rebase -i <HEAD~Количесво_ваших_комитов>`, во всех строчках кроме первой заменить pick → {fixup|squash} и вуаля — у вас один комит.
Если в процессе редактирования комитов `git rebase -i <>` вы как-то накосячили, то не стоит жать Control+C — exit code выхода из редактора git не волнует. Он просто возьмет файл и сделает все по нему. Просто удалите или закомментируйте все строчки в файле. git поймет, что вы ничего не хотели.
После манипуляций с rebase потребуется push с опцией -F. Все это потому, что мы переписываем меняем историю комитов и git нас об этом честно предупреждает.# git push -f
Пример использования git rebaseВдогонку напишу что у меня получилось. Дано — 2 ветки — master и b1. В процессе работы мы сделали комиты:
Initial commit - ветка master - 2fbbe67
b1.1 - ветка b1 - 85eac43
master after b1.1 - ветка мастер b505f18
b1.2 - ветка b1 - 2d7d4ea
+1 - ветка master - 8dcef6c
Комиты в master и b1 были сделаны независимо. Написал в один список, чтобы был понятен порядок в котором все делалось. Вот список комитов в каждом бранче:
# git checkout master && git log
8dcef6c "+1"
b505f18 "master after b1.1"
2fbbe67 "Initial commit"
# git checkout b1 && git log
2d7d4ea «b1.2»
85eac43 «b1.1»
2fbbe67 «Initial commit»
Делаем git merge master в b1
# git checkout b1 && git merge master && git log
5383781 "Merge branch 'master' into b1"
8dcef6c "+1"
2d7d4ea "b1.2"
b505f18 "master after b1.1"
85eac43 "b1.1"
2fbbe67 "Initial commit"
Добавился новый синтетический комит
Теперь делаем rebase
# git checkout b1 && git rebase master && git log
7f18e47 "b1.2"
6fb80cb "b1.1"
8dcef6c "+1"
b505f18 "master after b1.1"
2fbbe67 "Initial commit"
Обратите внимание — наши локальные комиты встали в конец списка, номера комитов изменились, синтетический комит исчез.
Ну и напоследок склеиваем наши комиты в один
# git rebase -i HEAD~2
Файл было
pick 6fb80cb b1.1
pick 7f18e47 b1.2
Файл стало после нашего редактирования
pick 6fb80cb b1.1
fixup 7f18e47 b1.2
Получилось
# git checkout b1 && git log
9062cd7 "b1.1"
8dcef6c "+1"
b505f18 "master after b1.1"
2fbbe67 "Initial commit"
Такие дела
Введение в GitHub. Работа с удаленным репозиторием
В уроке вы познакомитесь с GitHub, узнаете что это такое и за какие функции он отвечает. Также вы познакомитесь с удаленными репозиториями и научитесь с ними работать.
Полезные ссылки:
- Официальный сайт GitHub;
- Синтаксис Markdown.
Коммит, созданный нами, хранится в репозитарии, привязанном к конкретной папке на нашем компьютере, т.е. является локальным. Это полезно, если мы работаем над проектом самостоятельно. Однако в большинстве случаев возникает необходимость обеспечить доступ к результатам работы или доставить код на сервер, где он будет выполняться.
- Как подключиться к удаленному репозитарию?
Для загрузки данных в удаленный репозитарию сначала нужно к нему подключиться. В нашем примере мы используем адрес https://github.com/tutorialzine/awesome-project, однако пользователь может создать собственный удаленный репозитарий на GitHub, BitBucket или другом подобном сервисе. Это занимает некоторое время, однако в дальнейшем полностью себя оправдывает, тем более, что подобные службы имеют пошаговые инструкции для правильно выполнения нужных действий.
Для того, чтобы связать созданный нами локальный репозитарий с удаленным, выполним такую команду:
# This is only an example. Replace the URI with your own repository address.
$ git remote add origin https://github.com/tutorialzine/awesome-project.git
Первая строка напоминает нам, что URI репозитария, который приведен в примере, нужно изменить на свой.
Иногда бывает так, что проект имеет несколько удаленных репозитариев – в таком случае каждому из них присваивается собственное имя. Главный репозитарий принято называть origin.
- Как отправить изменения в удаленный репозитарий?
Теперь, когда у нас в локальном репозитарии создан коммит и мы подключились к удаленному, можем отправить его на сервер. Мы это будем делать каждый раз, когда хотим обновить данные в удаленном репозитарии.
Отправка коммита осуществляется с помощью команды push, которая имеет два параметра — имя удаленного репозитория (в нашем случае origin) и ветку, в которую необходимо внести изменения (master — это ветка по умолчанию для всех репозиториев).
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/tutorialzine/awesome-project.git
* [new branch] master -> master
Если мы все сделали правильно, то отправленный файл hello.txt на удаленном сервере мы можем увидеть с помощью браузера. Важный момент – некоторые сервисы для отправки изменений могут требовать дополнительной аутентификации.
- Как клонировать удаленный репозитарий?
Если у других пользователей возникла необходимость клонировать удаленный репозитарий, они могут получить полностью работоспособную копию при помощи команды clone:
$ git clone https://github.com/tutorialzine/awesome-project.git
GitHub автоматически создаст новый локальный репозитарий в виде удаленного на собственном сервере.
- Как запросить изменения с удаленного репозитария?
В случае, если другим пользователям нет необходимости делать клон удаленного репозитария, а нужно просто получить информацию об изменениях, это можно сделать с помощью команды pull:
$ git pull origin master
From https://github.com/tutorialzine/awesome-project
* branch master -> FETCH_HEAD
Already up-to-date.
Она скачивает новые изменения. Так как мы ничего нового не вносили с тех пор, как клонировали проект, изменений, доступных к скачиванию, нет.
О репозиториях — GitHub Docs
Документы GitHub
Все продукты
- GitHub.com
Начиная
- Быстрый старт
- Настроить Git
- Создать репо
- Форк репо
- Быть социальным
- Изучение GitHub
- Продукты GitHub
- Изучение выпусков раннего доступа с предварительным просмотром функций
- Типы аккаунтов GitHub
- Часто задаваемые вопросы об изменениях в планах GitHub
- Интерфейс командной строки GitHub
- GitHub Desktop
- GitHub для мобильных устройств
- Разрешения на доступ на GitHub
- Глоссарий GitHub
- Шпаргалка по Git
- Учебные ресурсы Git и GitHub
- Регистрация на GitHub
- Регистрация новой учетной записи GitHub
- Быстрый старт
.
репозиториев | Руководство разработчика GitHub
Репозитории | Руководство разработчика GitHub
Контент на этом сайте может быть устаревшим. Для получения наиболее точного и актуального содержания посетите docs.github.com.
Мы объединили всю документацию по продукту GitHub в одном месте! Ознакомьтесь с новыми местоположениями REST API, GraphQL API и разработчиков.
Узнайте больше в блоге GitHub.
Навигация по документации… Обзор API
Типы мультимедиа API авторизации OAuthДругие методы аутентификацииУстранение неполадокПредварительный просмотр APIВерсииОбзор активности
СобытияТипы событий и полезные данныеFeedsNotificationsStarringWatchingChecks
Проверка RunsCheck SuitesCode ScanningGists обзор
Обзор данных Git
BlobsCommitReferencesTagsTreesGitHub Действия Обзор
АртефактыСекретыСаморазмещаемые бегуныРабочие процессыЗадания рабочего процессаЗапуски рабочего процессаОбзор приложений GitHub
API приложений OAuthУстановкиПреступленияДоступные конечные точкиGitHub MarketplaceВзаимодействия
Организация Репозиторий Обзор вопросов
ПравопреемникиКомментарииСобытияМеткиЭкспериментыВременаВыпуск Типы событийОбзор миграции
ОрганизацияИмпорт источниковПользовательРазное обзор
Кодексы поведенияEmojisGitignoreЛицензииMarkdownMetaRate LimitОбзор организаций
Блокирование пользователей (организаций), участников, сторонних сотрудников, веб-перехватчиков, обзор проектов
КартыСотрудникиСтолбцыОбзор запросов на извлечение
ОтзывыReview CommentsReview RequestsReactions overview
Фиксировать комментарийВыпустить комментарийПросмотр на рассылку КомментарийОбсуждение командыОбсуждение команды КомментарийОбзор репозиториев
ФилиалыСотрудникиКомментарииСообществоСодержимоеРазвертывание ключейРазвертыванияВилкиИнвитацияСлияниеСтраницРелизыСтатистикаСтатусыТрафикВеб-хукиПоиск обзор
RepositoriesCodeCommitIssuesUsersTopicsText match metadataTeams
ОбсужденияКомментарии к обсуждениюУчастникиСинхронизация командыSCIM
Обзор пользователей
Блокировка пользователейEmailsFollowersGit SSH KeysGPG Keys
.
Классификация вашего репозитория по темам
Документы GitHub
Все продукты
- GitHub.com
Начиная
- Быстрый старт
- Настроить Git
- Создать репо
- Форк репо
- Быть социальным
- Изучение GitHub
- Продукты GitHub
- Изучение выпусков раннего доступа с предварительным просмотром функций
- Типы аккаунтов GitHub
- Часто задаваемые вопросы об изменениях в планах GitHub
- Интерфейс командной строки GitHub
- GitHub Desktop
- GitHub для мобильных устройств
- Разрешения на доступ на GitHub
- Глоссарий GitHub
- Шпаргалка по Git
- Учебные ресурсы Git и GitHub
- Регистрация на GitHub
- Регистрация новой учетной записи GitHub
- Быстрый старт
.
Создание репозитория на GitHub
Документы GitHub
Все продукты
- GitHub.com
Начиная
- Быстрый старт
- Настроить Git
- Создать репо
- Форк репо
- Быть социальным
- Изучение GitHub
- Продукты GitHub
- Изучение выпусков раннего доступа с предварительным просмотром функций
- Типы аккаунтов GitHub
- Часто задаваемые вопросы об изменениях в планах GitHub
- Интерфейс командной строки GitHub
- GitHub Desktop
- GitHub для мобильных устройств
- Разрешения на доступ на GitHub
- Глоссарий GitHub
- Шпаргалка по Git
- Учебные ресурсы Git и GitHub
- Регистрация на GitHub
- Регистрация новой учетной записи GitHub
- В
- Быстрый старт
.