Как проверить изменения во внешнем (upstream) репозитории GitHub?

«Как проверить изменения во внешнем (upstream) репозитории GitHub?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Чтобы проверить изменения во внешнем (оригинальном, upstream) репозитории, с которым вы не связаны напрямую, стандартный workflow включает создание форка и синхронизацию изменений.

Пошаговый процесс:

1. Создайте форк (Fork) и настройте локальный репозиторий

# 1. На GitHub нажмите 'Fork' на странице upstream-репозитория.
# 2. Клонируйте СВОЙ форк локально.
git clone https://github.com/YOUR-USERNAME/REPO-NAME.git
cd REPO-NAME

# 3. Добавьте оригинальный репозиторий как удалённый с именем 'upstream'.
git remote add upstream https://github.com/ORIGINAL-OWNER/REPO-NAME.git

# 4. Проверьте список удалённых репозиториев.
git remote -v
# origin    https://github.com/YOUR-USERNAME/REPO-NAME.git (fetch/push)
# upstream  https://github.com/ORIGINAL-OWNER/REPO-NAME.git (fetch/push)

2. Получите последние изменения из upstream

# Получите все ветки и коммиты из upstream, но не сливайте их.
git fetch upstream

3. Проверьте изменения

  • Сравнение основной ветки: Просмотрите разницу между вашей локальной основной веткой и upstream.
    
    # Переключитесь на вашу основную ветку (например, main).
    git checkout main

Сравните вашу ветку с веткой upstream/main.

git diff main upstream/main

Или просмотрите историю коммитов upstream.

git log --oneline --graph upstream/main

*   **Создание ветки для проверки:** Чтобы изучить изменения, не затрагивая свою работу, создайте ветку на основе актуального состояния upstream.
```bash
git checkout -b review-upstream-changes upstream/main

4. Детальный анализ изменений

  • Просмотр изменений в файлах:
    # Показать изменения для последнего коммита в upstream.
    git show upstream/main
    # Показать изменения за определённый период.
    git log --since="2024-01-01" --until="2024-01-31" --oneline upstream/main
    git diff upstream/main~3 upstream/main # Сравнить 3 коммита назад с текущим
  • Локальный запуск тестов: Если это код проекта, запустите тесты для новой версии.
    # После переключения на ветку review-upstream-changes
    npm install
    npm test

5. Синхронизация форка с upstream (если нужно) Если вы хотите обновить свою основную ветку до состояния upstream:

git checkout main
git merge upstream/main
# Или, что предпочтительнее для чистоты истории:
git rebase upstream/main
# Затем отправьте обновления в свой форк на GitHub.
git push origin main

Дополнительные методы проверки:

  • GitHub Actions в форке: Настройте CI-пайплайн в своём форке, который будет запускаться при синхронизации с upstream.
  • Просмотр Pull Requests в upstream: Изучите открытые PR в оригинальном репозитории, чтобы понять направление развития.
  • Использование gh CLI:
    # Установите GitHub CLI, затем:
    gh repo sync YOUR-USERNAME/REPO-NAME -b main
    gh pr view --repo ORIGINAL-OWNER/REPO-NAME 123 # Просмотр конкретного PR