Как проинициализировать больше чем 1 проект git?
Вопрос, я уверен, глупый и ламерский, но с git я работаю впервые. Директория инициализируется с помощью git init, это понятно. Но когда я хочу еще какую-то директорию инициализировать, он пишет, мол, переинициализирую на текущую директорию. А если у меня несколько проектов? Не держать же все в одной папке?

sudoLife
05.10.17 19:53:59 MSK
Вопрос по-нормальному сформулируйте.
RazrFalcon ★★★★★
( 05.10.17 20:00:13 MSK )

Давно не пользовался svn но кажется он оставлял хвосты в каждой папке, от этого наверное и вопрос. git init инициализируется в корне вашего проекта, команда выполняется один единственный раз на проект. 10 проектов — 10 репозитариев — 10 git init.
Aber ★★★★★
( 05.10.17 20:04:30 MSK )
Ответ на: комментарий от Aber 05.10.17 20:04:30 MSK

вот что он писал:
переинициализирован существующий репозиторий git
Хорошо, один раз на проект, хорошо, пусть всего может быть 10 проектов. Но 10 раз git init я точно не выполнял. А что за пресловутые «хвосты»?
sudoLife
( 05.10.17 20:15:20 MSK ) автор топика
Ответ на: комментарий от sudoLife 05.10.17 20:15:20 MSK

У меня сбой хрустального шара. Пиши подробно все свои действия.
.svn в каждой папке
Aber ★★★★★
( 05.10.17 20:23:44 MSK )
Ты хочешь git subtree/git submodule? Тебе это не нужно.
Но когда я хочу еще какую-то директорию инициализировать, он пишет, мол, переинициализирую на текущую директорию.
Зачем ты делаешь это во вложенных друг в друга директориях?
x3al ★★★★★
( 05.10.17 20:25:28 MSK )
Держи яйца в трусах, но в разных отсеках мошенки.
AUX ★★★
( 05.10.17 20:29:31 MSK )
Ответ на: комментарий от x3al 05.10.17 20:25:28 MSK

Так, хорошо. Смотрите.
Первый раз давным давно я сделал git init на какую-то директорию давным-давно. Просто учился, пробовал. Потом забыл про это.
Теперь ввожу git init в совсем другой директории, которая никак не связана с предыдущей. Message, мной получаемый, выше написал. А вопрос такой: можно ли иметь несколько директорий, которые контролируются git’ом (никак не связанные друг с другом и не вложенные)? Если да, то как?
sudoLife
( 05.10.17 21:12:19 MSK ) автор топика
Ответ на: комментарий от sudoLife 05.10.17 21:12:19 MSK

которая никак не связана с предыдущей
Значит там уже был репозиторий (каталог/файл .git ), отсюда и недопонимание. Проблем с множеством репозиторием никаких нет, хоть в каждом каталоге их можно создавать.
xaizek ★★★★★
( 05.10.17 21:17:43 MSK )
Ответ на: комментарий от xaizek 05.10.17 21:17:43 MSK

А вот сейчас попробовал создать в почти пустой папке, все хорошо вышло! Благодарствую! А чтобы директория перестала быть репозиторием, нужно просто удалить .git папку?
sudoLife
( 05.10.17 21:23:53 MSK ) автор топика
Ответ на: комментарий от sudoLife 05.10.17 21:23:53 MSK

А чтобы директория перестала быть репозиторием, нужно просто удалить .git папку?
Работа с Git через консоль
Задача: форкнуть репозиторий в GitHub, создать ветку и работать с кодом.

Сразу появляется много вопросов — что такое GitHub, какие для этого нужны команды, зачем, а главное, как всем этим пользоваться? Давайте разберёмся.
Когда мы пишем код, мы постоянно туда что-то добавляем, удаляем, и иногда всё может ломаться. Поэтому перед любыми изменениями стоит сделать копию проекта. Если собирать проекты в папки с именами проект1 , проект1_финал и проект2_доделка , вы быстро запутаетесь и точно что-нибудь потеряете. Поэтому для работы с кодом используют системы контроля версий.
Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения. Таких систем много и все они работают по принципу компьютерной игры, где вы можете вернуться к месту сохранения, если что-то пошло не так.
Git — самая популярная система контроля версий. С Git можно работать через командную строку (или терминал). В каждой системе своя встроенная программа для работы с командной строкой. В Windows это PowerShell или cmd, а в Linux или macOS — Terminal. Вместо встроенных программ можно использовать любую другую — например, Git Bash в Windows или iTerm2 для macOS.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё — например, пароль. Поэтому большая часть этой инструкции состоит из команд для терминала. Сначала будет непривычно, но вам понравится.
Но давайте по порядку — установим Git на компьютер.
Устанавливаем и настраиваем Git
Windows. Скачайте Git для Windows, запустите exe-файл, следуйте инструкциям.
macOS. Скачайте Git для macOS и запустите dmg-файл. Если он не запускается, зайдите в Системные настройки — Безопасность и нажмите кнопку Open anyway (Всё равно открыть).
Linux. Установите Git через встроенный менеджер пакетов. Если у вас Ubuntu, используйте команду sudo apt-get install git . Команды для других дистрибутивов можно посмотреть здесь.
Как проверить, что Git установился
Откройте терминал и введите команду
git --version
Если Git установлен, то вы увидите номер версии, например, 2.35.1 .
Настраиваем Git
Теперь нужно ввести имя и адрес электронной почты, чтобы ваши действия в Git были подписаны, а ещё для привязки к GitHub.
Добавить имя (введите его внутри кавычек):
git config --global user.name "ваше имя"
Добавить электронную почту (замените email@example.com на вашу почту):
git config --global user.email email@example.com
Опция —global значит, что имя и почта будут использоваться для всех ваших действий в Git. Если вы хотите менять эту информацию для разных проектов, то вводите эти же команды, только без опции —global .
Регистрируемся на GitHub
GitHub (или Гитхаб) — веб-сервис на основе Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
Профиль на Гитхабе и все проекты в нём — ваше публичное портфолио разработчика, поэтому нужно завести профиль, если у вас его ещё нет.
- Зайдите на сайт https://github.com и нажмите кнопку Sign up.
- Введите имя пользователя (понадобится в дальнейшей работе), адрес электронной почты (такой же, как при настройке Git) и пароль.
- На почту придёт код активации — введите на сайте.
- Появится окно с выбором тарифного плана. Если вы пользуетесь Гитхабом для учёбы, то укажите, что профиль нужен только для вас и вы студент.
- Опросы и выбор интересов можно пропустить.
На этом всё — вы зарегистрировались и у вас есть собственный профиль.
Устанавливаем SSH-ключи
Чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер вас узнавал. Для этого используются SSH-ключи.
SSH — протокол для безопасного соединения между компьютерами.
SSH-ключ состоит из двух частей — открытого и закрытого ключа. Открытый ключ мы отправляем на сервер. Его можно не прятать от всех и не переживать, что кто-то его украдёт, потому что без закрытого ключа он бесполезен. А вот закрытый ключ — секретная часть, доступ к нему должен быть только у вас. Это важно.
Мы будем подключаться к GitHub по SSH. Это работает так:
- Вы отправляете какую-то информацию на GitHub, который знает ваш открытый ключ.
- GitHub по открытому ключу понимает, что вы это вы, и отправляет что-то в ответ.
- Только вы можете расшифровать этот ответ, потому что только у вас есть подходящий закрытый ключ.
А чтобы подключиться к GitHub с помощью SSH-ключа, сначала нужно его создать.
Проверяем SSH-ключи
Перед созданием нового SSH-ключа проверим, есть ли на компьютере другие ключи. Обычно они лежат в папке с названием .ssh — поэтому посмотрим, есть ли в ней что-то, с помощью команды в терминале:
ls -al ~/.ssh
Если у вас уже есть SSH-ключ, то в списке будут файлы с именами вроде id_rsa.pub , id_ecdsa.pub или id_ed25519.pub . А если терминал ругается, что директории ~/.ssh не существует, значит, у вас нет SSH-ключей. Давайте это исправим.
Создаём новый SSH-ключ
Откройте терминал и скопируйте туда эту команду. Не забудьте подставить в кавычки почту, на которую вы регистрировались на Гитхабе.
ssh-keygen -t ed25519 -C "your_email@example.com"
ed25519 — это алгоритм для генерации ключей. Если ваша система не поддерживает алгоритм ed25519 (и вы увидели ошибку), используйте немного другую команду с алгоритмом rsa :
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Терминал спросит, куда сохранить ключ. Если не хотите менять имя файла, которое предлагает терминал, просто нажмите Enter.
> Generating public/private имя-ключа key pair. > Enter a file in which to save the key (/c/Users/ваш-профиль/.ssh/id_имя-ключа):*[Press enter]*
Теперь нужно добавить пароль, которым будет зашифрован ваш ключ. Это стоит сделать, иначе в дальнейшем могут быть проблемы с настройкой, да и так просто безопаснее.
В результате создаётся новый SSH-ключ, привязанный к вашей электронной почте.
Создание ключа по шагам:

Добавляем SSH-ключ в ssh-agent
ssh-agent — программа для хранения и управления SSH-ключами. Давайте запустим её и добавим туда наш SSH-ключ. Запускаем командой eval «$(ssh-agent -s)» :
eval "$(ssh-agent -s)"
Если в ответ терминал покажет надпись «Agent pid» и число — значит, всё ок, агент запущен.
Теперь добавим наш ключ командой.
ssh-add ~/.ssh/id_ed25519
Если у вашего ключа другое имя, замените название id_ed25519 именем файла с ключом (это правило применяется и дальше в инструкции). Если вы устанавливали пароль на ключ, введите его два раза после ввода команды ssh-add (терминал подскажет, когда это сделать).
Теперь, если всё хорошо, появится надпись Identity added — значит, можно переходить к добавлению ключа на GitHub.
Копируем SSH-ключ
Чтобы добавить ключ на GitHub, нужно сначала его скопировать из вашего файла командой clip . Вы не увидите ключ на экране, но он появится в буфере обмена, и его можно будет вставить на Гитхаб.
clip < ~/.ssh/id_ed25519.pub
Команда clip может не сработать на вашем компьютере, тогда есть два способа узнать ключ — простой и сложный.
Сложный способ. Найдите скрытую папку .ssh , откройте файл id_ed25519.pub в текстовом редакторе и скопируйте его содержимое.
Простой способ. Введите команду ниже и ключ появится прямо в терминале — его нужно вручную скопировать в буфер обмена. Ключ начинается с ssh-ed22519 или ssh-rsa (или похожей строки) — поэтому копируйте строку прямо с самого начала.
~ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaCZvnr4ax+Fr shklyar@htmlacademy.ru
Не копируйте этот ключ из статьи — он уже не работает.
Добавляем SSH-ключ на GitHub
Это нужно сделать, чтобы GitHub вас узнавал.
Перейдите на страницу для работы с ключами в вашем профиле на GitHub и нажмите кнопку New SSH key.

В поле Title нужно добавить название нового ключа. Например, если вы используете Mac, вы можете назвать ключ MacBook Air, или, если ключ для курсов Академии, то Academy. А ключ, который вы скопировали на прошлом шаге, вставьте в поле Key.

Не копируйте ключ со скриншота — он уже не работает.
Теперь нажмите кнопку Add SSH key и, если потребуется, введите свой пароль от GitHub, чтобы подтвердить сохранение. Если всё сделано верно, новый ключ появится в списке на странице https://github.com/settings/keys.

Теперь мы можем поработать с проектом в репозитории.
Что такое репозиторий
Репозиторий — папка с файлами вашего проекта на сервере GitHub. Так вы можете работать с проектом откуда угодно, не переживая, что какие-то файлы потеряются — все данные останутся в репозитории.
Если над проектом работает несколько программистов, сначала создаётся мастер-репозиторий — это общий репозиторий с рабочей версией проекта. А каждый программист работает с форком — то есть полной копией мастер-репозитория. В форке вы можете безнаказанно менять код и не бояться что-то сломать в основной версии проекта.
Делаем форк мастер-репозитория
Заходим в нужный репозиторий и нажимаем на «вилку» с надписью fork.

Появится окно Create a new fork — проверьте, что он называется так, как вам нужно, и жмите кнопку Create fork. Через пару секунд всё готово.

Клонируем форк на компьютер — git clone
Клонировать форк — значит скачать его, чтобы работать с кодом на своём компьютере. Тут нам и пригодится SSH.
Открываем терминал и переходим в папку с будущим проектом — для этого используем команду cd your-project . Если вы хотите, чтобы проект лежал в папке device , введите
cd device
Если такой папки на компьютере нет, то сначала введите md your-project , чтобы создать эту папку, а затем cd your-project . Когда перейдёте в папку, введите команду git clone для клонирования репозитория:
git clone git@github.com:your-nickname/your-project.git
Замените your-nickname на ваше имя пользователя на GitHub, а your-project на название проекта. Проще всего их найти прямо наверху страницы репозитория.
Если вы правильно настроили SSH-ключи, Git скопирует репозиторий на ваш компьютер.
➜ device git clone git@github.com:academy-student/1173761-device-34.git Клонирование в «1173761-device-34»… remote: Enumerating objects: 15, done. remote: Counting objects: 100% (15/15), done. remote: Compressing objects: 100% (14/14), done. remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0 Получение объектов: 100% (15/15), 145.07 КиБ | 900.00 КиБ/с, готово.
Если вы видите ошибку Error: Permission denied (publickey) , скорее всего, вы ошиблись в настройке SSH-ключа. Вернитесь в этот раздел инструкции и повторите процесс настройки.
Кстати, если вы хотите, чтобы название папки с проектом у вас на компьютере отличалось от имени репозитория, можете дополнить команду клонирования, добавив в конце другое название:
git clone git@github.com:_your-nickname_/_your-project_.git folder_name
Теперь на вашем компьютере в папке your_project или в той, название которой вы указали, находится полная копия репозитория c GitHub.
В каждом репозитории есть как минимум одна основная ветка, которую создаёт сам Git — она называется master . Обычно в ней хранят проверенную версию программы без ошибок.
А если вы хотите исправить ошибку в коде или добавить что-то в проект, но не хотите сломать код в основной ветке, нужно создать новую ветку из master и работать из неё. Каждая ветка — что-то вроде второстепенной дороги, которая затем снова соединится с основной.
Создаём новую ветку — git branch
Откройте терминал и введите команду
git branch
Она показывает список веток, с которыми мы работаем в проекте, и выделяет текущую. Если мы находимся в master , то создаём новую ветку командой
git checkout -b имя-новой-ветки.
➜ 1173761-device-34 git:(master) git checkout -b task1 Переключено на новую ветку «task1» ➜ 1173761-device-34 git:(task1)
Если текущая ветка не master , переключитесь на неё с помощью команды checkout . После git checkout надо указать название нужной ветки.
git checkout master
Мы делаем это, чтобы новая ветка содержала свежую рабочую версию проекта. Если вы ошиблись в названии, например, допустили опечатку, вы можете изменить название ветки с помощью команды:
git branch -m старое-имя-ветки новое-имя-ветки.
Сохраняем изменения — git add
После того, как вы создали ветку и поработали в ней у себя на компьютере, нужно сохранить результат, чтобы появился в репозитории и не пропал.
Если вы хотите сохранить изменения не во всех файлах, для начала введите команду git status . Она покажет текущее состояние в вашей ветке, а именно список с названиями изменённых файлов, если они есть, и укажет на те, которые ожидают записи и сохранения (обычно они выделены красным цветом).

Чтобы сохранить все изменения разом, используйте команду
git add -A
Чтобы сохранить изменения только отдельных файлов, укажите их имена вручную. Например, если вы изменили файл index.html , введите
git add index.html
Если название очень длинное, вы начните его писать, нажмите Tab и терминал сам предложит продолжение пути к файлу.
Делаем коммит — git commit
Сделать коммит — значит зафиксировать все сохранённые изменения и дать им название. Это делается с помощью команды commit
git commit -m "ваше сообщение"
Текст сообщения должен быть лаконичным и вместе с этим сообщать о том, что делает коммит (внесённые изменения). Например,

- Добавляет имя наставника в Readme
- Вводит функцию сортировки изображений
- Правит ошибку в поиске городов на карте
Отправляем изменения на GitHub — git push
Сохранённые изменения пока не видны коллегам, потому что находятся в нашем локальном репозитории. Нужно отправить коммиты на GitHub. Для этого введите команду
git push origin название-текущей-ветки
Где origin означает репозиторий на компьютере, то есть ваш форк. Слово origin — часть команды, не меняйте это название на своё.

Создаём пулреквест
Пулреквест (или PR) — это предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
Если к коду нет вопросов, пулреквест принимается. Если нужно что-то исправить — отклоняется, и придётся исправить код и снова пройти цепочку git add — git commit — git push . Если вы и дальше работаете в той же ветке, а пулреквест ещё не принят, все ваши изменения автоматически добавятся в пулреквест, созданный из этой ветки после команды git push origin название-текущей-ветки .
Чтобы создать пулреквест, зайдите на страницу вашего форка на GitHub. Вверху появилась плашка Compare & pull request, а ещё можно зайти на вкладку Pull Requests.

Нажмите на неё и окажетесь на странице открытия пулреквеста. Проверьте описание и нажмите Create pull request.

Готово, теперь ждём остаётся ждать одобрения пулреквеста или комментариев к нему.
Синхронизируем репозитории
Предположим, вы исправили код, руководитель или наставник одобрил ваши правки и принял пулреквест.

Теперь код в мастер-репозитории обновился, а в вашем форке нет, вы ведь не обновляли свою версию репозитория с тех пор, как клонировали её себе на компьютер. Приведём форк в актуальное состояние.
В локальном репозитории переключаемся на ветку master .
git checkout master
Забираем изменения из ветки master мастер-репозитория
git pull git@github.com:academy-student/1173761-device-34.git master
Отправляем изменения уже из своей ветки master в ваш форк на GitHub с помощью команды
git push origin master
Готово, теперь форк и оригинальный репозиторий находятся в актуальном состоянии.
Словарик
Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения.
Git — самая популярная система контроля версий. С Git можно работать через терминал.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё.
GitHub (или Гитхаб) — веб-сервис, основанный на Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
SSH-ключ нужен, чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер нас узнавал.
ssh-agent — программа для хранения и управления SSH-ключами.
Репозиторий — папка с файлами вашего проекта на сервере GitHub или у вас на компьютере.
Мастер-репозиторий — это общий для всей команды репозиторий с рабочей версией проекта.
Форк — полная копия мастер-репозитория, в которой вы можете безопасно работать.
Клонировать форк — скачать его командой git clone , чтобы работать с кодом на своём компьютере.
Пулреквест (или PR) — предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Читать дальше

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

GitHub Desktop: обзор и первая настройка
Самая короткая инструкция о том, как сохранить файлы в GitHub и ничего не сломать. И самое главное — никакой консоли, всё через окошки и с помощью мышки. Для этого используем GitHub Desktop.
Внимание! GitHub Desktop не работает на Windows 7×32, поэтому если у вас эта версия системы, обновитесь до Windows 10 или воспользуйтесь программой GitKraken.
В этой статье идёт рассказ о системах контроля версий. Если вы совсем ничего о них не знаете, прочитайте статьи «Словарь терминов для Git и GitHub» и «Введение в системы контроля версий», чтобы понять терминологию и разобраться, зачем мы вообще это делаем.
- 7 августа 2023

Как склеить коммиты и зачем это нужно
Когда вы открываете пулреквест и ваш код смотрят и комментируют другие, бывает нужно что-то исправить. Обычно такие изменения мы комментируем сообщением вроде «Увеличил шрифт на 2px » или «Поменял оттенок фона в шапке». Такие маленькие изменения интересны, только пока они в пулреквесте. Ревьювер (человек, который смотрит ваш код), может легко узнать, что и когда вы изменили, а не читать весь diff заново, а вы можете легко откатить коммит, если он не нужен. Но когда приходит время вливать пулреквест, эти маленькие коммиты теряют свою ценность. Поэтому лучше их склеить в один.
- 14 июня 2023

Основные команды для работы с Git
Работа с Git через терминал — это обязательная часть практики фронтендера. Однако для начинающих разработчиков этот инструмент может показаться сложным. Чтобы вам было проще учиться, мы собрали основные команды для работы с Git.
☝ В некоторых командах мы будем писать URL-адрес удалённого репозитория и название проекта в квадратных скобках, вот так — [ссылка на удалённый репозиторий] . Мы делаем это только для наглядности. Вам квадратные скобки ставить не нужно.
- 22 февраля 2023

Как бесплатно залить сайт на GitHub Pages
Допустим, вы сделали какой-то проект, например, собрали себе портфолио по шаблону, и теперь хотите выложить его в интернет. Если вы использовали только HTML и CSS, то необязательно платить деньги, чтобы загрузить сайт куда-то. Вы можете бесплатно выложить сайт на сервис GitHub Pages. Всё, что нужно — аккаунт на Гитхабе.
- 29 ноября 2022

Регистрация на GitHub
Создание нового аккаунта на GitHub состоит всего из 10 шагов — и вся регистрация занимает меньше пяти минут.
Обратите внимания, что интерфейс Гитхаба регулярно меняется, так что внешне он может отличаться, когда вы читаете эту статью.
Начало регистрации. Так выглядит главный экран Гитхаба, когда вы не зарегистрированы. Главное, что вам нужно заметить — большое поле для ввода почты и зелёная кнопка. Вводите свой адрес и переходите на следующий шаг.
Ввод почты. На следующем шаге начинается регистрация. Подтвердите свою почту с прошлого шага и нажмите Continue (Продолжить).
Пароль. Придумайте сложный пароль, чтобы его никто не взломал. Например, Гитхаб просит, чтобы в пароле было не меньше 15 символов или 8 символов, но тогда должны быть и латинские буквы, и цифры.
Имя профиля. Теперь выберите имя вашего профиля — оно будет использоваться в интерфейсе, в коммитах и комментариях. То есть именно так вас будет видеть любой пользователь Гитхаба. Для разработчика Гитхаб вместо визитки, так что выбирайте что-нибудь приличное, лучше, если ник будет совпадать с вашими никнеймами на других сайтах.
Если имя недоступно, Гитхаб вам об этом скажет. А если доступно — жмите Continue.
Рассылки. Дальше Гитхаб спросит, хотите ли вы подписаться на рассылку об обновлениях. Впечатайте латинскую У, если хотите, или n, если письма вам не нужны. Готовы спорить, мы знаем, что вы выберете.
Капча, чтобы проверить, что вы не робот. Нам при регистрации пришлось два раза выбрать спиральную галактику — не сильно сложно. А если вы робот — не причиняйте вред человеку своим действием или бездействием.
Подтверждение почты. После капчи вам придёт письмо с кодом на почту. Введите его на следующей странице.
Вот здесь. Главное — не ошибайтесь.
Общая информация о вас и вашей команде. Если вы регистрируете аккаунт для себя, выбирайте Just me. Второй пункт — студент вы или учитель. Выбирайте «Студент», если вы не учитель.
Интересы. Дальше Гитхаб спросит вас об интересах — то есть о том, зачем вы регистрируете аккаунт. Из вариантов:
- Совместная разработка и код ревью.
- Автоматизация. CI/CD, API и другие админские вещи.
- Безопасность. Двухфакторная аутентификация, ревью, сканирование кода и списки зависимостей.
- Приложения. Выбирайте, если будете использовать GitHub Mobile, CLI, Desktop.
- Управление проектами. Проекты, метки, ишьи, вики и другие управленческие дела.
- Управление командами. Организации, приглашения, роли, домены.
- Сообщество. Выбирайте, если Гитхаб интересен вам как соцсеть.
Вы можете выбрать несколько пунктов или пропустить и не указывать ничего, для этого пролистайте страницу вниз для кнопки Skip customization.
Выбор тарифа. На выбор бесплатный тариф или платный GitHub Pro. Практика показывает, что для большинства личных проектов хватит бесплатного тарифа. В сентябре 2022 в него входили:
- Безлимитное количество репозиториев.
- 2000 минут CI/CD в месяц.
- 500 мегабайт места в хранилище пакетов.
- Поддержка сообщества.
Выбор тоже можно пропустить, тогда у вас будет бесплатный тариф.
Всё готово. Теперь у вас есть аккаунт. Можете создать репозиторий и работать с ним, или склонировать чужой. А для работы у вас есть несколько удобных вариантов:
- 28 сентября 2022

Работа с Git в Visual Studio Code
Если вы вёрстаете сайты или пишете код в редакторе Visual Studio Code, то Git за пять минут настраивается прямо внутри редактора. Не нужно запоминать команды для консоли, не нужно тыкать в лишние приложения.
Следуйте инструкции и всё получится.
- 16 сентября 2022

Markdown за 5 минут
Маркдаун, он же markdown — удобный и быстрый способ разметки текста. Маркдаун используют, если недоступен HTML, а текст нужно сделать читаемым и хотя бы немного размеченным (заголовки, списки, картинки, ссылки).
Главный пример использования маркдауна, с которым мы часто сталкиваемся — файлы readme.md , которые есть в каждом репозитории на Гитхабе. md в имени файла это как раз сокращение от markdown.
Другой частый пример — сообщения в мессенджерах. Можно поставить звёздочки вокруг текста в Телеграме, и текст станет полужирным.
Версии маркдауна отличаются, поэтому перепроверьте, какую вы используете.
- 5 октября 2021

Шпаргалка по Git. Решение основных проблем
Поговорим о решении проблем с Git.
- 11 декабря 2020

Полезные команды для работы с Git
Работа с Git через терминал — это обязательная часть практики каждого современного фронтенд-специалиста. Однако, для начинающих это может показаться сложным. Чтобы упростить процесс обучения, мы собрали для вас все самые необходимые команды, которые пригодятся в работе с Git на первое время.
- 1 января 2020
Быстрая инициализация проекта
Представьте себе фронтенд-разработчика типичной среднестатистической компании, занимающейся веб-разработкой. У него часто возникает ситуация, когда каждый следующий проект начинается с тех же самых действий, что и несколько предыдущих. Можно даже сказать, что 90-95% проектов в рамках одной такой компании начинаются приблизительно с одних и тех же действий с точки зрения разработчика. Поработав так некоторое время многие начинают задумываться над вопросом оптимизации рабочего процесса: как можно избежать клонирования одной и той же структуры файлов и каталогов вручную? Как избежать поиска и загрузки новых версий используемых библиотек и не писать новые конфигурационные файлы для любимых менеджеров задач, препроцессоров и других инструментов? Как можно автоматизировать этот процесс? Как сделать инициализацию проектов более быстрой, гибкой и безболезненной? Давайте об этом поговорим.
Скаффолдинг
Наиболее часто употребляемый перевод для термина scaffolding — «инициализация проекта». На самом деле, обычно, смысл его немного глубже. Скаффолдинг — это процесс инициализации проекта, включающий развёртывание файловой структуры проекта и генерацию некоторого (иногда опционального) количества кода, требуемого пользователю. А скаффолдер — это инструмент, реализующий этот самый процесс. Таким образом, в результате скаффолдинга вы получаете заданную структуру проекта, код, сгенерированный вашим инструментом (скаффолдером), и, возможно, некоторые опциональные инструменты, вроде автоматизации задач, пакетных менеджеров, тестировщиков и т.п. Но, случается, что скаффолдер нужен только для создания определённой файловой структуры проекта без включения дополнительных компонентов в него.
Инструментарий
Удобный инструмент — это самое важное в вопросе эффективного скаффолдинга. Я открыл для себя Yeoman, и постараюсь открыть его для вас. А также предложу к рассмотрению ещё пару альтернативных скаффолдеров: Volo и grunt-init.
Yeoman
Yeoman — пожалуй, самый популярный в последнее время скаффолдер, поэтому о нём поговорим подробнее. На самом деле, сам Yeoman — это не просто скаффолдер, а целый набор инструментов, которые отлично дополняют друг друга в процессе скаффолдинга и гармонично сочетаются в процессе разработки. Yeoman «стоит на трёх китах», задающих тон рабочему процессу современных разработчиков: скаффолдер Yo, менеджер пакетов Bower и менеджер задач Grunt. При установке Yo вам будут установлены также Bower и Grunt, если они не были установлены ранее.
Генераторы
Генератор Yeoman — это npm-пакет с инструкциями и шаблонами для Yo, которые описывают инициализацию проекта: какие директории создать, какие файлы и куда копировать, каким образом обрабатывать шаблоны и куда их разместить после обработки. В Yeoman шаблоны обрабатываются с использованием библиотеки Underscore.js.
На момент написания статьи в npm-репозитории уже доступно для установки более 300 генераторов. Устанавливаются они как обычные npm-пакеты с использованием команды npm install . В конце статьи я приведу небольшой список полезных генераторов.
Использование Yeoman
Самый простой способ понять, как именно инициализировать проекты с Yeoman — это начать его использовать. Я рассмотрю процесс скаффолдинга с использованием генератора generator-webapp и опишу использование каждого из трёх компонентов Yeoman.
Yo
Установка Yo выполняется командой:
npm install -g yo
После установки необходимо обзавестись генератором приложения, которое вы хотите инициализировать. Просмотреть список доступных для установки генераторов можно по ссылке или выполнив поиск пакета в npm по ключу «yeoman-generator»: npm search yeoman-generator . Если среди существующих генераторов нет ничего подходящего, можно написать свой генератор. Но об этом позже.
Как уже было сказано, я опишу процесс скаффолдинга на примере генератора webapp. Для его глобальной установки выполните:
npm install -g generator-webapp
Теперь можно пробовать развернуть каркас будущего веб-приложения. Для запуска скаффолдинга в заранее созданной директории проекта выполните:
yo webapp
Генератор выполняет скаффолдинг по сценарию, который зависит от действий пользователя. Обычно на выбор предлагаются некоторые фундаментальные вещи, от которых будет существенно зависеть дальнейший процесс работы над проектом. В случае с webapp нам будет предложено выбрать, хотим ли мы в проекте использовать Bootstrap для Sass, RequireJS и Modernizr.

По завершении скаффолдинга вы получаете следующую структуру:
app/ node_modules/ test/ .bowerrc .editorconfig .gitattributes .gitignore .jshintrc bower.json Gruntfile.js package.json
В директории app находится dev-версия вашего проекта — там содержатся все файлы в исходном состоянии, не прошедшие конкатенацию, минификацию и прочие обработки. Дальнейшая разработка проекта обычно не выходит за пределы этой директории.
Некоторые генераторы могут иметь опции, которые указываются непосредственно в командной строке в момент инициализации. Обычно они описаны в документации, поэтому читайте внимательно. Webapp имеет три опции:
- --skip-install — пропустить автоматический запуск установки пакетов Bower и npm после скаффолдинга.
- --test-framework — по умолчанию установлен mocha . Может быть использован любой другой фреймворк для запуска тестов, вроде Jasmine.
- --coffee — добавляет в проект поддержку CoffeeScript.
Grunt
Как вы уже поняли, конкатенация, минификация и другие преобразования файлов, не требующие человеческого вмешательства выполняются при помощи инструмента Grunt. Если вы до сих пор не знакомы с ним, предлагаю для ознакомления прочесть пост в блоге Артёма Сапегина, вводный пост на сайте Smashing Magazine или краткое руководство на официальном сайте. Этого будет достаточно, чтобы начать его использовать. А пока вам необходимо знать только то, что запуск задач Grunt происходит по команде grunt [] .
Генератор в процессе скаффолдинга устанавливает пакеты, необходимые для выполнения задач Grunt. Большинство генераторов создают достаточно объёмный Gruntfile.js , имея в распоряжении «багаж» полезных задач. Чтобы понять, какие задачи можно выполнять для проекта достаточно заглянуть в Gruntfile.js или выполнить grunt -h для директории с файлом Gruntfile.js . Webapp, например, имеет в качестве основных функциональных задач default , build , test , server .
Задача server выполняет очистку временной папки .tmp в корне проекта (создаёт её, если директория .tmp отсутствует), обрабатывает имеющиеся Sass-файлы и кладёт результат в .tmp/css , запускает слежку за изменением файлов в директории проекта, запускает сервер для обработки статичных файлов и открывает страницу проекта в браузере с возможностью запустить LiveReload, если у вас установлен плагин LiveReload для браузера. Эта задача обычно запущена во время работы над проектом.
Задача test собирает тестовую версию проекта, запускает тестировщик Mocha или Jasmine, в зависимости от того, что было выбрано при установке.
Задача default , которая также запускается по команде grunt , выполняет проверку JS-файлов из директории app/scripts на предмет ошибок с помощью JSHint и запускает задачу test .
Задача build выполняет компоновку релизной версии проекта с файлами, прошедшими конкатенацию, минификацию и переименование. Релизная версия проекта располагается в директории dist , которая будет создана в корне проекта при первом запуске этой задачи.
Стоит отметить, что если вы не используете в проекте RequireJS и хотите чтобы добавленные вами CSS-стили и JS-скрипты были доступны для автоматической конкатенации и минификации (если вы планируете использовать Grunt) их нужно записывать в index.html указывая тип файла и путь к нему в релизной версии проекта.
Важно понимать, что такое поведение — лишь частный случай генератора, т.к. в Webapp используется задача useminPrepare (плагин grunt-usemin), который берёт на обработку файлы, описанные в HTML-файлах особым образом.
Например, добавляя в проект app/css/main.css , который в релизной версии будет расположен по пути dist/css/main.css , мы должны добавить в index.html следующие строки:
link rel="stylesheet" href="css/main.css">
Подобная ситуация и с JavaScript:
script src="bower_components/jquery/jquery.js"> script>
Также можно осуществлять конкатенацию нескольких скриптов из dev- версии в один скрипт в релизной версии при помощи той же схемы:
script src="bower_components/jquery/jquery.js"> script> script src="bower_components/foundation/js/foundation/foundation.js"> script>
Так нужно делать только в случае со всеми CSS-файлами и JS-библиотеками, добавленными в проект вручную. Инструмент Bower, который будет рассмотрен следующим, может автоматизировать процесс добавления библиотек в проект. Если ваш Gruntfile.js содержит задачу bower-install , то можно воспользоваться следующим алгоритмом:
-
убедиться, что в HTML-файле имеется следующие комментарии:
bower install jquery --save
grunt bower-install
Bower установит необходимую библиотеку, попытается записать файл библиотеки между комментариями из пункта 1 и сообщит вам, удалось ли ему это.
Bower
Третьим немаловажным компонентом Yeoman является Bower — менеджер пакетов для веб-приложений. Этот инструмент упрощает поиск, установку и обновление библиотек для вашего проекта. В процессе скаффолдинга Bower позволяет генератору загружать необходимые версии библиотек, зависимости которых определены в файле bower.json . Часто bower.json представляет собой шаблон, обрабатываемый генератором во время инициализации проекта. В таком случае он способствует опциональной загрузке библиотек в процессе скаффолдинга. Завершив скаффолдинг проекта, вы сможете без лишних движений доставить требуемые библиотеки при помощи Bower.
Всё, что для этого нужно: команды bower search [] и bower install . Установка пакетов идёт в директорию, путь к которой прописан в конфигурационном файле .bowerrc . C более тонкой настройкой Bower вы сможете ознакомиться тут.
Bower работает с протоколами Git и HTTP(S) и способен устанавливать пакеты как из репозитория, так и из простого zip-архива.
Некоторые могут задуматься над вопросом: «Зачем нужен Bower, если есть npm?». Наиболее подходящее объяснение описано на сайте и состоит в том, что основное его предназначение — довольно простое управление отдельными пакетами с точки зрения фронтенд-разработчика за счет плоского дерева зависимостей и удобный API, который может быть использован для реализации более опциональных рабочих процессов. К тому же, Bower имеет отдельную от npm-плагинов директорию в проекте, что позволяет разработчику версионировать проект вместе с установленными пакетами и игнорировать локально установленные плагины для Node.js, которые зачастую занимают внушительное дисковое пространство.
Свой собственный генератор
Как уже было сказано ранее, уже существует более 300 генераторов Yeoman, доступных из npm-репозитория. Но может случиться так, что ни один из них не будет удовлетворять вашим потребностям. В таком случае вы всегда можете написать свой или внести изменения в существующий, если его лицензия позволяет это. Подробнее о том, как сделать свой генератор читайте здесь.
Полезные генераторы Yeoman
- Web App — генератор для инициализации веб-приложения на основе HTML5Boilerplate и опциональными компонентами. Рассмотрен в статье.
- AngularJS — генератор для инициализации веб-приложения на основе AngularJS. Также опционально устанавливает Twitter Bootstrap и дополнительные модули AngularJS, такие как angular-resource.
- Backbone — генератор для инициализации веб-приложения на основе Backbone. Также вы получаете доступ к нескольким суб-генераторам, которые могуты быть использованы для простого создания моделей (models), представлений (views), коллекций (collections) и т.д.
- Ember — генератор для инициализации веб-приложения на основе Ember.js.
- Mobile App — генератор для инициализации веб-приложений базирующихся на подходе mobile-first. Предоставляет возможность выбрать фреймворк из следующих: Twitter Bootstrap 3, TopCoat, Zurb Foundation и Pure.
- Jasmine — генератор, который инициализирует проект, использующий Jasmine в качестве фреймворка для тестирования проекта.
- H5BP — генератор для инициализации проекта на основе HTML5Boilerplate.
- Bootstrap LESS — генератор для инициализации проекта с использованием LESS-версии фреймворка Twitter Bootstrap.
Volo
Volo будет рассмотрен менее подробно, так как он обладает меньшими возможностями, в отличии от Yeoman. Volo, как нам сообщают на сайте разработчика:
Volo — это инструмент, который даёт возможность быстро создавать проекты, добавлять библиотеки и автоматизировать простые задачи используя Node.js и JavaScript.
Посмотрим, что он может:
volo create [имя_проекта>] [репозиторий> | ссылка_на_шаблон>]
volo create foo h5bp/html5-boilerplate/4.0.0 volo create foo http://mozilla.github.com/mortar/builds/app-stub.zip
Подробнее об инициализации проектов с Volo можно прочесть в этой статье.
Добавление библиотек в проект:
volo add jquery volo add backbone volo add requirejs/~2 volo add amdjs/backbone
Для описания автоматизации процесса сборки проекта Volo использует свой конфигурационный файл — volofile . При этом, естественно, необходимо предварительно установить node-плагины, используемые для автоматизации задач таких, как jshint или uglify-js . Подробнее об автоматизации с Volo можно узнать здесь.
Скаффолдинг с Grunt-init
Grunt-init — инструмент от разработчиков Grunt, позволяющий разворачивать проекты, используя шаблоны. То, что в Yeoman называлось генераторами, у grunt-init называется шаблонами. Для установки плагина вам необходимо выполнить:
npm install -g grunt-init
Использование grunt-init концептуально ничем не отличается от других скаффолдеров. Вам аналогично необходимо загрузить шаблон и запустить скаффолдер. Однако, grunt-init имеет специфику в установке шаблонов. Процесс установки шаблона заключается в клонировании git-репозитория c исходным кодом шаблона в директорию ~/.grunt-init/ . Выполнив клонирование шаблона, можно запускать скаффолдер командой:
grunt-init TEMPLATE_NAME>
Небольшой список доступных шаблонов можно найти на официальном сайте, а также в репозитории Артёма Сапегина.
Кроме того, вы можете написать свой шаблон. Подробные инструкции можно найти на том же официальном сайте и в блоге Артёма Сапегина.
© 2013 Frontender Magazine
Кроме материалов, опубликованных под лицензией Creative Commons
Как инициализировать гит в существующем проекте и сравнить что изменено с удаленным репозиторием?
Всем привет.
Есть папка в которой есть файлы не под гитом и есть удаленный репозиторий в котором лежат теже файлы, но уже более новые, с новыми правками. Как инициализировать гит и сравнить с удаленным репозиторием? Надо убедится что в этой папке нет файлов отличных от удаленного репозитория.
- Вопрос задан более трёх лет назад
- 1616 просмотров