Голобурдин://
Git — распределенная система контроля версий файлов, созданная под руководством Линуса Торвальдса. Системы контроля версий позволяют хранить несколько версий одних и тех же файлов с возможностью возврата к старому варианту, просмотра изменений, их авторов и т.д.
Распределенная система контроля версий не нуждается в центральном сервере, хранящем версии, вся история хранится на каждом локальном компьютере и при необходимости синхронизируется с аналогичным хранилищем другого компьютера. В этом отличие Git от, например, SVN — можно установить Git только на локальный компьютер и хранить все версии у себя, не дублируя на сервер. Однако в случае командной работы все же удобно иметь сервер, хранящий версии. Такой сервер также можно воспринимать как бэкап всех актуальных файлов и их версий, доступный из любой точки мира.
Про Git есть отличная бесплатная книга с соответствующим названием Pro Git, также спасибо соотечественникам за бескорыстный перевод — рекомендую.
Здесь я приведу краткие данные, позволяющие быстро начать работу с Git и Bitbucket. Bitbucket — это сервис, централизованно хранящий репозитории Git, бесплатный для 5 пользователей и платный для больших команд. Преимущество Bitbucket перед аналогичным сервисом GitHub — возможность создания закрытых репозиториев (не open source).
Установка, настройка
Итак, первое, что нам стоит сделать — установить сам Git для используемой операционной системы (Windows, Linux, Solaris, Mac OS). Второе — зарегистрироваться на Bitbucket и создать репозиторий.
Предположим, что у нас уже есть исходные коды разрабатываемого приложения и мы хотим начать использовать Git для контроля версий и централизованного их хранения на сервере Bitbucket.
Пройдя регистрацию на Bitbucket, создаем новый репозиторий, для чего выбираем Repositories > Create repository. Вводим имя создаваемого репозитория, указываем тип (Git), уровень доступа (Access level) в private — не open source проект. Также можно установить основной язык программирования, используемый в проекте. Завершив создание репозитория, Bitbucket отобразит страницу «Add some code», где мы выберем «I have an existing project to push up» для добавления существующего проекта в репозиторий, после чего система отобразит команды, которые нам необходимо будет выполнить для последующей синхронизации локального репозитория с Bitbucket — не закрывайте окно.
Итак, мы создали репозиторий на Bibucket, теперь необходимо создать локальный репозиторий на локальном компьютере, чтобы впоследствии синхронизировать его с Bitbucket. Для этого мы будем использовать терминальные команды Git, поэтому в случае Windows необходимо добавить в переменную окружения PATH путь к исполняемым файлам Git (как правило, это C:\Program Files (x86)\Git\bin ), в случае Linux и Mac OS система уже сделала это за вас при установке.
Таким образом, на текущем этапе у нас установлен Git и в переменной окружения PATH корректно прописан путь к исполняемым файлам Git — неплохо. Открываем терминал/командную строку нашей операционной системы (конечно, для Git существуют и GUI решения, но в этой статье я буду касаться только классических терминальных инструментов).
В первую очередь настроим наш Git — зададим своё имя и email (эта информация будет использоваться в репозитории для отслеживания авторов изменений):
git config --global user.name "Alexey Goloburdin" git config --global user.email my@mail.com git config --global core.pager 'less -r'
Теперь всё готово к созданию первого локального Git репозитория.
Создание репозитория
Переходим в терминале в директорию, в которой мы хотим создать репозиторий — директорию с исходными кодами нашего приложения — и инициализируем новый репозиторий:
git init
Добавляем все файлы в созданный репозиторий:
git add *
И делаем commit — то есть сохранение текущей версии репозитория:
git commit -m 'первая версия репозитория'
После атрибута -m вводится комментарий к коммиту — хорошей практикой является описание всех коммитов.
За жизнь
Самое время добавить немного магии теории — единственной и достаточной для продуктивной работы с Git. Все файлы в рабочем каталоге, в котором мы создали репозиторий, могут быть либо под версионным контролем, то есть фактически входить в репозиторий Git, либо быть неотслеживаемыми, то есть не входить в репозиторий. В нашем случае все файлы, присутствующие в данный момент в директории, мы добавили в репозиторий командой git add * , при этом если бы мы хотели добавить, например, только файлы с расширением html, мы могли бы внести их в репозиторий командой git add *.html .
Все отслеживаемые файлы могут находиться в трех состояниях — неизмененном (то есть с момента последнего коммита мы этот файл не трогали), измененном (с момента последнего коммита мы внесли изменения, но Git об этом еще не знает) или подготовленном к коммиту (это измененный файл, о котором мы рассказали Git). Таким образом, вот жизненный цикл файла в репозитории:
1. Добавление файла в репозиторий — файл имеет статус «неизмененный»
2. Файл изменен, но мы не сообщили об этом Git — файл имеет статус «измененный»
3. Мы сообщаем соответствующей командой Git об изменении файла — файл получает статус «подготовленного к коммиту»
4. Мы делаем коммит, после которого файл снова получает статус «неизменённого». Затем цикл повторяется.
При этом важно понимать, что все эти действия сейчас происходят локально на нашем компьютере, хранящем все версии репозитория, мы еще не производили синхронизацию с удаленным сервером Bitbucket.
Работа с Git
Итак, в данный момент мы имеем чистый репозиторий с одной версией. Внесем изменения в какой-то файл репозитория и подготовим файл к коммиту:
git add FILENAME
Команда git add не только добавляет новый файл к репозиторию, но и отслеживает изменения в уже присутствующих в репозитории файлах. Сделаем второй коммит:
git commit -m 'вторая версия, мы внесли офигенные правки в наш проект'
Конечно, совсем необязательно запоминать все файлы, в которых мы произвели изменения с последнего коммита для того, чтобы потом перечислить их в git add (то есть подготовить к коммиту). Есть два варианта. Первый: использовать » git add *» и затем » git commit» , второй короче: использовать сразу одну команду » git commit -a» . В обоих случаях Git переберет все файлы каталога и подготовит к коммиту все отслеживаемые файлы, но первый вариант также добавит в репозиторий новые файлы (созданные после последнего коммита), в то время как второй вариант их проигнорирует.
Удалить файл из репозитория, то есть перевести его из отслеживаемого в неотслеживаемый, можно командой:
git rm FILENAME
Просто удаление файла в директории, без указания Git не отслеживать его, приведет к попыткам Git найти этот файл, его статус в репозитории будет «изменён, но не закоммичен». Конечно, можно удалять файлы из директории проекта, не заботясь о ручном удалении их из Git репозитория по одному — вместо этого можно выполнить одну команду:
git add -u
Кстати, узнать текущий статус по репозиторию можно командой
git status
Просмотреть историю коммитов:
git log
Как правило, в любом проекте существуют файлы, отслеживать изменения которых нет необходимости (например, это могут быть файлы кэша) — их можно добавить в список исключений, находящийся по адресу / .git/info/exclude .
Синхронизация с Bitbucket
Как мы уже говорили, вся текущая работа с репозиторием происходила на локальном компьютере без подключения к серверу Bitbucket — пришло время синхронизироваться! Для этого нужно выполнить команды, которые сообщил нам Bitbucket после создания удаленного репозитория:
git remote add origin https://livedev@bitbucket.org/livedev/repositoryName.git git push -u origin --all
Первая команда подключит удаленный репозиторий, вторая зальет на него наш локальный репозиторий. Система спросит пароль для подключения к Bitbucket, после чего загрузит репозиторий на сервер — в успехе можно удостовериться в веб-интерфейсе Bitbucket. Теперь мы можем продолжать работу над проектом, сохранять файлы, делать коммиты — они будут сохраняться в локальном репозитории даже без подключения к Интернет. Проводить синхронизацию с удаленным сервером не обязательно при каждом коммите — все коммиты все равно зальются на сервер при выполнении команды git push . Если мы работаем в команде и коммиты на сервер делает кто-то кроме нас, то перед коммитом нужно сначала загрузить все изменения, которые произвели другие члены команды в репозитории на сервере, для этого используется команда git pull :
git pull origin master
Master здесь — это ветка репозитория, с которой мы работаем, их может быть несколько, а origin — название соединения c Bitbucket. Таким образом, для заливки репозитория на сервер используется команда
git push origin master
а для обновления локального репозитория с сервера команда
git pull origin master
Bitbucket для повышения качества кода. Четыре шага, чтобы начать работу
Прежде чем начать, вам понадобится аккаунт Bitbucket Cloud, чтобы повторять действия, описанные в этом обучающем руководстве. Из этого руководства вы узнаете о компонентах Bitbucket, которыми будете часто пользоваться, поэтому у вас также должна быть установлена система Git и вы должны быть знакомы с ее основными командами и принципами работы.
Теперь можно загрузить код в Bitbucket.
Шаг 1. Переместите свой код в Bitbucket
Репозитории (которые специалисты с любовью называют «репами») — это место, где код хранится в Bitbucket. Начать работу можно по-разному в зависимости от ваших потребностей.
- С чистого листа
- При помощи другого поставщика
Создание нового пустого репозитория
- Нажмите + на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Create new (Создать) пункт Repository (Репозиторий).
- Присвойте репозиторию имя. Это важно! Имя репозитория включается в его URL-адрес.
- Выберите для параметра Include a README? (Добавить файл README?) значение Yes, with a template (Да, с помощью шаблона).
- Настройки остальных параметров можно не менять. Нажмите Create (Создать).

Импорт репозитория от другого поставщика Git
- Нажмите + на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Import (Импорт) пункт Repository (Репозиторий).
- Укажите URL для доступа к репозиторию.
- Если для доступа к вашему репозиторию требуется авторизация, установите флажок Requires authorization (Требуется авторизация) и введите учетные данные для доступа.
- Присвойте репозиторию имя. Это важно! Имя репозитория включается в его URL-адрес.
- Настройки остальных параметров можно не менять. Нажмите Import repository (Импортировать репозиторий).

Шаг 2. Подготовьте локальную систему, чтобы сотрудничать с коллегами со всего мира
Теперь, когда у вас есть репозиторий в облаке, нужно подготовить локальную систему, с помощью которой вы будете писать или изменять код в Bitbucket. К этому моменту у вас должна быть установлена и настроена система Git. Если вы пропустили этот шаг, вернитесь и выполните необходимые действия. Напоминаем, что у нас есть для этого отдельное руководство!
Клонирование репозитория Bitbucket
Итак, вы создали (или импортировали) репозиторий. Прежде чем вы сможете принять участие в изменении кода в репозитории Bitbucket, вы должны клонировать этот репозиторий в свою локальную систему. Подробнее о клонировании в Git.
- Нажмите «+» на общей боковой панели, расположенной в левой части экрана, и выберите в разделе Get to work (Приступаем к работе) пункт Clone this repository (Клонировать этот репозиторий).
- Выберите в меню, расположенном в правом верхнем углу экрана, вариант HTTPS (если вы уже не настроили SSH-ключи).
- Скопируйте команду клонирования.

Из интерфейса командной строки
- Перейдите в каталог, в который вы хотите клонировать репозиторий. cd
- Вставьте команду, которую вы скопировали из Bitbucket (она будет выглядеть примерно так): git clone https://username@bitbucket.org/teamsinspace/documentation-test.git
На вашем локальном диске появится новый подкаталог с тем же именем, что и клонированный репозиторий. Если вы клонировали пустой репозиторий, этот локальный каталог пока может быть пуст.
Изменение файла в Bitbucket в режиме онлайн
Подождите, у меня нет файлов в Bitbucket.
Вы пропустили необязательный шаг и не добавили файл README в репозиторий Bitbucket? Не переживайте! Если репозиторий пуст, перейдите в него и нажмите Create a README (Создать файл README). Теперь вы можете клонировать репозиторий, в котором есть файлы.
Извлечение (pull) обновлений из Bitbucket
Из интерфейса командной строки
- Перейдите в каталог, в который вы хотите клонировать репозиторий. cd
- Вставьте команду, которую вы скопировали из Bitbucket (она будет выглядеть примерно так): git clone
Выполнив команду, вы загрузите все изменения, внесенные в эти файлы, в свою локальную систему.
Шаг 3. Выполняйте базовые операции с ветками с помощью Bitbucket
Благодаря ветвлению участники команды могут работать одновременно над разными участками кода, не изменяя исходную базу кода и не мешая работе других участников. Когда вы будете готовы выполнить слияние изменений, отправьте свою ветку в Bitbucket, чтобы ее можно было проверить посредством запроса pull.
Создавать ветки можно несколькими способами. Выберите тот, который лучше других отвечает потребностям вашей команды.
Создание ветки
- Из Bitbucket (самый простой способ)
- Из интерфейса командной строки
- Из Jira
- Находясь в репозитории, нажмите «+» на общей боковой панели и выберите в разделе Get to work (Приступаем к работе) пункт Create a branch (Создать ветку).
- В появившемся всплывающем окне выберите Type (Тип) (если вы используете модель ветвления), введите имя ветки в поле Branch name (Имя ветки) и нажмите Create (Создать).

Из интерфейса командной строки
- После создания ветки выберите ее и переключитесь на эту ветку в вашей локальной системе. Bitbucket автоматически отобразит необходимую команду, которая будет выглядеть примерно так: git fetch && git checkout
- Внесите изменения в локальной системе, затем добавьте изменения, сделайте коммит и отправьте изменения в ветку: git add . git commit -m «добавлено изменение в функциональную ветку» git push origin
- Перейдите на страницу Source (Исходный код) в своем репозитории. В раскрывающемся списке вы увидите главную ветку и ветку

Из интерфейса командной строки, находясь в каталоге локального репозитория
- Создайте ветку с помощью команды Git branch. git branch
- Просмотрите список веток в репозитории. Вы увидите главную ветку по умолчанию и новую ветку, которую вы создали. git branch
- Переключитесь на эту ветку. git checkout
- Отправьте новую ветку в Bitbucket. git push —set-upstream origin
Теперь перейдем в Bitbucket и посмотрим на нашу ветку.
- Перейдите в репозиторий.
- Нажмите Branches (Ветки).

Для этого у вас должен быть доступ к сервису Jira Software Cloud, который вы должны интегрировать с Bitbucket. Для этого нужны права администратора, но если вы хотите просто поэкспериментировать с интеграцией и посмотреть, как она работает, вы всегда можете оформить подписку на бесплатную пробную версию Jira Software Cloud.
Интеграцию этих двух продуктов можно выполнить сразу после настройки сайта Jira. Инструкции по интеграции приведены в статье Подключение Bitbucket Cloud к Jira Software Cloud.
Шаг 4. Проверьте изменения кода при помощи запроса pull
Когда изменения вашего кода переданы в Bitbucket, они должны быть проверены коллегой. Запросить проверку кода и в целом вести совместную работу в общей среде со своей командой проще и эффективнее всего посредством запросов pull.
Создание запроса pull
- В открытом репозитории нажмите «+» на общей боковой панели и выберите в разделе Get to work (Приступаем к работе) пункт Create a pull request (Создать запрос pull).
- Заполните остальные поля формы запроса pull:

- Source (Источник): репозиторий и ветка, в которой вы изменили код и теперь хотите выполнить слияние этих изменений.
- Destination (Назначение): репозиторий и ветка, в которую вы хотите слить изменения.
- Title and Description (Заголовок и описание): значения этих двух полей будут использоваться в уведомлениях, отправляемых по электронной почте. Заголовок также будет отображаться в списке запросов pull.
- Reviewers (Проверяющие): выберите проверяющих, которые будут оставлять полезные отзывы об изменениях и должны будут подтверждать изменения.
- Close branch (Закрыть ветку): установите этот флажок, если хотите, чтобы ветка автоматически закрылась после слияния запроса pull.
- Diff and Commits (Различия и коммиты): на этих вкладках можно просмотреть внесенные изменения (Diff) и включенные коммиты.
- Нажмите Create pull request (Создать запрос pull).
Этот запрос pull появится в списках запросов pull на боковой панели навигации вашего репозитория.
Проверка запроса pull
Если вас выбрали в качестве проверяющего, вы получите уведомление о том, что запрос pull ожидает вашей проверки. Кроме того, открытые запросы pull можно просмотреть на вкладке Pull requests (Запросы pull) на дашбоарде. Проверку кода в целях обеспечения качества можно выполнить разными способами — выбор за вами. Ниже описано несколько способов того, как можно поддерживать эффективную связь с коллегами, чтобы все понимали, что именно было изменено, и были согласны с изменением, подготовленным к слиянию.
Просмотр различий
Если просмотреть запрос pull, вы увидите различия (изменения) во всех файлах, измененных в запросе pull. Добавленные строки выделяются зеленым цветом, удаленные — красным. Также можно нажать на вкладке Commits (Коммиты) в верхней части запроса pull, чтобы просмотреть, какие коммиты включены. Это удобно при проверке больших запросов pull.
Отзывы и вопросы в комментариях
В Bitbucket можно оставлять комментарии ко всему запросу pull, отдельному файлу или отдельному участку кода в файле. Благодаря этому можно легко поместить отзыв в контекст или конкретизировать его. Комментарии можно сопровождать изображениями, ссылками, форматированным текстом. Каждый комментарий имеет собственный URL-адрес, чтобы им можно было быстро поделиться.
Подтверждение или отклонение запроса pull
Выполнив проверку изменений кода, вы должны сообщить автору запроса pull, готов ли запрос к слиянию. Нажмите кнопку Approve (Подтвердить), чтобы автор запроса получил уведомление о том, что вы считаете слияние изменений возможным. Если вы нажмете кнопку Decline (Отклонить), автор запроса получит противоположное по смыслу уведомление. Отклоненный запрос pull нельзя будет открыть снова. Чтобы выполнить слияние ветки, нужно будет открыть новый запрос pull.
Учтите, что отклонение запроса pull может плохо сказаться на моральном духе автора, поэтому к нему следует прибегать, только если изменения совсем не годятся или данная работа уже не требуется. Сохраняйте доброжелательность, проверяя чужую работу, и всегда стремитесь в первую очередь понять и уже потом — быть понятым.

Слияние запроса pull
После того как код прошел проверку и был подтвержден в рамках запроса pull, нажмите кнопку Merge (Слияние), чтобы выполнить слияние вашей ветки с основной. Изменения кода из исходной ветки будут полностью включены в целевую ветку.
Как начать пользоваться Bitbucket?
В этой записи, я расскажу как начать пользоваться Bitbucket, а точнее: как настроить SSH ключи, поставить их на Bitbucket’е и выгрузим туда какой-нибудь локальный файл.
Настройка SSH ключа
Вам понадобиться два ключа: приватный и публичный. Подробно о том как создать ключ, вы можете почитать в этой записи.
Регистрация и авторизация на Bitbucket
Регистрация на сервисе состоит всего из двух этапов.
- Заходите на страницу регистрации, вводите почту, имя и пароль
- вам придет письмо с ссылкой, по ней нужно будет пройти, чтобы активировать аккаунт
Добавление SSH ключа
- войти в свой аккаунт
- нажать на иконку своего профиля, появится выпадающее меню, в нем выбрать «Bitbucket Settings». Выглядит она следующим образом

- Внутри вам нужно перейти по ссылке «SSH keys» (SSH ключи)
- И нажать «Add key», чтобы добавить новый ключ, у вас появится окошко:

- В поле «Key» вам нужно указать публичный ключ (.pub), «Label» будет взят из ключа, если вы указали какое-то название для него
Создадим репозиторию
- Нужно нажать «+», далее выбрать «Repository»

- Укажите название репозитории в «Repository name», в «Include a README?» выберите «No» (остальное менять не нужно) и нажмите «Create repository», чтобы создать репозиторий.

Загружаем первый файл в репозиторию
- Зайдите в список всех репозиторий и зайдите в только что созданную
- Под заголовком «Overview» будет ссылка, вам нужна SSH версия (скопируйте её). По умолчанию у вас стоит HTTPS.
- Далее создайте какую-то локальную папку ( _test в /tmp директории), чтобы туда добавить файл под названием test.txt и напишем туда «123»:
$ mkdir /tmp/_test && cd /tmp/_test && echo "123" > test.txt
origin git@bitbucket.org:bologer/test.git (fetch) origin git@bitbucket.org:bologer/test.git (push)
On branch master Initial commit Untracked files: (use "git add . " to include in what will be committed) test.txt nothing added to commit but untracked files present (use "git add" to track)
[master (root-commit) 20416ce] первый коммит 1 file changed, 1 insertion(+) create mode 100644 test.txt
Counting objects: 6, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (5/5), 526 bytes | 0 bytes/s, done. Total 5 (delta 0), reused 0 (delta 0) To git@bitbucket.org:bologer/test.git 262c5e8..13627d2 master -> master Branch master set up to track remote branch master from origin.
Разные удобности
- Добавить все файлы в коммит — git add .
- Если вы не создавали новую ветку, а будите работать только с мастер, то вы можете пушить ( push ) написав только git push , часть -u origin master будет использоваться по умолчанию, так как master — это все основная ветка.
Послесловие
Если у вас возникли какие-либо вопросы или проблемы, пишите ниже в комментарии, буду рад вам помочь.
Изучите Git с помощью Bitbucket Cloud
Изучение основ Git с помощью этого тематического обучающего руководства.
Краткое описание основной задачи
Ваша цель — изучить основы Git путем освоения обучающего руководства. Здесь мы вообразим, что мы отслеживаем космические станции своей команды. В этом руководстве рассматриваются команды
- git clone, git config, git add, git status, git commit, git push, git pull, git branch, git checkout и git merge
Время
Аудитория
Те, кто только начинает работу с Git и Bitbucket Cloud
Обязательные условия
Создание репозитория Git
Вы — новый администратор космической станции Bitbucket, это требует самоорганизации. Файлы, которые вы создаете для космической станции, должны храниться в одном месте, чтобы к ним могли обращаться участники команды из любой точки Вселенной. В Bitbucket это означает, что нужно все добавлять в репозиторий. Давайте создадим его!
Несколько интересных фактов о репозиториях
- Независимо от того, работаете ли вы с одним или несколькими файлами, вы получаете доступ ко всем файлам в локальном репозитории.
- Вы можете просматривать публичные репозитории, не имея аккаунта Bitbucket, если у вас есть URL-адреса этих репозиториев.
- Каждый репозиторий принадлежит аккаунту пользователя или команде. В первом случае владельцем репозитория является пользователь, а во втором — команда.
- Удалить репозиторий может только его владелец. Если репозиторий принадлежит команде, его может удалить администратор.
- Проект программного кода может состоять из нескольких репозиториев для нескольких аккаунтов или одного репозитория, принадлежащего одному аккаунту.
- Размер репозитория ограничен 2 ГБ, однако рекомендуется использовать репозитории размером не более 1 ГБ.

Связанные материалы
Команды Git
СМ. РЕШЕНИЕ
Настройка репозитория
Шаг 1. Создайте репозиторий
Изначально репозиторий, созданный в Bitbucket, будет пустым, без программного кода. Ничего страшного, скоро вы начнете добавлять туда новые файлы. Репозиторий Bitbucket будет центральным репозиторием для ваших файлов. Другие пользователи смогут получить доступ к нему, только если вы предоставите им соответствующие права. После создания репозитория вы скопируете его в свою локальную систему. После этого вы сможете обновлять версию в одном репозитории, а затем переносить изменения в другой.
Создать репозиторий можно следующим образом:
1. В Bitbucket нажмите значок + на общей боковой панели и выберите Repository (Репозиторий).

В Bitbucket отобразится страница Create a new repository (Создание нового репозитория). Внимательно изучите содержимое этого диалогового окна. Все настройки, которые вы укажете на этой странице, кроме пункта Repository type (Тип репозитория), потом можно будет изменить.

2. В поле Name (Имя) введите BitbucketStationLocations. Bitbucket использует значение поля Name для создания URL-адреса репозитория. Например, если у пользователя the_best есть репозиторий с именем awesome_repo , URL-адрес этого репозитория будет выглядеть так: https://bitbucket.org/the_best/awesome_repo .
3. Access level (Уровень доступа): установите флажок в поле This is a private repository (Это частный репозиторий). Частный репозиторий будет виден только вам и тем, кому вы предоставите доступ. Если этот флажок не установлен, любой пользователь сможет увидеть ваш репозиторий.
4. В поле Repository type (Тип репозитория) выберите вариант Git. Помните, что после нажатия кнопки Create repository (Создать репозиторий) вы уже не сможете изменить тип репозитория.
5. Нажмите Create repository (Создать репозиторий). В Bitbucket будет создан репозиторий, после чего откроется страница Overview (Обзор).
Шаг 2. Изучите новый репозиторий
Внимательно изучите созданный репозиторий. Вы должны оказаться на странице Overview (Обзор) репозитория:
Нажмите + на общей боковой панели, чтобы увидеть стандартные действия для репозиториев. Нажимайте элементы на боковой панели навигации, чтобы узнать, что за ними скрывается, в том числе Settings (Настройки), где можно изменить сведения о репозитории и другие параметры. Чтобы просмотреть список горячих клавиш для перехода к этим элементам, нажмите ? на клавиатуре.
Если вы нажмете Commits (Коммиты) на боковой панели, то обнаружите, что коммитов нет, потому что вы еще не создали содержимое репозитория. Ваш репозиторий является частным, а поскольку вы не отправляли никому приглашений для доступа к нему, то единственный человек, который может создавать и редактировать содержимое репозитория, — это вы, его владелец.
Копирование репозитория Git и добавление файлов
У вас есть место для хранения файлов космических станций и обмена ими. Теперь нужно научиться обращаться к нему из локальной системы. Для этого нужно копировать репозиторий Bitbucket в локальную систему. В Git копирование репозитория называется «клонированием». При клонировании репозитория создается соединение между сервером Bitbucket (обозначается в Git термином origin) и локальной системой.
Шаг 1. Клонируйте репозиторий в локальную систему
С рабочего стола откройте браузер и окно терминала. В окне терминала проделайте следующее.
1. Перейдите в домашний каталог (~).
Когда вы станете использовать Bitbucket активнее, вы наверняка будете работать с несколькими репозиториями. С учетом этого хорошо бы создать каталог, который будет содержать в себе все эти репозитории.
2. Создайте каталог для размещения своих репозиториев.
$ mkdir repos
3. В терминале сделайте новый каталог для репозиториев своим рабочим каталогом.
$ cd ~/repos
4. Из Bitbucket перейдите в репозиторий BitbucketStationLocations.
5. Нажмите значок «+» на общей боковой панели и выберите Clone this repository (Клонировать репозиторий).
В Bitbucket появится всплывающее диалоговое окно клонирования. По умолчанию в этом окне выбран протокол HTTPS или SSH, в зависимости от ваших настроек. В рамках этого руководства не изменяйте протокол по умолчанию.
6. Скопируйте выделенную команду клонирования.
7. Вставьте команду, скопированную из Bitbucket, в окно терминала и нажмите Return.
8. В ответ на запрос терминала введите свой пароль Bitbucket. Если вы создали аккаунт через Google, используйте пароль для этого аккаунта.
-
Если возникла ошибка пароля Windows:
-
В некоторых версиях ОС Microsoft Windows и Git может возникнуть ошибка, как в следующем примере.
$ git clone
https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
Cloning into 'bitbucketspacestation'.
fatal: could not read
Password for 'https://emmap1@bitbucket.org': No such file or directory
- Если вы столкнулись с такой ошибкой, введите следующую команду:
$ git config --global core.askpass
- Затем вернитесь к шагу 4 и повторите процедуру клонирования. Теперь пароль должен запросить агент Bash. Вам придется ввести его только один раз.
В этот момент окно терминала должно выглядеть примерно так:
$ cd ~/repos
$ git clone https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
Cloning into 'bitbucketstationlocations'.
Password
warning: You appear to have cloned an empty repository.
- Вам известно, что ваш репозиторий пуст? Если помните, вы еще не добавили в него файлы исходного кода.
9. Выведите список содержимого в каталоге репозиториев. Вы заметите в нем каталог bitbucketstationlocations .
Поздравляем! Клонирование репозитория в локальную систему выполнено.
Шаг 2. Добавьте файл в локальный репозиторий и поместите его в Bitbucket
Теперь, когда в вашей локальной системе есть репозиторий, пора приступать к работе. Вы собираетесь отслеживать местоположение всех своих космических станций. Давайте создадим файл для хранения данных обо всех местоположениях.
1. В окне терминала перейдите на верхний уровень локального репозитория.
$ cd ~/repos/bitbucketstationlocations/
2. Чтобы создать новый файл с заданным текстом, введите в окне терминала следующую строку.
$ echo "Earth's Moon" >> locations.txt
Если на выходе командной строки ничего нет, значит, файл создан правильно!
3. Получите информацию о статусе локального репозитория. О продвижении проекта по сравнению с репозиторием Bitbucket можно узнать с помощью команды git status .
На этом этапе Git знает, что вы создали новый файл. Вы увидите что-то подобное:
$ git status
On branch main
Initial commit
Untracked files:
(use "git add . " to include in what will be committed)
locations.txt
nothing added to commit but untracked files present (use "git add" to track)
Это неотслеживаемый файл: Git видит, что он не является частью предыдущего коммита. Вывод команды status подсказывает, что следующим шагом должно стать добавление файла.
4. Чтобы в Git осуществлялось отслеживание нового файла locations.txt , введите команду git add . Если команда git add введена правильно, на ее выходе не будет ничего, как и при создании файла.
$ git add locations.txt
Команда git add переносит изменения из рабочего каталога в раздел проиндексированных файлов Git. Раздел проиндексированных файлов — это место, где подготавливается снимок состояния для набора изменений, прежде чем выполнить их коммит в официальную историю.
5. Проверьте статус файла.
$ git status
On branch main
Initial commit
Changes to be committed:
(use "git rm --cached . " to unstage)
new file: locations.txt
Вы заметите, что новый файл добавлен (проиндексирован), и сможете сделать коммит, когда будете готовы. Команда git status показывает состояние рабочего каталога и проиндексированного снимка.
6. Введите команду git commit с комментарием к коммиту, как показано в следующей строке. Параметр -m указывает, что далее следует комментарий к коммиту.
$ git commit -m 'Initial commit'
[main (root-commit) fedc3d3] Initial commit
1 file changed, 1 insertion(+)
create mode 100644 locations.txt
Команда git commit выполняет коммит проиндексированного снимка состояния в историю проекта. Эта процедура в сочетании с командой git add определяет классический рабочий процесс для всех пользователей Git.
Все, что вы делали до этого момента, происходило в локальной системе. Для репозитория в Bitbucket эти изменения остаются невидимыми, пока вы не отправите их в удаленный репозиторий Bitbucket.
- Подробнее о Git и удаленных репозиториях
- Способность Git обмениваться данными с удаленными репозиториями (в нашем случае — с Bitbucket) является основой любого процесса совместной работы в Git.
- Модель совместной работы в Git предполагает, что каждый разработчик использует собственную копию репозитория со своей локальной историей и структурой веток. Обычно пользователи делятся не отдельными наборами изменений, а сериями коммитов. Вместо того чтобы выполнять коммит одного набора изменений из рабочей копии в центральный репозиторий, Git позволяет передавать между репозиториями целые ветки.
- Вы можете управлять подключениями к другим репозиториям и публиковать локальную историю, отправляя ветки в другие репозитории. Вы можете видеть результаты работы других участников, извлекая ветки в локальный репозиторий.
7. Вернитесь в окно локального терминала и отправьте в Bitbucket изменения, для которых был сделан коммит, с помощью команды git push origin main . Эта команда указывает, что вы отправляете изменения в ветку main репозитория origin (на сервере Bitbucket).
В ответ вы должны получить что-то подобное:
$ git push origin main
Counting objects: 3, done.
Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0) To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
* [new branch] main -> main
Branch main set up to track remote branch main from origin.Ваши коммиты переданы в удаленный репозиторий (origin).
8. Перейдите в репозиторий BitbucketStationLocations в Bitbucket.
9. Нажав Commits (Коммиты) на боковой панели, вы заметите в своем репозитории единственный коммит. Bitbucket объединяет все выполненные вами действия в один коммит и отображает его. Обратите внимание, что в столбце Author (Автор) указано значение, которое использовалось при настройке глобального файла конфигурации Git ( ~/.gitconfig) .
Нажав Source (Исходный код) на боковой панели, вы заметите, что в репозитории находится единственный файл исходного кода locations.txt , который вы только что добавили.Помните, как выглядел репозиторий сразу после создания? Сейчас он должен выглядеть немного иначе.
Получение изменений из репозитория Git в Bitbucket Cloud
Далее вам как администратору космических станций понадобится файл с дополнительной информацией об их местоположении. Поскольку на данный момент у вас не так много данных о местоположении, их можно добавить прямо из Bitbucket.
Шаг 1. Создайте файл в Bitbucket
Чтобы добавить новый файл с данными о местоположении, выполните следующие действия.
1. Нажмите Source (Исходный код) в репозитории BitbucketStationLocations, чтобы открыть каталог с исходным кодом. Обратите внимание, что только один файл, locations.txt , находится в каталоге.

A. Страница Source (Исходный код): нажмите ссылку, чтобы открыть эту страницу.
B. Выбор ветки: выберите ветку, которую хотите просмотреть.
C. Кнопка «Дополнительные действия»: нажмите, чтобы открыть меню с дополнительными вариантами действий, например Add file (Добавить файл).
D. Область файлов исходного кода: просмотр каталога файлов в Bitbucket.2. На странице Source (Исходный код) нажмите кнопку «Дополнительные действия» в правом верхнем углу и выберите в меню Add file (Добавить файл). Кнопка «Дополнительные действия» появляется только после того, как в репозиторий был добавлен хотя бы один файл.
Откроется страница создания нового файла, как показано на следующем изображении.

A. Ветка для нового файла: измените, если нужно добавить файл в другую ветку.
B. Область нового файла: добавьте сюда содержимое нового файла.3. В поле filename (Имя файла) введите stationlocations .
4. В списке Syntax mode (Режим синтаксиса) выберите HTML.
5. В текстовое поле добавьте следующий HTML-код:
Bitbucket has the following space stations:
Earth's Moon
Headquarters6. Нажмите Commit (Сделать коммит). Появится поле Commit message (Комментарий к коммиту) с сообщением stationlocations created online with Bitbucket (Файл stationlocations создан онлайн в Bitbucket).
7. Нажмите Commit (Сделать коммит) под полем с комментарием.
Теперь у вас в Bitbucket есть новый файл. Откроется страница со сведениями о коммите, где можно увидеть выполненное изменение.

Чтобы просмотреть список сделанных на данный момент коммитов, нажмите Commits (Коммиты) на боковой панели.
Шаг 2. Получите изменения из удаленного репозитория
Теперь нужно скопировать этот новый файл в локальный репозиторий. Это довольная простая процедура, по сути обратная операции push, с помощью которой вы поместили файл locations.txt в Bitbucket.
Скопировать файл в локальный репозиторий можно следующим образом:
1. Откройте окно терминала и перейдите на верхний уровень локального репозитория.
$ cd ~/repos/bitbucketstationlocations/2. Введите команду git pull —all , чтобы извлечь все изменения из Bitbucket. (В более сложных рабочих процессах с ветвлением извлечение и слияние всех изменений может быть неприменимо.) В ответ на запрос введите свой пароль Bitbucket. Окно терминала должно выглядеть примерно так:
$ git pull --all
Fetching origin
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From https://bitbucket.org/emmap1/bitbucketstationlocations
fe5a280..fcbeeb0 main -> origin/main
Updating fe5a280..fcbeeb0
Fast-forward
stationlocations | 5 ++++++++++++++
1 file changed, 5 insertions(+)
create mode 100644 stationlocationsКоманда git pull выполняет слияние файла из удаленного репозитория (Bitbucket) в локальный репозиторий одной командой.
3. Перейдите в папку репозитория в локальной системе. Там будет находиться только что добавленный файл.
Фантастика! Добавив два файла о местоположении космических станций, вы выполнили классический рабочий процесс в Git (клонирование, добавление, коммит, отправку и получение) между Bitbucket и локальной системой.
Использование команды git branch для слияния файла
Администратор космических станций имеет определенные обязанности. Иногда приходится ограничивать доступ к информации, особенно при добавлении на карту местоположения новых станций в солнечной системе. Освоив работу с ветками, вы сможете обновлять файлы и делиться информацией, когда будете к этому готовы.
Потенциал веток раскрывается в полной мере, когда вы работаете в команде. Вы можете работать над своей частью проекта из своей ветки, получать изменения из Bitbucket и выполнять слияние всех результатов своей работы, когда она будет готова, с главной веткой. В нашей документации подробно описано, для чего используются ветки.
Ветка представляет собой независимое направление разработки в репозитории. Ее можно рассматривать как новое сочетание рабочего каталога, раздела проиндексированных файлов и истории проекта. Создание новых веток автоматически начинается с главной ветки (main). В качестве наглядного примера на этой схеме показаны главная ветка и ветка с обновлением для исправления багов.
Шаг 1. Создание ветки и внесение изменения
Создайте ветку, в которую вы сможете добавлять планы для космической станции, еще не готовые к коммиту. Когда вы будете готовы сообщить об этих планах всем, можно будет выполнить слияние изменений в репозиторий Bitbucket и затем удалить ставшую ненужной ветку.
Важно понимать, что ветки — это просто указатели на коммиты. Когда вы создаете ветку, Git создает только новый указатель, а не новый набор файлов или папок. Перед началом работы ваш репозиторий выглядит так:
Создать ветку можно следующим образом:
1. В окне терминала перейдите на верхний уровень локального репозитория с помощью следующей команды:
cd ~/repos/bitbucketstationlocations/2. В окне терминала создайте ветку.
$ git branch future-plansЭта команда создает ветку, но не выполняет переключение на эту ветку, поэтому репозиторий выглядит примерно так:
История репозитория остается неизменной. Все, что вы получаете, — это новый указатель на текущую ветку. Чтобы начать работу с новой веткой, вы должны переключиться на ветку, которую хотите использовать.
3. Переключитесь на только что созданную ветку, чтобы начать ее использовать.
$ git checkout future-plans
Switched to branch 'future-plans'Команда git checkout часто используется вместе с git branch . Поскольку ветка создается для работы над чем-то новым, после каждого создания новой ветки (командой git branch ) требуется переключиться на эту ветку (командой git checkout ), чтобы начать ее использовать. Когда вы переключитесь на новую ветку, рабочий процесс Git будет выглядеть примерно так:
4. Найдите в локальной системе папку bitbucketstationlocations и откройте ее. Вы заметите, что в результате создания новой ветки в каталоге не появилось никаких дополнительных файлов или папок.
5. Откройте файл stationlocations в текстовом редакторе.
6. Измените файл, добавив в него местоположение еще одной станции:
Bitbucket has the following space stations:
Earth's Moon
Headquarters
Mars
Recreation Department7. Сохраните и закройте файл.
8. Введите в окне терминала команду git status . У вас будет нечто подобное:
$ git status
On branch future-plans
Changes not staged for commit:
(use "git add . " to update what will be committed)
(use "git checkout -- . " to discard changes in working directory)
modified: stationlocations
no changes added to commit (use "git add" and/or "git commit -a")Обратили внимание на строку On branch future-plans ? Если бы вы ввели команду git status раньше, то вместо этой строки увидели бы строку branch main , потому что тогда у вас была только одна ветка — main . Прежде чем индексировать изменение или выполнять его коммит, всегда проверяйте эту строку, чтобы убедиться, что выбрана именно та ветка, в которую вы хотите добавить изменение.
9. Проиндексируйте файл.
$ git add stationlocations10. В окне терминала введите команду git commit , как показано ниже:
$ git commit stationlocations -m 'making a change in a branch'
[future-plans e3b7732] making a change in a branch
1 file changed, 4 insertions(+)После этого последнего коммита репозиторий будет выглядеть примерно так:
Пора выполнить слияние изменения с веткой main .
Шаг 2. Merge для ветки: ускоренное слияние
Число ваших космических станций растет. Пришло время для церемонии открытия станции на Марсе. Теперь, когда ваши планы на будущее начали воплощаться в жизнь, можно выполнить слияние ветки future-plans с веткой main в локальной системе.
Поскольку вы создали только одну ветку и внесли одно изменение, используйте метод ускоренного слияния веток. Ускоренное слияние возможно, потому что последний коммит текущей ветки является прямым продолжением целевой ветки. В этом случае для объединения историй Git не выполняет полноценное слияние, а просто переносит указатель текущей ветки в конец целевой ветки. Объединение историй проходит успешно, поскольку все коммиты, доступные из целевой ветки, теперь доступны из текущей ветки.
Это распространенная модель работы с ветками, отведенными под решение краткосрочных задач с небольшими изменениями. При работе с объемными функциями она используется реже.
Ускоренное слияние можно выполнить следующим образом:
1. В окне терминала перейдите на верхний уровень локального репозитория.
$ cd ~/repos/bitbucketstationlocations/2. Введите команду git status , чтобы убедиться, что для всех изменений сделаны коммиты, и узнать, какая ветка выбрана.
$ git status
On branch future-plans
nothing to commit, working directory clean3. Переключитесь на ветку main .
$ git checkout main
Switched to branch 'main'
Your branch is up-to-date with 'origin/main'.4. Выполните слияние изменений из ветки future-plans с веткой main . Это будет выглядеть примерно так:
$ git merge future-plans
Updating fcbeeb0..e3b7732
Fast-forward
stationlocations | 4 ++++
1 file changed, 4 insertions(+)По сути, вы переместили указатель ветки main вперед, к текущему указателю HEAD, и репозиторий выглядит как после ускоренного слияния, описанного выше.
5. Поскольку вы больше не планируете использовать ветку future-plans , ее можно удалить.
$ git branch -d future-plans
Deleted branch future-plans (was e3b7732).После удаления ветки future-plans вы сможете получить к ней доступ из ветки main через идентификатор коммита. Если, например, вы хотите отменить изменения, добавленные из ветки future-plans , воспользуйтесь полученным идентификатором коммита для возврата к этой ветке.
6. Введите команду git status , чтобы увидеть результаты слияния. Они показывают, что локальный репозиторий опережает удаленный на один коммит. Это будет выглядеть примерно так:
$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working directory cleanВот что вы сделали на данный момент:
- Создали ветку и переключились на нее
- Внесли изменение в новую ветку
- Сделали коммит изменения в новой ветке
- Интегрировали изменение в основную ветку
- Удалили ветку, ставшую ненужной
Теперь нужно поместить всю эту работу в Bitbucket, в удаленный репозиторий.
Шаг 3. Отправьте изменения в Bitbucket
Вы хотите, чтобы все могли видеть местоположение новой космической станции. Для этого нужно передать текущее состояние локального репозитория в Bitbucket.
На схеме показано, что происходит, когда локальный репозиторий содержит изменения, которых нет в центральном репозитории, и вы отправляете эти изменения в Bitbucket.
Вот как можно отправить изменение в удаленный репозиторий:
1. Находясь в каталоге репозитория, введите в окне терминала команду git push origin main , чтобы отправить изменения. Результат будет выглядеть примерно так:
$ git push origin main
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 401 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://emmap1@bitbucket.org/emmap1/bitbucketstationlocations.git
fcbeeb0..e3b7732 main -> main2. Перейдите на страницу Overview (Обзор) своего репозитория Bitbucket. В ленте Recent Activity (Недавняя активность) будет отображаться операция push.
3. Нажмите Commits (Коммиты). Вы заметите коммит, сделанный в локальной системе. Обратите внимание: изменение имеет тот же идентификатор коммита, что и в локальной системе.

Также видно, что линия слева от списка коммитов является прямой и не имеет веток. Это связано с тем, что ветка future-plans никогда не взаимодействовала с удаленным репозиторием. Туда передавалось только созданное изменение после коммита.
4. Нажмите Branches (Ветки) и обратите внимание, что на этой странице также нет записи об этой ветке.
5. Нажмите Source (Исходный код), затем выберите файл stationlocations . Вы заметите, что последнее изменение файла имеет тот же идентификатор коммита, что и отправленное.
6. Нажмите список истории файла, чтобы просмотреть изменения этого файла, отправленные в виде коммитов. Она будет выглядеть примерно как на следующем изображении.

Готово!
Не уверены, что сможете запомнить все только что выученные команды Git? Ничего страшного. Добавьте страницу Основные команды Git в закладки и обращайтесь к ней при необходимости.