Всем привет.
В качестве первой статьи решил написать шпаргалку себе на будущее в большей степени, но может она пригодиться еще кому-нибудь.
Наверняка специалисты по git все и так прекрасно знают, но ведь на Хабре ищут решений своих вопросов и много нубов начинающих, как я сам, кто больше читатель, а не писатель.
Введение
Все началось с того как я начал думать… И думал я о том, как бы интересно организовать свои домашние самоделки надежно, чтоб не потерять в случае чего, и желательно модно правильно с применением git и тому подобное.
Конечно многие скажут GitHub. Да, конечно хорошее решение, но… Есть и но у такого решения.
Не все самоделки хочется выкладывать в открытый доступ. Что-то просто стыдно чтоб другие увидели, что-то не хочется показывать, по крайней мере некоторое время. А закрытые репозитории на GitHub доступны только на платном аккаунте.
Но домашние самоделки — это не тот уровень за который хочется платить ежемесячно. Они не приносят доход, а написаны для души, у кого программирование хобби всей жизни.
И тогда обратил я внимание на свой ноутбук для таких вот занятий, а там совершенно случайно оказалась лицензионная windows 8.1, в которой вечно маячил и попадался мне под руку такой элемент как OneDrive.
Кто не знает, это облачный диск от Microsoft для обладателей учетной записи.
А почему бы не организовать git репозиторий на данном облаке.
Я начал искать информацию на данную тему, в русскоязычном интернете что-то вообще как-то не попалось, на зарубежных кое какая информация была, но ни одно решение почему-то не годилось сходу для меня.
Забегая вперед скажу, что в адресации git нужны ссылки, но никак не пути windows, с указанием диска и т.д.
Многие предлагали установку дополнительно консольной утилиты curl или ей подобных, но очень не хотелось заниматься этим и обойтись стандартными средствами windows и git клиента под windows.
Поэтому я собрал крохи из разных источников в рабочее решение, по крайней мере для меня.
Мне доступно 5 ГБ свободного места, не очень много, но для моих нужд — более чем. Так зачем пропадать добру?
Если кому покажется слишком мало, всегда можно докупить еще места.
Ну это я отвлекся от темы. И так приступим к собственно организации репозитория.
Допущения
Сразу оговорим некоторые детали, для простоты понимания следующих действий.
Зайдем на OneDrive и создадим каталог git, в котором и будем размещать все свои репозитории.
Допустим, нашего пользователя зовут User.
Тогда папка для синхронизации OneDrive будет располагаться по адресу: C:UsersUserSkyDrive.
В ней уже должен быть, созданный нами, каталог git.
Ну и для примера организовывать будем проект project1.
Сразу в нем создадим файл .gitignore для исключений, что не нужно коммитить.
Так как я пишу на python, мой файл содержит следующее:
*.gitignore
*.log
*.pyo
*.pyc
__pycache__/
В нынешнем, которым я пользуюсь, python 3.5 скомпилированные файлы pyo и pyc уже складываются в папку __pycache__/, поэтому при наличии данной строки их можно не писать, но когда я начинал с python 3.3 — они лежали рядом с файлами исходного кода, поэтому остались. Не мешают и хорошо.
Для проектов на django к вышеперечисленному еще добавляются следующие строки:
db.sqlite3
staticfiles/
Конечно при запуске django на каком-либо
в каталоге проекта открываем правой кнопкой мыши контекстное меню и выбираем там пункт «git bash here».
Думаю при установке git клиента вы выбрали опцию интеграции в проводник.
Это важно для использования в пути к репозиторию ~ (тильды). Так как стандартная консоль windows не умеет работать с данным символом, а в bash он означает домашний каталог, а собственно интересующий нас путь: C:UsersUser.
Данный режим необходим только в первый раз при создании репозитория, чтобы в локальных настройках 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.
Ну вот и все. Очень простой способ, но зато позволяет приобщиться к миру настоящих разработчиков и почувствовать себя почти профи.
Автор: человек со стажем