Знакомство с git и github: руководство для начинающих
Содержание:
- git fetch и git pull — забираем изменения из центрального репозитория
- git push — вносим изменения в удаленный репозиторий
- 9 ответов
- Как загрузить определенную папку из репозитория GitHub
- Регистрация на GitHub
- Подмодули
- Устанавливаем SSH-ключи
- Создание переиспользуемых пайплайнов для GitLab CI на bash
- Что такое Git
- Я не знаю, что вы только что сказали (Вариант 2)
- Fork репозитория
- Что такое Git?
- Заключение
- Итоги
git fetch и git pull — забираем изменения из центрального репозитория
Для синхронизации текущей ветки с репозиторием используются команды git fetch
и git pull.
git fetch — забирает изменения удаленной ветки из репозитория по умолчания,
основной ветки; той, которая была использована при клонировании репозитория.
Изменения обновят удаленную ветку (remote tracking branch), после чего надо будет
провести слияние с локальной ветку командой git merge.
Получает изменений из определенного репозитория:
Возможно также использовать синонимы для адресов, создаваемые командой git remote:
Естественно, что после оценки изменений, например, командой git diff, надо
создать коммит слияния с основной:
Команда git pull сразу забирает изменения и проводит слияние с активной веткой.
Забирает из репозитория, для которого были созданы удаленные ветки по умолчанию:
Забирает изменения и метки из определенного репозитория:
Как правило, используется сразу команда git pull.
git push — вносим изменения в удаленный репозиторий
После проведения работы в экспериментальной ветке, слияния с основной, необходимо
обновить удаленный репозиторий (удаленную ветку). Для этого используется команда
git push.
Отправляет свои изменения в удаленную ветку, созданную при клонировании по
умолчанию:
Отправляет изменения из ветки master в ветку experimental удаленного репозитория:
В удаленном репозитории origin удаляет ветку experimental:
Отправляет в удаленную ветку master репозитория origin (синоним репозитория по
умолчанию) ветки локальной ветки master:
Отправляет метки в удаленную ветку master репозитория origin:
Изменяет указатель для удаленной ветке master репозитория origin (master будет
такой же как и develop):
Добавляет ветку test в удаленный репозиторий origin, указывающую на коммит ветки
develop:
9 ответов
Лучший ответ
Есть кнопка . Если вы хотите делать редкие покупки, на сайте есть много решений. Например, здесь.
8
C1sc0
31 Авг 2019 в 10:17
Вы также можете просто клонировать репо, после того, как клонирование будет выполнено, просто выберите папку или подлость, которую вы хотите. Чтобы клонировать:
Затем перейдите в клонированный каталог DIR и найдите файл или каталог, который вы хотите скопировать.
-5
Stephen Rauch
2 Окт 2017 в 04:52
Вы можете загрузить всю папку в разделе «Клонирование» или «Параметры загрузки» (URL-адрес Git или «Загрузить Zip»).
-
Есть кнопка Download Zip
-
Используя команду, вы можете загрузить всю папку на свой компьютер, но для этого вам понадобится git на вашем компьютере. Вы можете найти URL-адрес Git uner
git clone https://github.com/url
-2
Community
20 Июн 2020 в 09:12
Зависимость: и .
Например:
1
Kalpesh Kundanani
30 Авг 2019 в 05:17
Вы должны загрузить весь проект либо с помощью кнопки «Клонировать на рабочий стол», которая будет использовать собственную программу github, либо с помощью кнопки «Загрузить как zip».
А затем найдите эту папку в загруженном проекте.
Paran0a
11 Окт 2015 в 15:17
Как загрузить определенную папку из репозитория GitHub
Вот правильное решение в соответствии с этим :
-
Создать каталог
-
Настроить репозиторий git
-
Настройте свой git-repo для загрузки только определенных каталогов
-
Установите папку, которую вы хотите загрузить, например вы хотите загрузить только каталог документов из
Например. если вы хотите загрузить каталог документов только из главного репозитория , то ваша команда — .
-
Загрузите репо как обычно
2
abu_bua
24 Июн 2020 в 14:41
Воспользуйтесь онлайн-инструментом GitZip. Он позволяет загружать подкаталог репозитория github в виде zip-файла. Команды git не нужны!
12
gdrt
11 Авг 2019 в 09:09
Вы можете использовать , чтобы получить ссылку на архив и , чтобы получить указанную папку.
Командная строка:
Например, если вы хотите загрузить examples / with-apollo / папку из zeit / next.js, вы можете ввести следующее:
17
chuyik
7 Авг 2017 в 02:36
Вы можете загрузить файл / папку с github
Просто используйте
Например
(да, это svn. по-видимому, в 2016 году вам все еще понадобится svn, чтобы просто загрузить некоторые файлы github)
35
Anona112
5 Дек 2016 в 23:22
Регистрация на GitHub
На главной странице заполняем форму справа и нажимаем “Sign up for GitHub”
Проходим проверку и нажимаем “Join a free plan”
На следующей странице можно заполнить небольшую анкету (можно не заполнять)
На этой же странице спускаемся в самый низ и нажимаем “Complete setup”
Проверяем свою почту. Если письмо пришло, переходим к следующему пункту.
Аккаунт GitHub успешно создан
Установка GitHub Desktop
Нажимаем “Download for Windows (64bit)” (операционная система может отличаться)
Запускаем скачанный файл. После установки в появившемся окне нажимаем “Sign in to GitHub.com”
В открывшемся окне браузера вводим в форму свои данные, как при регистрации, и нажимаем “Sign in”
Если браузер запросит, то подтвердить, что нужно “Открыть приложение GitHub Desktop”
Далее регистрационные данные перенесутся в форму конфигурации (настроек) Git — нажимаем “Continue”
Отключаем пункт “Yes, submit periodic usage stats”, если не хотите периодически передавать статистику работы GitHub Desktop и нажимаем “Finish”
Далее видим начальное окно GitHub Desktop
“Create a tutorial repository…“ — создать обучающий репозиторий
“Clone repository from the Internet…“ — клонировать (скопировать/скачать) репозиторий из GitHub к себе на компьютер
“Create a New Repository on your hard drive…“ — создать новый репозиторий на вашем жестком диске (на вашем компьютере) и добавить систему Git в проект
“Add an Existing Repository from your hard drive…“ — добавить на GitHub репозиторий, который уже есть на вашем компьютере и использует Git
Справа будут отображаться ваши репозитории, которые уже загружены на GitHub, но если только что зарегистрировались, то список будет пуст.
Подмодули
Клонирование репозитория с подмодулями
При клонировании репозитория вам необходимо инициализировать и обновить подмодули:
Запуск данной команды эквивалентен запуску команды:
после обычного клонирования репозитория
Обновление подмодулей
Подмодуль ссылается на конкретную коммит в другом репозитории. Чтобы получить
точное состояние всех подмодулей необходимо запустить:
Для получения состояния последнего коммита всех подмодулей необходимо выполнить
следующую команду:
или использовать аргументы по умолчанию команды git pull:
Эта команда просто обновляет локальную рабочую копию. При запуске команды git status
каталоги подмодулей будут показаны изменёнными. Чтобы обновить репозиторий необходимо
зафиксировать изменения:
Для получения состояние последнего коммита конкретного подмодуля необходимо использовать команду:
Добавление подмодулей
В текущий проект можно включить другой репозиторий Git в качестве папки, отслеживаемый Git:
После этого необходимо добавить и зафиксировать новый файл .gitmodules. В нём описано
какие подмодули следует клонировать при запуске команды git submodule update
Устанавливаем SSH-ключи
Git установлен, профиль на GitHub создан. Осталось добавить SSH-ключ и можно приступать к работе с проектом.
Что такое SSH-ключ и зачем он нужен?
Чтобы работать со своего компьютера с GitHub, иметь доступ к проектам, хранящимся на сервисе, выполнять команды в консоли без постоянного подтверждения пароля, нужно пройти авторизацию у сервера. В этом помогают SSH-ключи.
Каждый SSH-ключ содержит пару: открытый (публичный) и закрытый (приватный) ключ. Открытый ключ отправляется на сервер, его можно не прятать от всех и не переживать, что кто-то его увидит и украдёт. Он бесполезен без своей пары — закрытого ключа. А вот закрытый ключ — секретная часть. Доступ к нему должен быть только у вас.
Вы отправляете какую-то информацию на сервер, где хранится ваш публичный ключ, сервер понимает, что вы это вы, то есть идентифицирует именно вас, и даёт вам какой-то ответ. И только вы можете расшифровать этот ответ, потому что только у вас есть подходящий закрытый ключ. Получается что-то вроде связки логин-пароль только намного безопасней. Ваш пароль кто-то может узнать или подобрать, а чтобы получить ваш приватный SSH-ключ, злоумышленнику придётся взломать ваш компьютер.
Чтобы пройти авторизацию по SSH-ключу, его надо сгенерировать или найти уже ранее созданный ключ на своём компьютере.
Сначала проверим, есть ли уже на компьютере ключ. По умолчанию SSH-ключи хранятся в каталоге , поэтому нужно проверить содержимое этого каталога.
- Открываем консоль.
-
Вводим , чтобы перейти в нужный каталог.
Переходим в нужную директорию.
-
Используем , чтобы увидеть список всех файлов в каталоге.
Открываем список файлов в директории.
Ищем пару файлов с названиями вида и . Обычно имя — , , или . Файл с расширением — ваш публичный ключ, а второй — ваш приватный, секретный ключ.
Если таких файлов или даже каталога у вас нет, вы можете их сгенерировать. Для этого делаем следующее.- Открываем консоль и вводим команду:
ssh-keygen -t rsa -b 4096 -C "your_mail@example.com"
Указываем тот адрес электронной почты, который вводили при регистрации на GitHub.
Генерируем ключ.
- Далее нужно указать расположение файла для сохранения ключа. Если вы не введёте путь до файла и просто нажмёте Enter, ключ сохранится в файле, указанном в скобках.
-
Теперь нужно установить пароль к вашему ключу и дважды ввести его. Если вы не хотите вводить пароль каждый раз, когда используете ключ, пропустите этот шаг, нажав «Enter», и ничего не вводите.
Указываем расположение ключа и вводим пароль.
- Открываем консоль и вводим команду:
-
Добавляем ключ в (сгенерированный или уже существующий). Проверяем доступность ключа командой и добавляем с помощью , где указываем верный путь до файла с ключом и его имя.
Добавляем ключ в shh-agent. Несколько важных примечаний:
- Если вы захотите переименовать ключ, могут возникнуть проблемы. Их можно решить, добавив в связь ключа с доменом.
- Если у вас Windows и вы пользуетесь программой Cmder, возможны проблемы с командой . Может появиться такое сообщение об ошибке:
«eval не является внутренней или внешней командой, исполняемой программой или пакетным файлом».В Сmder для запуска можно использовать команду .
Если проблема осталась, рекомендуем работать в Git Bash.
- Если у вас macOS Sierra версии 10.12.2 и выше, нужно изменить ваш файл, чтобы автоматически загрузить ключи в и хранить пароли.
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
Вы можете добавить свой приватный ключ в и сохранить пароль к нему с помощью команды . Если у вашего ключа другое имя, не забудьте заменить в команде на правильное название.
- Если у вас Linux, может понадобится переназначить для ~/.ssh права доступа командой
- После того как создан ключ, его нужно добавить на GitHub. Для этого копируем его содержимое с помощью одной из следующих команд:
- Если вы на Windows
- Для пользователей macOS
- На Linux используйте , чтобы установить необходимый для копирования пакет , а затем введите
Можно пойти другим путём, открыть файл прямо в папке и просто скопировать содержимое оттуда.
-
Переходим на страницу для работы с ключами в вашем профиле на GitHub.
Страница с настройками ключей в вашем профиле.
Нажимаем кнопку New SSH key (новый SSH-ключ). Вводим имя ключа (можно придумать абсолютно любое) в поле Title (название), а в Key (ключ) вставляем сам ключ из буфера обмена. Теперь нажимаем Add SSH key (добавить SSH-ключ).
Добавляем в свой профиль SSH-ключ.
Если всё сделано верно, в списке появится новый ключ.
Успешно добавленный ключ.
Теперь, наконец-то, мы можем начать работу с самим проектом.
Создание переиспользуемых пайплайнов для GitLab CI на bash
За последние несколько лет я очень полюбил GitLab CI. В основном за его простоту и функциональность. Достаточно просто создать в корне репозитория файл , добавить туда и при следующем коммите запустится пайплайн с набором джобов, которые будут выполнять указанные команды.
А если добавить к этому возможности и , можно делать достаточно интересные вещи: создавать шаблонные джобы и пайплайны, выносить их в отдельные репозитории и повторно использовать в разных проектах без копирования кода.
Но к сожалению, не всё так радужно, как хотелось бы. Инструкция в GitLab CI очень низкоуровневая. Она просто выполняет те команды, которые ей переданы в виде строк. Писать большие скрипты внутри YAML не очень удобно. По мере усложнения логики количество скриптов увеличивается, они перемешиваются с YAML делая конфиги нечитаемыми и усложняя их поддержку.
Мне очень не хватало какого-то механизма, который бы упростил разработку больших скриптов. В результате у меня родился микрофреймворк для разработки GitLab CI, про который я и хочу рассказать в этой статье (на примере простого пайплайна для сборки docker-образов).
Что такое Git
Определение из Wikipedia
Система управления версиями — определение из Wikipedia
Если мы верстаем или программируем, не используя систему Git, то в нашем распоряжении только тот код, который пишем сейчас.
При использовании системы Git мы запоминаем версии кода на нужных нам этапах. Имеем доступ к ранним версиям. Можем смотреть изменения, которые были сделаны между версиями. Можем отменить изменения до любой из версий.
В статье часто будем использовать термин Git, чтобы проще было понять, представим, что Git это условная “записная книжка”, в которую будем записывать, какие изменения происходят в нашем проекте. Добавили файл — записываем, что файл добавлен. Изменили файл — записываем изменения, которые были сделаны в файле. Удалили файл — записываем что файл был удален. И все эти записи храняться в “записной книжке” Git
Технически Git для проекта — это скрытая папка в папке вашего проекта. Скрытая папка содержит служебные файлы, которые нельзя изменять и удалять
У Git много возможностей, но на данный момент рассматриваем только базовые
Я не знаю, что вы только что сказали (Вариант 2)
Я собираюсь предположить, что любой, кто интересуется вариантом 2, является новичком во всем этом и, возможно, имеет папку, полную файлов (или вы планируете иметь один), который вы хотите поместить на GitHub, и вы просто не знаете как это сделать.
Давайте сделаем это!
Скажем, вы хотите создать новый репозиторий. (Вероятно, так и есть! Именно здесь будет жить ваш проект. Если вы не собираетесь создавать новый репозиторий, вы, вероятно, захотите клонировать существующий репозиторий. Мы поговорим об этом позже, но именно так вы получаете чужой проект и информация, которая вам нужна для вашей работы или курса, который вы выбираете.)
Вашхранилищегде вы будете организовывать свой проект. Вы можете хранить папки, файлы, изображения, видео, электронные таблицы, записные книжки Jupyter, наборы данных и все остальное, что нужно вашему проекту. Прежде чем вы сможете работать с Git, вы должны инициализировать репозиторий для вашего проекта и настроить его так, чтобы Git управлял им. Вы можете сделать это прямо на сайте GitHub.
Это хорошая идея, чтобы включитьПРОЧТИ МЕНЯфайл с информацией о вашем проекте. Вы можете создать один в то же время, когда вы создаете свой репозиторий, щелкнув флажок.
- Перейдите на веб-сайт GitHub, посмотрите в верхнем правом углу, нажмите знак +, а затем нажмите «Новый репозиторий».
- Назовите репозиторий и добавьте краткое описание.
- Решите, хотите ли вы, чтобы это был публичный или частный репозиторий
- Нажмите «Инициализировать этот репозиторий с помощью README», если вы хотите включить файл README. (Я определенно рекомендую сделать это! Это первое, на что люди обратятся, когда проверят ваш репозиторий. Это также отличное место для размещения информации, которая вам необходима, чтобы понять или запустить проект.)
Новый репозиторий
Создание вашего нового хранилища
Вы можете полностью начать работать прямо с этого момента, если хотите! Вы можете загружать файлы, редактировать файлы и т. Д. Прямо из своего репозитория на веб-сайте GitHub. Тем не менее, вы не можете быть удовлетворены только этой опцией.
Есть два способа внести изменения в ваш проект. Вы можете вносить изменения в свои файлы / записные книжки на своем компьютере, а также вносить изменения прямо на GitHub.
Допустим, вы хотите внести некоторые изменения в свой файл README прямо на GitHub.
- Сначала зайдите в свой репозиторий.
- Нажмите на имя файла, чтобы вызвать этот файл (например, нажмите «README.md», чтобы перейти к файлу readme).
- Нажмите значок карандаша в верхнем правом углу файла и внесите некоторые изменения.
- Напишите короткое сообщение в поле, которое описывает сделанные вами изменения (и расширенное описание, если хотите).
- Нажмите кнопку «Подтвердить изменения»
Редактирование вашего файла на GitHub
Передача ваших изменений
Теперь изменения были внесены в файл README в вашем новом хранилище! (Я хочу обратить ваше внимание на маленькую кнопку, которую вы можете отметить на изображении выше, которая позволит вам создать новую ветку для этого коммита и запустить запрос на извлечение. Мы поговорим об этом позже!). Довольно легко, правда?
Довольно легко, правда?
Я предпочитаю работать с файлами на своем локальном компьютере, а не пытаться заставить все работать с веб-сайта GitHub, поэтому давайте настроим это сейчас.
Fork репозитория
Fork (форк) репозитория это возможность скопировать чужой репозитория на свой аккаунт и вносить любые изменения в него, без изменения оригинального репозитория. Можно сделать форк любого доступного репозитория. При создании форка нас спросят в какой аккаунт мы хотим его добавить.
В чем же отличие от клонирования репозитория? При клонировании мы только используем файлы оригинального репозитория и при создании коммита с какими-то изменениями, GitHub Desktop скажет нам, что у нас нет доступа на запись и сам предложит сделать форк. (Если доступ к этому репозиторию у нас есть, то сделать коммит мы сможем.) А если мы сделали форк, то изменения уйдут в нашу копию в нашем аккаунте.
Fork может быть полезен при разработки открытого ПО, например, мы сделали форк алгоритма сжатия, в нем мы изменили функцию сжатия и теперь алгоримт сжимает в 10 раз лучше. Мы можем сделать Pull request, т.е. запросить у хозяина оригинального репозитория с алгоритмом сжатия, интегрировать наши изменения в его репозиторий.
Что такое Git?
Git — система контроля версий (version control system, VCS), созданная программистом Линусом Торвальдсом для управления разработкой ядра Linux в 2005 году. Хорошо, а что это всё-таки значит?
Представьте, что вы с коллегами вместе пишете ядро Linuxнаучную статью. У вас на компьютере есть папка, где лежат текстовые документы, картинки, графики и прочие нужные файлы; то же самое есть и у ваших коллег. Когда кто-то из вас изменяет, добавляет или удаляет файлы, остальные этих изменений не видят. Вы пишете друг другу об изменениях, пересылаете обновленные версии файлов, но в процессе работы непременно возникает путаница: какая версия текста — последняя? Куда и когда исчезла пара абзацев? Кто внес те или иные правки? Избежать таких проблем и помогают системы контроля версий. Устроено это так:
- Ваша папка на компьютере — это не просто папка, а локальный репозиторий.
- Она является копией удалённого репозитория, который лежит на веб-хостинге (например, GitHub или BitBucket).
- Eсли вы работаете над проектом с коллегами, то своя локальная копия есть у каждого.
- Kогда вы внесли некоторое количество изменений, вы можете их сохранить, и это действие запишется в журнал; это называется commit (коммит).
- После этого можно отправить изменения в удалённый репозиторий; это называется push (пуш, пу́шить, запу́шу, пуши́ от души).
- Актуальная версия проекта, учитывающая последние изменения всех участников, будет храниться в удалённом репозитории.
- Если вы увидели, что ваши коллеги запушили в удалённый репозиторий что-то новенькое, то можно (и нужно!) “скопировать” это себе на компьютер (в локальный репозиторий); это называется pull (пулл).
Чем-то похоже на Dropbox, Google Drive и прочие облачные хранилища, правда? Только в данном случае ваши файлы синхронизируются не автоматически, а по команде, и возможностей управления ими гораздо больше.
Понятно, что для совместной работы над текстом научной статьи вполне хватит и Google Docs, но вот если, например, вы хотите опубликовать результаты исследования в интернете и сделать для этого собственный сайт, то без VCS обойтись сложно. И ещё раз, системы контроля версий хороши тем, что:
- они позволяют работать над проектом в команде;
- вы видите, кем и когда были внесены те или иные изменения;
- их всегда можно откатить назад;
- вы не потеряете проделанную работу, даже если что-то удалите на своем компьютере;
- ваши наработки могут быть полностью открыты для других (а это доступность знаний и ускорение развития технологий, ура!);
- GitHub и GitLab позволяют не только хранить и просматривать файлы проекта, но и публиковать веб-сайты, документацию и т.п.
Существует много систем управления версиями, но мы будем пользоваться самой распространенной — git. Также нам нужно как-то отдавать гиту команды, и делать это можно двумя способами: с помощью командной строки и через графический интерфейс (graphical user interface, GUI). Графический интерфейс программы — это все те окошки с кнопочками, которые мы привыкли видеть. Существует много графических интерфейсов для Git, например:
- TortoiseGit
- GitKraken
- GitHub Desktop
- Fork
- Git GUI
- Git Extensions
- SourceTree
Мы будем пользоваться программой GitHub Desktop, которую можно скачать отсюда. Если вы уже знакомы с Git, то вы можете выбрать любую программу или пользоваться командной строкой — это не принципиально. Стоит отметить, что пользоваться командной строкой гораздо сложнее чем графическим интерфейсом, поэтому она больше подходит продвинутым пользователям.
Итого:
- Git — разновидность системы контроля версий (самая популярная). Его можно скачать и установить, далее использовать через командную строку.
- Можно использовать графический интерфейс для работы с Git. При этом скачивать и устанавливать сам Git отдельно не нужно, он обычно идет в комплекте с графическим интерфейсом (но не во всех GUI).
- Репозиторий — это место где мы храним наш код проекта и всю информацию по файлам, их изменения и т.д. Репозиторий должен где-то хранится, чтобы у всех был доступ к нему и они могли видеть изменения. Его можно хранить и на домашнем компьютере, но не всегда удобно держать компьютер включенным целыми сутками, поэтому используют хостинги для репозиториев. Одними из самых известных являются GitHub и GitLab.
Заключение
Чем больше использовать GitHub, тем больше опыта работы с нужными рабочими процессами. Git — это мощная платформа для совместной работы, в которой есть множество команд, рабочих процессов и функций, которые можно использовать для различных сценариев. Несмотря на разнообразие команд и рабочих процессов Git, наиболее используемые сценарии ограничены по объему и доступны для изучения без особых усилий. Довольно скоро такие рабочие процессы станут автоматическими.
Используемые в этом занятии команды в интерфейсе GitHub Desktop можно попробовать и в командной строке. Возможно, что командная строка понравится больше. Но GitHub Desktop может стать хорошей отправной точкой.
Итоги
Возможно, на первый взгляд, покажется сложным, но после небольшой практики, вся базовая работа с GitHub Desktop на начальном этапе сойдется к тому, что вы поработали с проектом на работе > сделали коммит (“Commit to main”) > отправили на GitHub (“Push origin”). Пришли домой > получили изменения из GitHub (“Pull origin”) и продолжаете работу дома.
- “Commit to main”
- “Push origin”
- “Pull origin”
Возможно, через некоторое время напишу статью про другие возможности GitHub Desktop
Больше информации на официальном сайте GitHub Desktop
Друзья, стараюсь для вас, поддержите проект!
Подписывайтесь, впереди много всего интересного и полезного 😉
Telegram — https://t.me/frontips