Git инструкция для начинающих. Работаем с GitHub
Это запись о том как быстро начать работу с Git’ом. Не какой воды.
Установка Git
Подробнее о том как установить Git я описал здесь:
https://techblog.sdstudio.top/blog/kak-ustanovit-git-v-windows
Первоначальная настройка git
git config --global user.name "John Doe" //Ваше имя git config --global user.email "[email protected]" //Ваш e-mail git config --global core.editor nano //Текcтовый редактор для git git config --global merge.tool vimdiff //Утилита сравнения git config --list //Проверка всех настроек
Настройка SSH-авторизации
ssh-keygen -t rsa -C "[email protected]" //Создаём ssh-ключ на локальной машине, если не был создан ранее
Далее жмем несколько раз “Enter” и получаем вот такое сообщение в консоли.
Далее копируем открытый ssh-ключ в буфер обмена. Команда для копирования вводится в зависимости от Вашей OS.
Для Mac
pbcopy < ~/. ssh/id_rsa.pub
Для Linux (Ubuntu)
cat ~/.ssh/id_rsa.pub
Для Windows (Git Bash)
clip < ~/.ssh/id_rsa.pub
Как ввести SSH ключ на стороне Git’a
Входим в свой аккаунт на Git’e, далее наводим курсор мышки на свою аватарку и жмем “Settings”:
Теперь жмем на вкладку “SSH and GPG keys”:
Далее нажимаем кнопку “New SSH Key”. Указываем имя и вставляем ключ в поле Key. Нажимаем Add Key.
Работа с репозиторием
Теперь на сайте github.com создадим новый репозиторий, если это новый проект.
Теперь перейдём в папку с проектом на локальной машине и дадим команду:
git init //Инициализация git-репозитория git add * //Добавим существующие файлы для отслеживания изменений в них touch .gitignore //Создадим файл, куда будем заносить файлы, которые не требуется отслеживать git remote add origin [email protected]:yourname/yourproject.git //Слинкуем удалённый репозиторий как origin git pull origin master //Скачиваем последний правки с удалённого репозитория git push --all //Отправляем новые правки на сервер
Клонирование репозитория
Покажу на примере Windows.
Когда вы создаете репозиторий на GitHub, он существует как удаленный репозиторий. Вы можете клонировать свой репозиторий, чтобы создать локальную копию на вашем компьютере и синхронизировать между этими двумя местоположениями.
В этой процедуре предполагается, что вы уже создали хранилище на GitHub или имеете существующее хранилище, принадлежащее кому-то, кому вы хотели бы внести свой вклад.
Клонирование репозитория с помощью командной строки
На GitHub перейдите на главную страницу репозитория.
Примечание. Если хранилище пустое, вы можете вручную скопировать URL-адрес страницы хранилища из браузера и перейти к шагу 4.
Под именем хранилища нажмите Клонировать или загрузить .
Чтобы клонировать репозиторий с использованием HTTPS, в разделе «Клонировать с HTTPS» нажмите . Чтобы клонировать репозиторий с использованием ключа SSH, включая сертификат, выданный центром сертификации SSH вашей организации, нажмите « Использовать SSH» , затем нажмите .
Откройте Git Bash. TerminalTerminal
Измените текущий рабочий каталог на место, где вы хотите сделать клонированный каталог.
Введите,
git clone
а затем вставьте URL-адрес, скопированный на шаге 2.$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY
Нажмите Enter. Ваш местный клон будет создан.
$ git clone https://github.com/YOUR-USERNAME/YOUR-REPOSITORY > Cloning into `Spoon-Knife`... > remote: Counting objects: 10, done. > remote: Compressing objects: 100% (8/8), done. > remove: Total 10 (delta 1), reused 10 (delta 1) > Unpacking objects: 100% (10/10), done.
Клонирование репозитория в GitHub Desktop
- На GitHub перейдите на главную страницу репозитория.
- Под своим именем репозитория нажмите, чтобы клонировать свой репозиторий в Desktop. Следуйте инструкциям в GitHub Desktop, чтобы завершить клонирование. Для получения дополнительной информации см. « Клонирование хранилища из GitHub в GitHub Desktop ».
Ссылка на оригинал Время создания: 07.06.2012 23:37 Раздел: Компьютер — Программирование — Системы контроля версий (VCS) — Git Запись: xintrea/mytetra_syncro/master/base/1339097829h0xmeapk1u/text.html на raw.github.com | |||||
Почему Git Краткий ответ: потому что не появляются задержки от работы с системой контроля версий. Git хранит всё локально, включая историю, ветки, коммиты и позволяет переключаться между всем добром без обращения к сети. Авторизация в GIT производится по персональному ключу а не паролю, который кешируется на некоторое время на стороне клиента, а не запоминается навсегда в настройках клиента. GIT позволяет легко работать с ветками, без видоизменений раскладки репозитория, и древесный просмотр изменений позволяет видеть что из какой ветки пришло. Более подробно можно прочитать http://habrahabr.ru/blogs/Git/104198/ Общие сведения о Git Подробно о работе с Git, что это такое можно прочитать в Git Book по адресу http://book.git-scm.com/ В классических VCS (Version Control System) (CVS, SVN), в рабочей копии хранится текущее состояние репозитория, и базовая копия текущей ревизии. На сервере хранятся все ревизии в виде изменений от предыдущей, либо в виде полных копий каждой ревизии с вычислением разницы по запросу. Все ревизии нумеруются по порядку начиная от первой. Так как SVN хранит только изменения всего репозитория, «ветки» в нем реализуются через специальную организацию файлов в хранилище. Классически, это /trunk/ для последнего кода, /branch/somename/ для веток. Для создания ветки, делается копия /trunk/ в /branch/somename/, над которым уже работает разработчик. При этом, при каждом коммите, идёт обращение к центральному репозиторию, для сохранения изменения, отрабатывают скрипты на сервере, идет непрерывная нумерация изменений, запрос истории так же требует обращения на сервер и т.д. Git относится к классу DVCS (Distributed Version Control System). При этом рабочая копия содержит все коммиты, историю, ветки, всё необходимое для ведения разработки без обращения к какому-либо серверу. Для синхронизации изменений между разными копиями репозитория, в нужный момент делается pull чтобы скопировать изменения удалённого репозитория к себе, либо push чтобы скопировать локальные изменения в удалённый репозиторий. В случае с Git, каждый коммит имеет уникальный ID в виде хеша, содержащий в себе все файлы, относящиеся к нему. Каждый коммит имеет один коммит-родитель, и, возможно, коммит-источник слияния. Таким образом, коммиты представляют собой дерево наборов файлов. «Веткой» является указатель на какой-либо коммит. Таким образом, чтобы создать ветку, нужно просто дать имя какому-либо коммиту. Чтобы слить две ветки, одна из которых начинается с конца другой, можно просто передвинуть указатель второй ветки на новый коммит (это называется Fast-Forward). Чтобы поддерживать «плоскую» основную ветку (master), используется техника ребейза веток перед слиянием, и слияение без fast-forward’а. Rebase означает смену родителя ветки на новый коммит. При ребейзе все изменения, внесенные в данной ветке, откатываются назад и сохраняются в виде изменений, внесенных каждым коммитом; после чего указатель ветки переносится на новое начало, и на него последовательно начинают применяться изменения. Если конфликтов нет, то изменения накладываются автоматически, после чего ветка представляет собой набор изменений относительно нового начала. Если теперь сделать слияние этой ветки с исходной, указатель головы исходной ветки будет просто передвинут на новое место, и мы потеряем информацию о том, что вообще существовала новая ветка. Именно поэтому используется слияние без fast-forward’а. При этом, даже если новая ветка начинается с конца предыдущей, создаётся специальный merge-commit, содержащий информацию о том, что в этом месте сливается текущая ветка с дополнительной. Подробнее о том, что такое rebase в картиках тут: http://book.git-scm.com/4_rebasing.html Алгоритм работы над задачей Стандартный алгоритм работы над какой-либо задачей выглядит так:
Правила ведения чистых коммитов Все коммиты, которые попадают в центральную ветку, должны следовать следующим правилам:
Работа под Windows Для работы с Git под Windows самое удобное – использовать TortoiseGit. Однако следует знать, что на 2017 год есть более удобный инструмент — SmartGit. Подготовка к работе
Получение репозитория В папке, где будут размещаться все рабочие проекты, жмём Основные используемые функции При работе используются либо консольные утилиты, аналогично linux, либо графический интерфейс.
Стандартные процедуры работы
Работа под Linux Подготовка к работе
Получение репозитория Переходим в директорию для работы, и запускаем git clone ssh://git@СЕРВЕР:ПОРТ/РЕПОЗИТОРИЙ.git Основные используемые функции
Стандартные процедуры работы
| |||||
Так же в этом разделе:
| |||||
|
русский язык · GitHub Topics · GitHub
Вот 314 публичных репозиториев соответствует этой теме…
ай-навсегда / ru-gpts
Звезда 1,7кай-навсегда / ру-далле
Звезда 1,6кКозиев / чат-бот
Звезда 221акарнокд / открытый ИГ
Звезда 207вларин / трансформеры-ру
Звезда 162Чемблис / Многоязычный_NER
Звезда 146матюшкин / дс
Звезда 132матюшкин / уроки
Звезда 120снейкерс4 / russian_stt_text_normalization
Звезда 106датакун / русские имена
Звезда 103Старый Бонарт / Осинт-Ресурсы
Звезда 88lsfusion-решения / моя компания
Звезда 85Гекслет / RestApiTutorial.
ru Звезда 80перевод-банда / документы-следующий
Звезда 73cpp-ru / идеи
Звезда 71СОБАКА729 / ruMount-BladeBannerlord
Звезда 57Старый Бонарт / ML-ресурсы
Звезда 57авантюра / АРУ
Звезда 51AlexxNB / svelte3-translation-ru
Звезда 49алордаш / BotSmartScheduler
Звезда 45Улучшить эту страницу
Добавьте описание, изображение и ссылки на русский язык страницу темы, чтобы разработчикам было легче узнать о ней.
Курировать эту тему
Добавьте эту тему в свой репозиторий
Чтобы связать ваш репозиторий с русский язык тему, перейдите на целевую страницу репозитория и выберите «управление темами».
Узнать больше
Использование Git в классе
На моих продвинутых уроках программирования я обнаружил, что учащиеся средней школы способны выполнять гораздо более сложные операции, чем мы часто думаем. Во многих случаях они вполне способны использовать стандартные отраслевые инструменты для выполнения замечательной работы.
В нашем классе одним из центральных инструментов для нашей работы является Git. Это система контроля версий, разработанная не кем иным, как Линусом Торвальдсом, создателем ядра Linux. Глядя на первую страницу сайта Git, вы должны понять, насколько хорошо он зарекомендовал себя в отрасли. Он занимает такое же место в классе информатики, как и любой другой инструмент, который мы могли бы использовать, даже на уровне средней школы.
Мы более подробно поговорим о функциях Git в следующих разделах, но главная кахуна заключается в следующем: синхронизация с удаленным репозиторием и отслеживание изменений кода несколькими пользователями. Это технология, которая позволяет GitHub быть невероятной библиотекой проектов с открытым исходным кодом. Те же функции, которые позволяют GitHub быть GitHub, также позволяют учителям легко управлять проектами нескольких учащихся и даже справедливо и четко выполнять совместную работу.
Помощников с графическим интерфейсом для Git предостаточно (GitHub даже предлагает свои собственные), но мы обнаружили, что проще всего использовать простую командную строку. Более того, знакомство с Git и командной строкой в средней школе приносит дивиденды в долгосрочной перспективе.
Начало работы с Git
На Mac и Windows установка настольного приложения, указанного выше, — это простой способ начать работу. Это также установит инструменты командной строки, лежащие в основе системы Git. Опять же, я настоятельно рекомендую использовать командную строку вместо инструментов с графическим интерфейсом. Вот почему.
Используйте клавиатуру
Студенты любят изучать командную строку. Подобно языкам программирования, командная строка кажется тайной силой, тайным знанием. При правильном построении это может быть так же просто, как обучение любому другому пользовательскому интерфейсу.
Да, командная строка может быть пугающей:
$ здесь можно ввести что угодно
Это компьютерная версия долгого взгляда в бездну — она смотрит в вас. Но учтите: язык интерфейса — это человеческий язык. Просто слова. Это то, что, по правде говоря, более знакомая, чем загадочная иконография, используемая в большинстве интерфейсов. После небольшой практики я предсказываю, что вы и ваши ученики будете постоянно открывать окна терминала и использовать их всякий раз, когда сможете. Есть старая поговорка о графических интерфейсах: они делают простые вещи простыми, а сложные — невозможными. После того, как вы изучили touch
, mkdir
и cd
, посмотрите, какой из них занимает больше времени — GUI или CLI.
И не зря, но освоение CLI дает студентам чувство выполненного долга. Они гордятся тем, что знают это, и такая самооценка может иметь большое значение.
Все шаги в этой статье будут выполняться с использованием примеров CLI.
Ваш первый репозиторий
Время для Git-эквивалента Привет, мир! Давайте создадим новый каталог для использования в качестве нашего репозитория Git:
mkdir gitdemo
cd gitdemo
Теперь мы внутри нашей новой папки. Пришло время сделать его правильным репозиторием Git:
git init
Вы увидите Initialized пустой репозиторий Git в /path/to/your/repo/.git/
. Что это за . git
? Если вы перечислите все файлы в вашем каталоге ( ls -a
), вы увидите новый скрытый каталог .git/
. Именно здесь Git хранит информацию об этом новом репозитории. Время добавить несколько файлов.
touch new.txt
echo "Привет, мир!" > new.txt
У вас будет новый файл new.txt
, в котором теперь будет одна строка текста: Привет, мир! Довольно круто, как мы могли сделать это из командной строки, не открывая текстовый редактор, а?
Но это не просто старая папка; это репозиторий Git ! Git отследил, что у нас появился новый файл. Введите следующую команду:
git status
Мы получим следующее:
На мастере ветки Первоначальная фиксация Неотслеживаемые файлы: (используйте "git add...", чтобы включить в то, что будет зафиксировано) новый.txt ничего не добавлено для фиксации, но присутствуют неотслеживаемые файлы (используйте «git add» для отслеживания)
Вот пошаговый перевод:
- У нас может быть несколько версий этой папки, и вы смотрите на одну из них под названием master .
- Еще не было выполнено ни одной фиксации (сохранения).
- Я вижу в этой папке несколько файлов, о которых вы мне еще не сказали. Вот они…
Коммит в Git немного сложнее, чем просто нажать кнопку «Сохранить». Git позволяет нам выбирать, какие файлы мы будем отслеживать в репозитории. Это также позволяет нам сохранять промежуточные файлы в его историю, а не просто сохранять все время. Это может показаться хлопотным, но со временем преимущества такого контроля раскрываются.
Итак, прежде чем мы отправим test.txt
в АННАЛЫ ИСТОРИИ, мы должны подготовить его.
git add new.txt
После этого ничего не выводится, но запуск git status
снова дает:
На мастере ветки Первоначальная фиксация Изменения, которые необходимо зафиксировать: (используйте "git rm --cached ...", чтобы убрать стадию) новый файл: new.txt
Хорошо, отлично. Теперь Git знает о нашем файле. Пришло время зафиксировать наши изменения в истории Git.
git commit -m «Добавить новый.txt»
Флаг -m
предоставляет сообщение фиксации. Такое сообщение требуется для всех коммитов. Если вы не предоставите его с флагом -m
, Git вышвырнет вас в текстовый редактор командной строки, что может нервировать, если вы к нему не привыкли. Я рекомендую пока использовать флаг -m
.
После команды фиксации вы увидите такой вывод:
[мастер (корневая фиксация) c6c1180] Добавить new.txt 1 файл изменен, 1 вставка(+) режим создания 100644 new.txt
Перевод:
- Наш первый коммит! Также мы находимся на главной ветке. Я сделал уникальный идентификатор для этой фиксации.
- Вот что изменилось в этой фиксации.
- Я сделал один файл.
Мы почти закончили! Но большинство ваших коммитов не будут первоначальными, верно? Это будут обновления репозиториев, с которыми вы уже работали. Итак, давайте внесем некоторые изменения.
эхо "Foobar!" >> new. txt
Это добавляет новую строку (опять же, без текстового редактора) к нашим новый.txt
. Быстрый запуск git status
показывает:
На мастере ветки Изменения, не подготовленные для фиксации: (используйте "git add...", чтобы обновить то, что будет зафиксировано) (используйте "git checkout --...", чтобы отменить изменения в рабочем каталоге) изменено: new.txt в фиксацию не добавлено никаких изменений (используйте "git add" и/или "git commit -a")
Посмотрите на это! изменено: new.txt
. Git видит изменения в нашем файле. Если вам интересно, что именно изменилось в , вы можете запустить git diff new.txt
. Это дает что-то вроде:
diff --git a/new.txt b/new.txt индекс 8ab686e..d8eeaac 100644 --- a/new.txt +++ b/new.txt @@ -1 +1,2 @@ Привет, мир! +Фубар!
Обратите внимание на +
вокруг добавленной строки. Это кажется разумным изменением, поэтому мы собираемся его зафиксировать. Не забудьте git add new.txt
или git add -A
, чтобы добавить этот файл или все файлы, соответственно, в промежуточную область. Еще один вызов git commit
с соответствующим сообщением фиксации дает нам в общей сложности две фиксации в нашей истории. Идите вперед и посмотрите, что Git отслеживает для вас с помощью git log
.
Полезно, не так ли? Функциональность Git намного глубже, но вы только что прошли довольно стандартный рабочий процесс Git для разработчиков.
Переход на удаленку
Использование Git для управления локальными проектами очень полезно, но технология действительно эффективна в сочетании с удаленными репозиториями, такими как GitHub или Bitbucket. Итак, давайте продолжим и сделаем это. Я решил использовать GitHub для этой статьи, поскольку на данный момент это лучший сервис удаленного репозитория. Мне нравится Bitbucket для личных проектов, но есть серьезное преимущество в том, чтобы работать на одной платформе с другими разработчиками. Думайте об этом как о социальных сетях для программистов.
Вы можете настроить для этого учетную запись GitHub, если хотите, но она вам не понадобится, так как я уже сделал для вас репозиторий. Вы собираетесь подключиться к моей удаленной онлайн-версии репозитория gitdemo
и загрузить мои изменения, которые затем сольются с вашими.
ПРИМЕЧАНИЕ ПО БЕЗОПАСНОСТИ: В сообществе FOSS мы все друзья. И мы все время скачиваем код с других компьютеров. Но то, о чем я собираюсь вас попросить, требует определенного доверия, и я не думаю, что вы должны делать это вслепую. Пожалуйста, не стесняйтесь просматривать этот крошечный репозиторий, чтобы убедиться, что я не пытаюсь заразить вашу машину вредоносным кодом. Или любой код, если на то пошло.
После этого давайте настроим ваш локальный репозиторий для поиска в моем исходных изменениях, введя:
git remote add upstream https://
github.com/mttaggart/gitdemo
Нет вывода значит сработало. Теперь мы готовы загрузить (извлечь) и объединить файлы на GitHub с вашим локальным репозиторием. Мы можем сделать оба шага одновременно с помощью git pull
или выполнить оба шага по отдельности с помощью git fetch
и git merge
. Для простоты потянем:
git pull восходящий мастер
Эй, что это за мастер? Не беспокойся; это просто означает, что мы находимся в основной ветке репозитория, основной ветке.
Думаю, это багажник. В любом случае, вы видите этот вывод:
Слияние по «рекурсивной» стратегии. README.md | 1 + 1 файл изменен, 1 вставка(+) создать режим 100644 README.md
Похоже, у вас есть новый файл! Проверьте README.md
и посмотрите, что случилось. Если вы хотите получить хорошую визуализацию того, что только что произошло, выполните следующее:
git log --graph
# q завершает работу, j и k прокручивает
Вы можете видеть, что произошло слияние двух веток — удаленной и локальной, что привело к текущему положению дел.
Если бы вы и я работали вместе над этим репозиторием, а затем внесли некоторые изменения, которые необходимо зафиксировать в нашем общем репозитории GitHub, вы бы просто git push
загрузили свои изменения в GitHub, объединив их с тем, что было там ранее .
«Отлично, Таггарт, теперь я могу использовать Git. Как это делает меня лучшим учителем?» Секрет в том, чтобы думать вне кода.
Git-портфолио
Многие преподаватели говорят о важности цифровых портфолио для учащихся, но лишь немногие на самом деле добиваются успеха. Это сложно — как вы представляете столько разных документов? Как вы следите за тем, что должно и не должно быть включено? Как вы гарантируете, что портфолио создано на платформе, к которой учащиеся смогут получить доступ, даже после того, как они закончат или покинут школу?
Git, Git, Git, HTML и Git.
Представьте себе, что учащиеся ведут каталог документов (в идеале в формате Open Document Format или, что еще лучше, в формате HTML), которые они курируют на протяжении всей своей школьной карьеры. Возможно, каждый квартал они принимают какие-то решения о том, какой работой они гордятся больше всего. Они добавляют эти файлы в репозиторий Git, фиксируют и отправляют в удаленное репо. Это не обязательно должен быть GitHub, если вас беспокоит конфиденциальность. Такие проекты, как GitLab, позволяют школам создавать собственные удаленные репозитории Git, не полагаясь на третьи стороны.
Благодаря функциям отслеживания и управления версиями, на которые разработчики полагаются при создании чистого кода, учащиеся получают хорошую хронологию своей истории работы. Они даже могут создать выпусков своего портфолио на разных этапах школьной карьеры, чтобы продемонстрировать рост. Я понимаю, что Git никогда не предназначался для этой цели, но я считаю, что это возможное решение проблемы портфолио.
Информатика с Git
Я провожу уроки программирования в средней школе с помощью Git/GitHub. Я понимаю, что на GitHub есть неплохое решение для управления несколькими студенческими репозиториями, но я решил развернуть свое собственное — отчасти потому, что в школе уже используется система управления обучением, которая может отслеживать задания, а отчасти — для того, чтобы заставить себя достаточно хорошо изучить Git. что я был бы уверен, что использую его для управления классом.
Вот как я это сделал:
1. Создайте исходный репозиторий
Исходный репозиторий — это репозиторий, в который вы отправляете заглушку или начальный код для работы ваших учащихся. Я также поместил цели урока в формате Markdown в этот репозиторий. Каждый урок получает свою папку. Каждую неделю новый коммит приносит новый проект.
2. Настройка учетных записей учащихся
Решение GitHub Classroom позволяет преподавателям создавать частные репозитории для студенческих работ — большое преимущество, если речь идет о конфиденциальности. Кроме того, вы можете просто разрешить учащимся создавать личные общедоступные учетные записи на GitHub или Bitbucket. Если студенты с самого начала владеют учетной записью, они рано начинают свою карьеру в качестве разработчиков. Более того, создание учетной записи может стать возможностью обсудить онлайн-безопасность, цифровое гражданство и интеллектуальную собственность.
3. Разветвить вышестоящий репозиторий
После того, как учащиеся создадут свои учетные записи, они должны разветвить ваш вышестоящий репозиторий.
Разветвление создает личную копию вашего кода (открытый исходный код — это здорово, не так ли?), которую учащиеся могут изменять и расширять самостоятельно. Вы можете добавить в восходящий поток столько, сколько хотите; студенты возьмут это и убегут оттуда.
4. Клонировать/извлекать студенческие репозитории
git clone
захватывает удаленный репозиторий и загружает локальную копию на ваш компьютер вместе с историей коммитов репозитория. У меня есть папка, в которой я git clone
d все репозитории моих учеников. Затем, используя небольшой Bash-скрипт, который я написал, я извлекаю все репозитории как один раз, создавая объединенный файл журнала двух последних коммитов каждого студента. Их коммиты говорят мне, над чем они работали с тех пор, как я последний раз проверял, поэтому я знаю, что нужно вернуться и просмотреть старые уроки, если они улучшили свои решения.