Как сделать локальный репозиторий git
Git и Github. Простые рецепты
При разработке собственного проекта, рано или поздно, приходится задуматься о том, где хранить исходный код и как поддерживать работу с несколькими версиями. В случае работы на компанию, обычно это решается за вас и необходимо только поддерживать принятые правила. Есть несколько общеупотребимых систем контроля версий, и мы рассмотрим одну из самых популярных — это Git и сервис Github.
Система Git появилась, как средство управления исходными текстами в операционной системе Linux и завоевала множество поклонников в среде Open Source.
Сервис Github предоставляет хостинг (хранение) исходных текстов как на платной, так и на бесплатной основе. Это одна из крупнейших систем, которую любят Open Source пользователи. Основное отличие платной версии — это возможность создания частных репозиториев (хранилищ) исходных текстов и если вам скрывать нечего, то можете спокойно пользоваться бесплатной версией.
После того, как вы начали работу над проектом и написали какой-то работающий прототип, у вас появится желание сохранить результаты работы. Это так же может быть полезно в случае, если вы захотите продолжить работу на другом компьютере. Самое простое решение — это сохранить все на флешке. Этот вариант неплохо работает, но если есть подключение к интернету (а сейчас у кого его нет), то удобно воспользоваться системами Git/Github.
В этой статье будут описаны базовые сценарии использования систем Git/Github при работе над проектом в среде Linux с помощью командной строки. Все примеры проверялись на системе с Linux Ubuntu 14.04 и Git 1.9.1. Если вы пользуетесь другим дистрибутивом, то возможны отличия.
Создание локального репозитория
Предположим, что ваш проект находится в папке /home/user/project. Перед тем, как сохранять исходники, можно посмотреть, нет ли временных файлов в папке с проектом и по возможности их удалить.
Для просмотра папки удобно воспользоваться командой tree, которая покажет не только содержимое каждой папки, но и древовидную структуру директорий.
Часто временные файлы содержат специфические суффиксы, по которым их легко обнаружить и в последствии удалить. Для поиска таких файлов можно воспользоваться командой find. В качестве примера посмотрим, как найти все файлы, которые генерируются компилятором Python и имеют расширение .pyc
Переходим в папку с проектом /home/user/project:
И показываем список файлов с расширением .pyc:
Эта команда выведет список всех файлов с расширением .pyc в текущей директории и в ее поддиректориях. Для удаления найденных файлов, достаточно добавить ключ -delete к этой команде:
Очень рекомендуется не спешить и сразу ключ этот не добавлять. Первый раз вызвать команду для просмотра файлов и только убедившись, что в список не попало ничего полезного добавить ключ удаления.
Создадим локальный репозиторий в папке с проектом:
После выполнения этой команды появится новая папка с именем .git. В ней будет несколько файлов и поддиректориев. На данный момент система управления версиями еще не видит наших файлов.
Добавление файлов в локальный репозиторий
Для добавления файлов используется команда:
После выполнения команды, файл readme будет добавлен в систему управления версий (конечно если он уже был то этого в проекте). При добавлении файла генерируется хеш значение, которое выглядит примерно так:
Добавленные файлы хранятся в папке .git/objects/xx/yyyyyyyy, при этом первые 2 цифры хеша ипользуются для указания директории, а остальное хеш значение является именем файла. Наш добавленный файл будет находится здесь:
Что легко увидеть с помощью команды:
Сам файл является архивом, который легко распаковать и вывести на экран, указав полное значение хеша.
Для того, чтобы добавить все файлы из текущей директории введите:
Если нужно добавить файлы из текущей директории и из всех поддиректориев, то используйте:
Для того, чтобы в систему не попадали временные файлы, можно их занести в файл .gitignore, который нужно создать самостоятельно и разместить в корневом каталоге проекта (на том же уровне, что и .git директория).
Например, если в в файл .gitignore добавить следующую строчку *.pyc, то все файлы с расширением .pyc не будут добавляться в репозиторий.
После добавления файлов, все изменения находятся в так называемой staging (или cached) area. Это некоторое временнное хранилище, которое используется для накопления изменений и из которого создаются собственно версии проектов (commit).
Для просмотра текущего состояния можно воспользоваться командой:
После выполнения команды мы увидим, что в stage area находится наш файл:
Если вы продолжите вносить изменения в файл readme, то после вызова команды git status вы увидите две версии файла.
Чтобы добавить новые изменения достаточно повторить команду. Команда git add не только добавляет новые файлы, но и все изменения файлов, которые были добавлены ранее.
Можно отменить добавления файла readme в staging area с помощью команды:
После выполнения команды, файл readme отметится, как неизмененный системой.
Создание версии проекта
После того, как мы добавили нужные файлы в staging area мы можем создать версию проекта. С помощью команды:
Каждая новая версия сопровождается комментарием.
После коммита, мы сможем найти два новых объекта внутри .git репозитория.
Посмотрим, что внутри:
Ключ -t показывает тип объекта. В результате мы видим:
Для второго объекта:
Для самого первого файла:
Если мы будем дальше изучать содержимое этих файлов, то обнаружим древовидную структуру. От каждого коммита можно по ссылкам пройти по всем измененным файлам. Для практического применения это не очень нужно, но возможно так будет легче понять, что происходит при работе с системой Git.
Самую первую версию отменить нельзя. Ее можно только исправить. Если вы хотите добавить изменения в последнюю версию, то после выполнения команды commit, добавляете необходимые изменения и вызываете:
Ключ —no-edit нужен, чтобы не вводить заново комментарий.
Можно просмотреть изменения, которые вы внесли последним коммитом:
Ключ —name-only нужен, чтобы показывать только имена измененный файлов. Без него по каждому измененнному файлу будет выдан список всех изменений.
Если вы продолжили работать и изменили только те файлы, которые были уже добавлены в систему командой git add, вы можете сделать коммит одной командой:
Для просмотра списка всех коммитов, воспользуйтесь командой:
Ключ —oneline нужен, чтобы уменьшить количество информации выдаваемой на экран. С этим ключем каждый коммит показывается в одну строчку. Например:
Для того, чтобы просмотреть изменения по конкретному коммиту, достаточно в команду git show добавить хеш значение коммита, которое можно получить с помощью предыдущей команды.
Для отмены последнего коммита (кроме самого первого) можно воспользоваться следующей командой:
Для того чтобы удалить все файлы в папке, которые не относятся к проекту и не сохранены в репозитории, можно воспользоваться командой:
Создание репозитория на Github
До текущего момента мы работали с локальным репозиторием, который сохранялся в папке на компьютере. Если мы хотим иметь возможность сохранения проекта в интернете, создадим репозиторий на Github. Для начала нужно зарегистрироваться на сайте github.com под именем myuser (в вашем случае это может быть любое другое имя).
После регистрации нажимаем кнопочку «+» и вводим название репозитория. Выбираем тип Public (репозиторий всегда Public для бесплатной версии) и нажимаем Create.
В результате мы создали репозиторий на сайте Github. На экране мы увидим инструкцию, как соединить наш локальный репозиторий со вновь созданным. Часть команд нам уже знакома.
Добавляем удаленный репозиторий (по протоколу SSH) под именем origin (вместо origin можно использовать любое другое имя).
Можем просмотреть результат добавления с помощью команды:
Если все было правильно сделано, то увидим:
Для того, чтобы отменить регистрацию удаленного репозитария введите:
Это может понадобиться, если вы захотите поменять SSH доступ на HTTPS. После этого можно добавить его опять, например под именем github и протоколом HTTPS.
Следующей командой вы занесете все изменения, которые были сделаны в локальном репозитории на Github.
Ключ -u используется для того, чтобы установить связь между удаленным репозиторием github и вашей веткой master. Все дальнейшие изменения вы можете переносить на удаленный репозиторий упрощенной командой.
Перенос репозитория на другой компьютер
После того, как репозиторий был создан на Github, его можно скопировать на любой другой компьютер. Для этого применяется команда:
Результатом выполнения этой команды будет создание папки project в текущем каталоге. Эта папка также будет содержать локальный репозиторий (то есть папку .git).
Так же можно добавить название папки, в которой вы хотите разместить локальный репозиторий.
Работа с одним репозиторием с разных компьютеров
С одним репозиторием с разных компьютеров может работать несколько разработчиков или вы сами, если например работаете над одним и тем же проектом дома и на работе.
Для получения обновлений с удаленного репозитория воспользуйтесь командой:
Если вы изменили ваши локальные файлы, то команда git pull выдаст ошибку. Если вы уверены, что хотите перезаписать локальные файлы, файлами из удаленного репозитория то выполните команды:
Как мы уже знаем, для того чтобы изменения выложить на удаленный репозиторий используется команда:
В случае, если в удаленном репозитории лежат файлы с версией более новой, чем у вас в локальном, то команда git push выдаст ошибку. Если вы уверены, что хотите перезаписать файлы в удаленном репозитории несмотря на конфликт версий, то воспользуйтесь командой:
Иногда возникает необходимость отложить ваши текущие изменения и поработать над файлами, которые находятся в удаленном репозитории. Для этого отложите текущие изменения командой:
После выполнения этой команды ваша локальная директория будет содержать файлы такие же, как и при последнем коммите. Вы можете загрузить новые файлы из удаленного репозитория командой git pull и после этого вернуть ваши изменения которые вы отложили командой:
Как Создать Репозиторий Git
В этом уроке мы узнаем, как создать репозиторий Git.
Различные способы создания репозитория Git
Мы можем создать репозиторий Git, используя один из трех подходов, перечисленных ниже:
Мы будем использовать инструмент командной строки Git для создания репозиториев, а также для изучения всех операций Git в этой серии учебников. Использование инструмента командной строки Git поможет вам ознакомиться с командами GIT.
Итак, давайте начнем и посмотрим, как мы можем создать репозиторий Git тремя способами, упомянутыми выше. Самое первое-найти инструмент командной строки Git в системе. Я надеюсь, что вы уже прошли через процесс установки Git, описанный ранее.
Создание чистого репозитория Git
Создание пустого репозитория Git для нового проекта — это трехэтапный процесс:
После того, как вы установили Git, просто найдите git cmd в строке системного поиска. Вы получите средство командной строки, как показано на рисунке ниже или в зависимости от вашей версии ОС.
Откройте инструмент командной строки Git, вы увидите окно командной строки, как показано на рисунке ниже.
Шаг 1: Создайте новый проект / папку
Теперь, когда наш инструмент командной строки открыт, давайте создадим папку проекта. Создание папки проекта с хорошим именем очень важно. Если у вас есть хорошее и уместное название вашего проекта, вам будет легче идентифицировать его.
Создайте каталог для хранения всех локальных репозиториев git.
Перейдите в эту папку с помощью команды cd LocalGit, как на Windows, так и на Mac системах.
Теперь вы находитесь в папке репозитория, где мы создадим наши репозитории Git, используя три подхода, упомянутых выше.
Чистый репозиторий Git означает пустой каталог со скрытой папкой. git. Назовем этот проект BareGitRepo. Убедитесь, что вы находитесь в папке LocalGit, прежде чем приступить к следующим шагам. Введите команду mkdir BareGitRepo.
Примечание: итак, теперь у вас есть ваша корневая папка (LocalGit) и в ней находится проект (BareGitRepository)
Шаг 2: переход к новому проекту
Перейдите к проекту, созданному на предыдущем шаге с помощью команды cd BareGitRepo.
Шаг 3: инициализировать пустой репозиторий Git для проекта
Рассмотрим содержимое только что инициализированного репозитория Git, выполнив команду dir /ah.
После выполнения dir вы увидите пустую папку проекта, как и ожидалось от чистого репозитория Git. Теперь вы можете добавить файлы проекта в этот репозиторий, и они будут отслеживаться GIT.
Создание репозитория Git для существующего проекта
Мы также можем отслеживать существующий проект с помощью Git. В этом случае мы инициализируем репозиторий Git в существующем каталоге проекта. Это так же, как создание репозитория git для нового проекта с той лишь разницей, что Шаг 1 не требуется.
1. Перейдите к существующему проекту
Перейдите в каталог, содержащий данные проекта. В этом случае будем считать, что имя проекта-SampleProject в локации C:\Users\admin1\LocalGit\SampleProject, переместитесь в аналогичное место в вашей системе. Содержимое каталога можно просмотреть с помощью команды dir.
Примечание: создайте несколько файлов в SampleProject для демонстрационной цели.
2. Инициализация репозитория Git для проекта
Инициализируйте репозиторий git в этом проекте с помощью той же команды, которая использовалась при создании голого репозитория, т. е. git init.
После инициализации Git проект отслеживается GIT.
Клонирование удаленного репозитория с GitHub
Если вы хотите внести свой вклад в существующий проект, размещенный на GitHub или аналогичном онлайн-сервисе git, вам нужно клонировать их репозиторий с удаленного сервера, такого как Github, GitLab и т. д. Например, удаленный репозиторий Apache POI (библиотека Java для чтения и записи в файлы Excel) размещается по адресу https://github.com/apache/poi
Определение слова Clone в контексте Git заключается в создании локальной копии удаленного репозитория. В этом случае удаленный репозиторий размещается по адресу https://github.com/apache/poi и мы клонируем его в нашей локальной системе.
Ниже приведены шаги для клонирования (загрузки и отслеживания изменений) этого репозитория.
Шаг 1: извлеките и скопируйте URL-адрес, как указано на рисунке ниже, репозитория Apache POI на GitHub. То есть, https://github.com/apache/poi.git.
Шаг 2: в Git CMD перейдите к папке для хранения всех репозиториев Git локально. То есть C:\Users\admin1\LocalGit в этом примере.
Шаг 3: создайте каталог RemoteCloneRepo для хранения исходного кода репозитория Apache POI локально с помощью команды mkdir RemoteCloneRepo.
Перейдите в этот недавно созданный каталог с помощью команды cd RemoteCloneRepo.
Шаг 4: чтобы клонировать репозиторий, введите команду git clone https://github.com/apache/poi.git
Примечание: git clone — это стандартная команда GIT для клонирования существующего удаленного репозитория.
Шаг 5: клонирование репозитория зависит от его размера. Обычно это занимает некоторое время для большого хранилища. Вам придется подождать, пока все файлы будут проверены.
Теперь вы можете вносить изменения в репозиторий. Git будет их отслеживать.
В последнем уроке мы познакомились с командой Git fetch и Read more
В одной из последних статей мы узнали о команде Git Read more
Мы уже знаем, как вносить изменения в локальное хранилище и Read more
Команда git push при выполнении перемещает изменения, внесенные пользователем на Read more
«Клонирование» означает создание идентичных особей естественным или искусственным путем. Клонирование Read more
Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more
Краткая инструкция как заливать на gitHub
Содержание
Быстрый старт (для нетерпеливых)
Если нет времени читать весь пост, а надо сию секунду залить свой код на удаленный репозиторий не вникая во все тонкости, то делается это так:
Создание репозитория на гитхабе
Теперь поговорим более подробно о гите и как заливать локальный репозиторий на удаленный. Начнем с создания удаленного репозитория на популярном сервисе https://github.com. Чтобы залить проект на gitHub нужно сначала создать в gitHub аккаунт и залогиниться.
После этого жмем на + New repository:
Появится страница Create a New Repository. В поле Repository name вводим имя репозитория, например your_project и жмем на Create repository:
Появится созданный репозиторий your_project:
Если это будет java-приложение, то нужно за комментировать *.jar в файле .gitignore. Открываем на редактирование файл .gitignore и за комментируем, в нашем случае, седьмую строчку:
.gitignore
Подготовка локального git репозитория
Подготовить локальный репозиторий можно двумя способами: создать репозиторий с нуля с последующим переносом изменений в удаленный репозиторий и сделать клон удаленного репозитория.
Первый способ создание локального репозитория с нуля командой git init.
Создадим проект на локальной машине с таким именем:
перейдем в этот каталог:
Выполним команду git init которая инициирует локальный репозиторий:
Дальше можно добавлять файлы в локальный репозиторий.
Второй способ. Сделать на локальной машине клон удалённого репозитория командой git clone:
После этой команды у нас появится новый каталог в котором находится копия удаленного репозитория, а все файлы которые в нем находятся будут отслеживаться гитом. Тут очень важный момент именно копия всего репозитория, а не снимок текущего состояния удаленного репозитория. В отличие от обычного снимка удаленного репозитория, например как в SVN мы, будучи скопировав удаленный репозиторий, можем покопаться в его истории, посмотреть все его правки, кто и когда вносил изменения, какие у него ветки, то есть у нас на машине полноценный репозиторий который теперь не зависит от удаленного репозитория с которого был склонирован.
Подготовка локального файла
После того как появился локальный репозиторий, добавим в него джава класc. Перейдём в каталог, который отслеживается репозиторием и создадим какой-нибудь файл::
TestGitHub.java
Помещение файла в репозиторий
После того как мы создали файл его надо подготовить для фиксации и зафиксировать в репозитории, то есть закомитить. Подготовить для фиксации это означает, что его надо проиндексировать командой git add:
Проиндексированный файл это еще не означает, что он закомичен, это означает, что он готов для коммита в репозиторий, а сам коммит выполняется командой git commit:
Если гит ругнется как показано ниже:
значит перед тем как коммитить изменения надо сообщить гиту свое имя и почту. Это нужно сделать так как гит включает эту инфу в каждую фиксированную версию:
Перенос изменений на удаленный репозиторий
После этого github запросит имя юзера и пароль.
То что мы сейчас сделали мы запушили (выложили) наши локальные изменения на удаленный репозиторий у которого айдишник origin в ветку master.
Добавление удаленных репозиториев
Если мы создали репозиторий командой git init, то чтобы перенести изменения на удаленный репозиторий, нам надо его добавить командой git remote add и придумать ему уникальное имя. Вот как добавляется удаленный репозиторий:
Мы задали удаленный репозиторий с коротким именем ourRep, который располагается по адресу https://additional_git_address/your_account/your_project. Если выполним команду git remote, то увидим url адреса для пуша и фетча только что добавленного удаленного репозитория:
Теперь зальём на него изменения командой git push: