Простое создание git репозитория на OneDrive

Всем привет.

В качестве первой статьи решил написать шпаргалку себе на будущее в большей степени, но может она пригодиться еще кому-нибудь.

Наверняка специалисты по git все и так прекрасно знают, но ведь на Хабре ищут решений своих вопросов и много нубов начинающих, как я сам, кто больше читатель, а не писатель.

Введение


Все началось с того как я начал думать… И думал я о том, как бы интересно организовать свои домашние самоделки надежно, чтоб не потерять в случае чего, и желательно модно правильно с применением git и тому подобное.

Конечно многие скажут GitHub. Да, конечно хорошее решение, но… Есть и но у такого решения.

Не все самоделки хочется выкладывать в открытый доступ. Что-то просто стыдно чтоб другие увидели, что-то не хочется показывать, по крайней мере некоторое время. А закрытые репозитории на GitHub доступны только на платном аккаунте.

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

И тогда обратил я внимание на свой ноутбук для таких вот занятий, а там совершенно случайно оказалась лицензионная windows 8.1, в которой вечно маячил и попадался мне под руку такой элемент как OneDrive.

Кто не знает, это облачный диск от Microsoft для обладателей учетной записи.

А почему бы не организовать git репозиторий на данном облаке.

Я начал искать информацию на данную тему, в русскоязычном интернете что-то вообще как-то не попалось, на зарубежных кое какая информация была, но ни одно решение почему-то не годилось сходу для меня.

Забегая вперед скажу, что в адресации git нужны ссылки, но никак не пути windows, с указанием диска и т.д.

Многие предлагали установку дополнительно консольной утилиты curl или ей подобных, но очень не хотелось заниматься этим и обойтись стандартными средствами windows и git клиента под windows.

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

Мне доступно 5 ГБ свободного места, не очень много, но для моих нужд — более чем. Так зачем пропадать добру?

Если кому покажется слишком мало, всегда можно докупить еще места.
Ну это я отвлекся от темы. И так приступим к собственно организации репозитория.

Допущения


Сразу оговорим некоторые детали, для простоты понимания следующих действий.

Зайдем на OneDrive и создадим каталог git, в котором и будем размещать все свои репозитории.
Допустим, нашего пользователя зовут User.

Тогда папка для синхронизации OneDrive будет располагаться по адресу: C:\Users\User\SkyDrive\.

В ней уже должен быть, созданный нами, каталог git.

Ну и для примера организовывать будем проект project1.

Сразу в нем создадим файл .gitignore для исключений, что не нужно коммитить.

Так как я пишу на python, мой файл содержит следующее:

*.gitignore
*.log
*.pyo
*.pyc
__pycache__/

В нынешнем, которым я пользуюсь, python 3.5 скомпилированные файлы pyo и pyc уже складываются в папку __pycache__/, поэтому при наличии данной строки их можно не писать, но когда я начинал с python 3.3 — они лежали рядом с файлами исходного кода, поэтому остались. Не мешают и хорошо.

Для проектов на django к вышеперечисленному еще добавляются следующие строки:

db.sqlite3
staticfiles/

Конечно при запуске django на каком-либо хостинге, база данных будет посерьезней, например postgres, или что предоставляет хостинг. Но во время разработки для отладки можно использовать старый добрый sqlite.

в каталоге проекта открываем правой кнопкой мыши контекстное меню и выбираем там пункт «git bash here».

Думаю при установке git клиента вы выбрали опцию интеграции в проводник.

Это важно для использования в пути к репозиторию ~ (тильды). Так как стандартная консоль windows не умеет работать с данным символом, а в bash он означает домашний каталог, а собственно интересующий нас путь: C:\Users\User\.

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

Весь алгоритм действий


В консоли git bash пишем следующие инструкции.

Приведу их сразу полный перечень, а затем разжуем детально.

git init
git add --all
git commit -m "init"
git init --bare ~/SkyDrive/git/project1.git
git remote add OneDrive ~/SkyDrive/git/project1.git
git push -u OneDrive

Разберем детально каждый шаг


1. git init
Просто создаем пустой локальный git репозиторий проекта в самой папке проекта.

2. git add --all
Данное действие призвано добавить для индексирования все файлы в каталоге и его подкаталогах, исключая конечно содержимое .gitignore файла.

Также можно использовать: git add

Но она добавляет все файлы из каталога, не включая подкаталоги.

Так что зависит от сложности вашего проекта. Кому что удобнее использовать — выбирайте сами.

3. git commit -m "init"

Собственно наш первый коммит. Пока локально, без добавления на облачный репозиторий.

4. git init --bare ~/SkyDrive/git/project1.git

А вот и первое обращение к удаленному репозиторию. Здесь мы создаем репозиторий для данного проекта.

Важно! Ключ --bare обязателен. Он указывает создать master ветку в данном репозитории. Хоть она пока и пуста.

.git в конце пути после имени проекта не обязательно, но, как я понимаю, это хорошо сложившаяся традиция. Как по мне вполне удобная, не вижу смысла ее изменять.

5. git remote add OneDrive ~/SkyDrive/git/project1.git

А тут мы присваиваем имя OneDrive для нашей ссылки на удаленный репозиторий.

6. git push -u OneDrive

И последним шагом мы заливаем содержимое нашего проекта в master ветку удаленного репозитория.

Такая запись нужна только в первый раз, для заполнения master ветки. В дальнейшем можно пользоваться стандартным: git push.

Да и режим git bash более не обязателен. Дальнейшая работа с git в данном проекте возможна и из обычной консоли windows.

Ну вот и все. Очень простой способ, но зато позволяет приобщиться к миру настоящих разработчиков и почувствовать себя почти профи.
Tags:
git, onedrive

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.