Как скопировать репозиторий github
Перейти к содержимому

Как скопировать репозиторий github

  • автор:

Как клонировать репозиторий на GitHub

Одно из самых базовых действий на GitHub — клонирование репозитория.

Время чтения: меньше 5 мин

Открыть/закрыть навигацию по статье

Задача

Скопировать ссылку «Задача» Скопировано

Клонировать репозиторий на локальный компьютер.

Готовое решение

Скопировать ссылку «Готовое решение» Скопировано

Чтобы клонировать репозиторий, нужно установить на компьютер Git CLI. Как это сделать описано в статьях «Системы управления версиями» и «Git CLI».

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

 git clone git clone ссылка на репозиторий>      

Чтобы найти ссылку на репозиторий, выберите вкладку «<> Code» в репозитории на GitHub. Когда переходите к нужному проекту, эта вкладка открывается по умолчанию. Найдите в основной части вкладки аккордеон, который тоже называется «<> Code» и разверните его. В развернувшейся панели по умолчанию будет выбрана «Local». В ней выберите формат ссылки.

Первые «HTTPS» и «SSH» — это ссылки на репозиторий, использование которых подходит для стандартной команды клонирования, описанной выше. SSH ссылка будет работать в том случае, если настроили доступ по SSH. Для этого надо установить публичный ключ в настройках профиля на GitHub. Подробнее в рецепте «Как настроить доступ по SSH на GitHub»). Третий формат — «GitHub CLI». Он набран в виде команды, которая будет работать, если у вас установлен GitHub CLI.

После выбора скопируйте из поля нужную ссылку или команду. Поле расположено после типов ссылок.

Ссылка для клонирования по протоколу SSH.

Ссылка для клонирования по протоколу HTTPS.

Команда для клонирования с помощью утилиты GitHub CLI.

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

 git clone git clone ссылка на репозиторий> папка>      

Git для начинающих. Урок 2.
Создание и клонирование репозитория

Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.

Что такое репозиторий

Это каталог в файловой системе, где хранится информация о проекте:

  • файлы и папки проекта
  • история проекта
  • настройки проекта
  • служебная информация

Информация о репозитории хранится в скрытой папке .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. Нужно выбирать.

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 "your_email@example.com" 
 $ 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, моя ссылка для клонирования будет такая - git@github.com:Webdevkin/first-site.git. Ваша зависит от имени пользователя.

Идем в командную строку и запускаем

 $ git clone git@github.com: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 git@github.com: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

Ссылки, которые могут пригодиться

  • github - https://github.com/
  • bitbucket - https://bitbucket.org/
  • подробнее об ssh-ключах (en) - connecting-to-github-with-ssh

На этом все. В следующем уроке мы сделаем первые изменения в проекте и начнем понимать, в чем заключается прелесть git.

Спасибо за внимание и до встречи!

Все уроки курса

  • Вводный урок
  • 1. Установка и базовая настройка git
  • 2. Создание и клонирование репозитория git
  • 3. Делаем первые изменения, git status и git diff
  • 4. Коммиты и история коммитов, git commit, git log и git show
  • 5. Подробнее об истории коммитов. Путешествие по истории
  • 6. Работа с сервером, git push и git pull
  • 7. Ветки - главная фишка git, git branch и git checkout
  • 8. Работа с ветками на сервере, git fetch
  • 9. Слияния или мерджи веток, git merge
  • 10. Конфликты и их разрешение
  • Платная часть курса. Презентация
  • * 11. Работа с gitignore и git exclude
  • * 12. Буфер обмена git, git stash
  • * 13. Копирование коммитов, git cherry-pick
  • * 14. Отмена и редактирование последнего коммита
  • * 15. Отмена произвольного коммита, git revert
  • 16. Склеивание коммитов, git rebase --interactive и git reflog
  • * 17. Зачем склеивать коммиты. Плюсы и минусы сквоша
  • * 18. Работа с git rebase. Отличия от merge
  • * 19. Что такое git push --force и как с ним работать
  • * 20. Ищем баги с помощью git, git bisect
  • * 21. Как и зачем работать с тегами git
  • * 22. Процессы: github flow и git flow
  • * 23. Псевдонимы в git
  • 24. Мердж-реквесты
  • * 25. Форки

Клонировать репозиторий Git со всеми ветками

В этом посте мы обсудим, как клонировать репозиторий Git со всеми ветками.

Идея состоит в том, чтобы использовать git-clone клонировать репозиторий. Это автоматически извлечет все ветки и теги в клонированном репозитории.

После выполнения git-clone , вы можете просмотреть все ветки, используя git-branch с --all flag:

# --all has alias -a
$ git branch -a

Вот живой пример:

git clone

Чтобы проверить конкретную ветку, вы можете использовать git-checkout Команда для создания локальной ветки отслеживания.

$ git checkout develop

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

$ git clone -b

Это показано ниже:

git clone -b

Это все о клонировании репозитория Git со всеми ветками.

Оценить этот пост

Средний рейтинг 4.23 /5. Подсчет голосов: 39

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Подписывайся
2 Комментарии
Большинство голосов
Новейшие Самый старый
Встроенные отзывы
Просмотреть все комментарии
Просмотр комментариев
Загрузить больше комментариев
Просматривать
Подпишитесь на новые публикации

  • Все проблемы
  • Практика DSA
  • 100 самых популярных задач
  • 50 лучших классических задач
  • Лучшие алгоритмы
  • Компилятор С/С++
  • Компилятор Java
  • Компилятор Python
  • Компилятор JavaScript
  • компилятор PHP
  • Компилятор C#
  • Свяжитесь с нами
  • Политика конфиденциальности
  • условия обслуживания
  • Подпишитесь на новые публикации

Techie Delight © 2023 Все права защищены.

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Работа с GitHub на разных компьютерах – git clone и git pull - .gitignore и GitKraken

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

Или же с проектом занимается один человек, но делает это дома и на работе. Рассмотрим такой случай. Для удобства пути к рабочему каталогу на обоих компьютерах совпадают .

Итак, есть каталог RU на домашнем ПК (с ним мы имели дело в прошлой статье, когда учились работать с системой контроля версий GIT и сервисом GITHub) и каталог RU на рабочем ноутбуке.

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

1-ый способ переноса репозитория на другой компьютер

Находясь на сайте GITHub можно скачать ZIP-архив, разархивировать его и скопировать в нужный каталог на другом компьютере.

2-ой способ переноса репозитория - Команда git clone

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

Скопировать путь к репозиторию на сервисе GITHub.

Зайти в рабочий каталог на другом ПК (ноутбуке. В нашем случае это снова папка RU , но путь может быть любым). И выполнить команду git clone, которая имеет следующий синтаксис.

git clone https://. book , где помимо самой команды git clone и url-адреса указывается имя папки book (название может быть любым), в которую будет клонироваться репозиторий.

Итак, в папку book на другом компьютере (ноутбуке) был клонирован репозиторий с сервиса GitHub.

Изменения в репозитории на 2-ом компьютере

Поработаем теперь с копией репозитория на другом (рабочем) компьютере. Внесем изменения в файл index.html : добавим заголовок h2.

Даже в редакторе VScode напротив файла index.html мы видим букву M . Это говорит о том, что файл index.html модифицирован/изменен. Убедимся в этом при помощи команды git status.

Теперь следует добавить файл index.html в индекс - команда git add. Потом создать коммит - команда git commit. И отправить локальный репозиторий с внесенными изменениями на GitHub - команда git push.

Здесь следует понимать, что если мы клонируем репозиторий, то он автоматически связан с удаленным . Поэтому достаточно ввести команду git push без ключа u , имени origin и ветки main , так как эта связь уже есть.

Теперь если перейти на удаленный репозиторий, то мы увидим новый коммит, созданный на другом компьютере .

Вроде бы ничего нового. Все это было проделано в предыдущей статье.

Но не будем забывать , что сейчас мы работаем на другом/рабочем компьютере (ноутбуке). И допустим, что продолжить работу мы сможем только дома. А на домашнем компьютере нет тех изменений, которые были сделаны на работе.

Получение изменений из удалённого репозитория - Команда git pull

Чтобы получить изменения из удалённого репозитория используется команда git pull.

И, действительно, мы видим, что синхронизация прошла успешно и в файле index.html на домашнем компьютере появился заголовок h2 .

Итак, работать с одним репозиторием и с сервисом GitHub с разных компьютеров не сложно. Здесь важно знать основные команды и порядок их выполнения. Именно так работают разные разработчики над одним проектом.

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

Ошибка - ! [rejected] error: failed to push some refs - Слияние репозиториев

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

Допустим Вы забыли про команду git pull. При этом на удаленном репозитории произошли изменения, о которых Вы не знаете .

То есть мы работаем как обычно: вносим изменения в локальный проект, затем файл с изменениями добавляется в индекс, создается коммит. Но при попытке использовать команду git push возникает ошибка :

! [rejected] error: failed to push some refs to 'https://. '

Обновления репозитория были отклонены. Сначала нужно интегрировать удаленные изменения . То есть использовать команду git pull.

C одной стороны на удаленном репозитории был создан файл README.md , который появился и в локальном проекте. Но на локальном репозитории тоже произошли изменения: добавлен новый параграф - тег p в файле index.html .

Теперь при использовании команды git push произойдет слияние двух репозиториев: локального и удаленного. На удаленном репозитории появились три новых коммита:

1-ый коммит - создание файла README.md на удаленном репозитории;

2-ой коммит - когда мы не знали об изменениях и внесли поправки в локальный репозиторий;

3-ий коммит - слияние двух репозиториев Merge branch 'main'. .

Но подобных ситуаций и ошибок не будет возникать, если следовать этому правилу.

Зачем нужен файл .gitignore?

Игнорирование файлов при работе с GIT или файл .gitignore.

В реальных проектах не обязательно push-ить все файлы на удаленный репозиторий. Часть файлов являются служебными и на GitHub они не нужны.

Кроме этого некоторые из них могут "весить" сотни МегаБайт и более. При этом отправка файлов на GitHub будет занимать много времени, либо терминал будет попросту зависать.

Для этого существует файл .gitignore - в нем указаны каталоги/файлы, которые не нужно выкладывать на удаленный репозиторий . Ниже приведен пример файла .gitignore.

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

GitKraken - графический клиент GIT

Просматривать репозиторий на GitHub не очень удобно.

В редакторе VScode есть плагин GitLens, который расширяет возможности GIT, встроенного в Visual Studio Code. И плагин Git History, который помогает просматривать истории изменений. Но и они не самое лучшее решение.

Существует специальный графический кросс-платформенный клиент для работы с репозиториями и сервисами GIT. Это GitKraken.

Скачивается GitKraken с официального сайта gitkraken.com и устанавливается как обычная программа.

GitKraken имеет удобный интерфейс и множество функций. При входе в GitKraken через аккаунт GitHub мы увидим все созданные ранее коммиты.

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

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