Обратный звонок
28-03-2017
Андрей Алехин

Git за 100 минут. Удаленные репозитории.

Сейчас можно смело сказать, что мы уже имеем возможность использовать git для всего, что нам необходимо. Мы прошли работу с git-ом в рамках добавления файлов, создания комитов; разобрались, что такое ветки, как они работают. Сейчас мы подошли к одному из самых интересных моментов: возможности отвязать себя от конкретного рабочего места, работать где угодно: на работе, в дороге, дома. Все это позволяют делать удаленные репозитории.

На сегодняшний день существуют несколько известных хостингов для репозитория git: github и bitbucket. Они отличаются лишь несколькими моментами. Github – очень популярный хостинг, который позволяет создать общедоступный репозиторий git-а. Совершенно бесплатно можете использовать во всех своих нуждах, целях, за это с вас не возьмут ни копейки. Единственный момент – к этому репозиторию будет иметь доступ кто угодно. То есть, он будет публичным. Если вы хотите на github-е создать приватный репозиторий (доступ имеют ограниченный круг людей), то за это нужно будет заплатить определенные деньги. Bitbucket в этом плане более лояльный. Как за публичный, так и за приватный никаких денег не требует. Именно поэтому в рамках данного курса мы будем рассматривать хостинг bitbucket. Давайте сначала разберемся, что такое удаленные репозитории.

Представим себе некий хостинг, на котором хранятся файлы и настроенный git. Мы можем к этому git-у обратиться и удаленно скачать все файлы. У нас есть хостинг, на котором лежит git, который уже как-то заполнен. Ваш коллега, например, верстальщик, на своем локальном компьютере сверстал сайт. У него есть большое количество комитов. Он использует свой удаленный хостинг и залил туда свой локальный репозиторий. То есть у него локальный репозиторий попал на удаленный. Далее, вы подключаетесь к проекту. Вам говорят специальный адрес, к которому вы можете обратиться и забрать удаленный репозиторий. Забрать его можно несколькими путями. Его можно целиком скопировать в вашу локальную ветку. Это происходит, если мы используем команду clone. Мы обратимся к удаленному репозиторию и целиком скачаем все, что там есть, полностью сольем на свой компьютер. Есть еще команда pull. Это командой мы будем пользоваться наиболее часто, она также все забирает с удаленного репозитория. Только pull мы будем использовать в случаях, когда уже работаем с удаленным репозиторием. Нам надо просто обновить информацию, файлы на нашем компьютере, поэтому мы пишем pull, обращаясь к удаленному репозиторию, скачиваем все, что там есть.

Git. Pull

Есть еще одна команда fetch. Она тоже направлена на получение с удаленного репозитория информации. Только fetch отличается от pull-а тем, что pull сразу воспроизводит мэрдж, сливает все изменения. fetch позволяет посмотреть что было и уже вручную, при необходимости это мерджить. Почему эти команды разнятся? Чем это хорошо? Если вы работаете над небольшим проектом. Пока вы спали, ваш коллега что-то накомител. Вы с утра, перед началом работы пишите git pull, забираете все информацию с удаленного репозитория. Работаете над обновленным материалом. Если же вы пишите git fetch, также скачиваете, но не вливаете в свою рабочую ветку. Имеете возможность посмотреть все изменения и, при необходимости, потом вручную все это объединить. Когда вы свою работу выполнили, можете использовать команду push, чтобы все наши работы закатить на удаленный репозиторий. То есть, что-то сделали, закомитили, можно либо после каждого комита (не очень удобно), либо в середине, либо в конце рабочего дня делать push на удаленный сервер, и вся информация будет попадать на удаленный репозиторий. Давайте перейдем к практике. Это намного интереснее. 

Начнем наконец-то работать с удаленными репозиториями. Для начала нам необходимо зарегистрироваться на сайте bitbucket.org. Регистрация предельно простая, никаких трудностей вызывать она у вас не должна. 

bitbucket

Первое, с чего мы начнем: загрузим локальный репозиторий на bitbucket. Для этого создадим репозиторий кнопкой «создать». Назовем его «test». Здесь можно указать описание репозитория, уровень доступа: приватный или публичный. Указать, кто будет иметь доступы. Разрешить рефорки репозитория и указать язык. Нажимаем создать репозиторий. На данный момент у вас создается пустой репозиторий. В котором ничего нет, о чем сообщает bitbucket и предлагает, что надо начать делать.

загружаем локальный репозиторий

Мы можем выбрать: «я начинаю полностью с нуля». Здесь описывается то, как вам можно создать из вашего локального репозитория загрузку в удаленный репозиторий. Зайдем в папку work. Я немножко ее обнулил, загрузил туда исходную работу сайта и удалил репозиторий. Начнем, открываем gitbush и инициализируем наш локальный репозиторий. У нас все получилось. Далее добавляем все файлы. После пишем git commit. Указываем, что это my first commit. Готово.

Далее нам необходимо подключить удаленный репозиторий. То есть, создать его некий текстовый alias в нашем локальном репозитории. Делается это командой git remote add. Далее мы указываем alias, который система, при клонировании с удаленного репозитория, называет ориджем. То есть, если у вас есть пустая папка, куда вы хотите клонировать уже заполненный кем-то репозиторий, то система автоматически назовет его ориджем – стандартное системное название. Мы же, при добавлении удаленного репозитория через remote add, можем указать ему любое название. Давайте напишем site. Далее необходимо указать ссылку на наш удаленный репозиторий. Bitbucket ее выводит прямо в настройках.

Копируем, открываем консоль. Нажимаем значок (верхний левый угол, рядом с путем консоли). Нажимаем изменить и вставить. Получаем url. Нажимаем enter. После этого мы добавили наш удаленный alias. То есть, вместо того, чтобы постоянно писать этот url, мы можем написать alias site и git поймет, что мы имеем в виду. Давайте посмотрим сейчас, какие у нас есть удаленные репозитории. 

Если мы хотим посмотреть, куда этот site ссылается, мы добавляем дополнительный ключ –v и видим, что alias site равен адресам fetch и push (на картинке).

Теперь нам необходимо загрузить на удаленный репозиторий содержимое нашего репозитория. Для этого есть команда git push, в которой мы указываем адрес нашего удаленного репозитория, данном случае site. И указываем, из какой ветки мы будем туда что-либо загружать. Если бы у нас веток было несколько, мы бы прописывали название той ветки, с которой мы производим выгрузку. Так как ветка у нас сейчас только одна - master, мы пишем вот в таком формате. Чтобы не вылезало много сообщений, напишем дополнительную команду –u. Нажимаем enter. Он запросит пароль авторизации, и начинается выгрузка на удаленный репозиторий.

Все выгрузилось и нам сообщили, что у нас была создана новая ветка, из мастера в мастер. Теперь посмотрим, что у нас есть в git log-е. У нас есть всего один комит: «my first commit». Мы можем зайти в «обзор» и увидеть, что наш репозиторий уже не пуст. В нем ест одна ветка и первый комит. То есть, у нас был автоматически созданный системой репозиторий created. Потом был один комит pushed. Мы можем нажать «код» и посмотреть содержимое нашего репозитория, все, что в нем отображается.

Немножко про навигацию в bitbucket-е. Если перейти на главную страницу, у вас будет отображен ваш dashboard. В нем будем список ваших репозиториев. Если мы перейдем в наш только что созданный репозиторий, в левом меню будет возможность клонировать его. И уже готовая команда git clone. Правой кнопкой копируете, потом просто вставляете его в git. И он автоматически клонирует этот репозиторий на новую вашу машину. Возможно создать из интерфейса новую ветку на основании ветки мастер, пока других веток нет. Создать pull-запрос, сравнить ветки и совершить форк (скопировать ваш репозиторий). Ниже идет навигация. Обзор – краткое содержание того, что происходит в вашем репозитории. Последние изменения, уровень доступа, количество веток, количество людей, которые имеют доступ к просмотру этого репозитория и последняя активность. Сверху также отображается возможность клонировать в source tree.

Полностью курс по Git можно скачать здесь.

Самые читаемые: