📝 Python

Миграция с Bitbucket на GitHub 🔄

0
Author
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Published
06.05.2026
⏱️
Reading time
4 min
👁️
Views
26
🌱
Level
Beginner

Решили переехать с Bitbucket на GitHub? Рассказываем как перенести репозитории правильно!

Зачем мигрировать?

Причины перехода на GitHub:

✅ Большое сообщество (100+ млн разработчиков)
✅ Лучше для портфолио
✅ GitHub Actions (мощный CI/CD)
✅ GitHub Pages (бесплатный хостинг)
✅ Больше интеграций
✅ Популярнее среди работодателей

Bitbucket всё ещё хорош для:
- Интеграция с Jira
- Корпоративныйsetup
- Pipelines (встроенный CI/CD)

Способ 1: Через GitHub Desktop (ЛЕГКО!)

Шаг 1: Клонируйте с Bitbucket

  1. Откройте Bitbucket репозиторий
  2. Скопируйте HTTPS URL
  3. GitHub Desktop → FileClone Repository
  4. Вкладка URL → вставьте Bitbucket URL
  5. Clone

Шаг 2: Опубликуйте на GitHub

  1. После клонирования нажмите Publish repository
  2. Выберите имя и описание
  3. Public или Private
  4. Publish Repository

✅ Готово! Код перенесён с Bitbucket на GitHub!

Способ 2: Через командну строку

Полная миграция с историей

# 1. Клонируйте с Bitbucket (bare clone)
git clone --bare https://bitbucket.org/username/repo.git

# 2. Перейдите в папку
cd repo.git

# 3.  Создайте репозиторий на GitHub.com
# Идите на github.com/new и создайте repo

# 4. Push зеркало на GitHub
git push --mirror https://github.com/username/repo.git

# 5. Удалите временную папку
cd ..
rm -rf repo.git

# 6. Клонируйте с GitHub для работы
git clone https://github.com/username/repo.git

Объяснение команд

--bare — клонирует только Git данные (без рабочих файлов)

--mirror — копирует ВСЁ:
- Все ветки
- Все теги
- Всю историю
- Все refs

Способ 3: Import от GitHub (АВТОМАТИЧЕСКИ!)

Через веб-интерфейс GitHub

  1. Идите на github.com/new/import
  2. Вставьте Bitbucket URL:
    https://bitbucket.org/username/repo
  3. Если приватный — введите credentials
  4. Выберите имя нового репозитория
  5. Public/Private
  6. Begin import

GitHub автомат ически:
- Клонирует код
- Перенесёт всю историю
- Перенесёт все ветки
- Создаст новый репозиторий

Займёт 5-15 минут.

Что переносится?

✅ Переносится

  • Код (все файлы)
  • История коммитов
  • Ветки
  • Теги
  • Контрибьюторы (авторы коммитов)

❌ НЕ переносится

  • Issues (задачи)
  • Pull Requests
  • Wiki страницы
  • Build Pipelines
  • Webhooks
  • Branch permissions

Эти данные нужно переносить вручную или плагинами (редко нужно).

После миграции

1. Обновите README

Добавьте бейдж GitHub:

# My Project

![GitHub Stars](https://img.shields.io/github/stars/username/repo)
![GitHub Forks](https://img.shields.io/github/forks/username/repo)

2. Настройте GitHub Actions

Создайте .github/workflows/ci.yml:

name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Run tests
        run: npm test

3. Добавьте CODEOWNERS

```.github/CODEOWNERS
* @username
/docs/ @docs-team

### 4. Настройте Branch Protection

1. Settings → Branches
2. Add rule для `main`
3. ✅ Require pull request reviews
4. ✅ Require status checks

### 5. Обновите ссылки

Везде где была ссылка на Bitbucket:

- README.md
- Документация
- CI/CD конфиги
- Webhooks
- Deployment scripts

Замените на GitHub URLs.

## Командная работа: переезд команды

### Уведомите команду

```markdown
## 🚀 Мы переехали на GitHub!

**Старый репозиторий (НЕ ИСПОЛЬЗУЙТЕ):**
https://bitbucket.org/team/project

**Новый репозиторий:**
https://github.com/team/project

**Действия:**
1. Удалите старый clone
2. Клонируйте с GitHub
3. Обновите remote в существующих клонах

Обновить remote в существующих клонах

Если у членов команды уже есть клон:

# Проверить текущий remote
git remote -v

# Изменить на GitHub
git remote set-url origin https://github.com/username/repo.git

# Проверить что изменилось
git remote -v

Миграция multiple репозиториев

Если нужно перенести 10+ репозиториев:

Скрипт для автоматизации

#!/bin/bash

# Список репозиториев
repos=(
  "repo1"
  "repo2"
  "repo3"
)

for repo in "${repos[@]}"; do
  echo "Migrating $repo..."

  # Clone from Bitbucket
  git clone --bare https://bitbucket.org/username/$repo.git

  # Push to GitHub
  cd $repo.git
  git push --mirror https://github.com/username/$repo.git

  # Cleanup
  cd ..
  rm -rf $repo.git

  echo "$repo migrated!"
done

Сохраните как migrate.sh, сделайте executable и запустите:

chmod +x migrate.sh
./migrate.sh

Сравнение платформ

Функция Bitbucket GitHub
Бесплатные private ✅ Да ✅ Да
CI/CD Pipelines Actions
Wiki ✅ Да ✅ Да
Сообщество Меньше 100+ млн
Jira интеграция ✅ Отлично Есть, но хуже
Self-hosted Bitbucket Server GitHub Enterprise

Частые проблемы

“Authentication failed”

Решение:

Для Bitbucket с 2FA нужен App Password:

  1. Bitbucket → Personal settings → App passwords
  2. Create app password
  3. Используйте вместо обычного пароля

Большой репозиторий (> 1GB)

Решение:

  1. Используйте git filter-branch чтобы удалить большие файлы из истории
  2. Или Git LFS для больших файлов
  3. Или BFG Repo-Cleaner

Different commit authors

Git сохраняет оригинальных авторов. Если нужно изменить:

git filter-branch --env-filter '
export GIT_AUTHOR_EMAIL="new@email.com"
export GIT_COMMITTER_EMAIL="new@email.com"
'

Обратная миграция

Передумали? Вернуться можно точно так же:

git clone --bare https://github.com/username/repo.git
cd repo.git
git push --mirror https://bitbucket.org/username/repo.git

Вывод

Миграция с Bitbucket на GitHub:

✅ Простая (3-5 минут на репозиторий)
✅ Сохраняет историю
✅ Можно автоматизировать

Выбирайте GitHub для:
- Открытых проектов
- Портфолио
- Сообщества

Оставайтесь на Bitbucket если:
- Интенсивно используете Jira
- Корпоративный setup уже настроен
- Bitbucket Pipelines работают идеально

Удачной миграции! 🚀

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

Модуль datetime: работа с датами и временем

datetime — стандартный модуль Python для работы с датами и временем. Входит в стандартную библиотеку,...

📅 08.05.2026 👁️ 30
📝

.env файлы и переменные окружения: секреты вне ко…

Представь что ты написал программу с API-ключом прямо в коде и залил её на GitHub....

📅 08.05.2026 👁️ 35
📝

Виртуальные окружения в Python: зачем и как

Когда начинаешь второй Python-проект и ставишь pip install requests — эта библиотека устанавливается глобально, для...

📅 08.05.2026 👁️ 31

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!