← JavaScript/Git: работа с GitHub#195 из 383← ПредыдущийСледующий →+25 XP
Полезно по теме:Гайд: как учить JavaScriptПрактика: JS базаПрактика: async и сетьТермин: Closure

Git: работа с GitHub

Remote репозиторий

Remote — удалённый репозиторий (GitHub, GitLab, Bitbucket). Позволяет:

  • Хранить код в облаке
  • Совместная работа команды
  • CI/CD и автоматизация
  • Code review через Pull Requests
  • Подключение remote

    # Добавить remote (обычно называется origin)
    git remote add origin https://github.com/user/repo.git
    
    # Проверить remotes
    git remote -v
    
    # Изменить URL remote
    git remote set-url origin git@github.com:user/repo.git

    Push — отправка изменений

    # Отправить ветку в remote
    git push origin main
    
    # Первый push с установкой upstream
    git push -u origin main
    # После этого можно просто: git push
    
    # Отправить все ветки
    git push --all origin
    
    # Отправить теги
    git push --tags

    Pull — получение изменений

    # Получить и слить изменения
    git pull origin main
    
    # Это сокращение для:
    git fetch origin
    git merge origin/main
    
    # Pull с rebase (линейная история)
    git pull --rebase origin main

    Fetch vs Pull

    | Команда | Действие |

    |---------|----------|

    | git fetch | Только скачивает, не сливает |

    | git pull | Скачивает + сливает в текущую ветку |

    # Fetch — безопасно посмотреть что нового
    git fetch origin
    git log HEAD..origin/main  # Что добавилось в remote
    
    # Если устраивает — слить
    git merge origin/main

    Clone — клонирование репозитория

    # По HTTPS
    git clone https://github.com/user/repo.git
    
    # По SSH (нужен настроенный ключ)
    git clone git@github.com:user/repo.git
    
    # Клонировать в определённую папку
    git clone https://github.com/user/repo.git my-folder
    
    # Shallow clone (без истории)
    git clone --depth 1 https://github.com/user/repo.git

    Pull Request (PR) workflow

    1. Fork репозитория (если не имеете доступа)

    Создаёт копию в вашем аккаунте GitHub.

    2. Клонирование и создание ветки

    git clone https://github.com/YOUR-USER/repo.git
    cd repo
    git checkout -b feature/my-feature

    3. Разработка и коммиты

    # ... вносите изменения ...
    git add .
    git commit -m "feat: add awesome feature"

    4. Push в свой remote

    git push -u origin feature/my-feature

    5. Создание Pull Request

    На GitHub: "Compare & pull request" → описание → "Create pull request"

    6. Code Review и исправления

    # Если нужны изменения после review
    git add .
    git commit -m "fix: address review comments"
    git push

    7. Merge после approval

    Кнопка "Merge pull request" на GitHub.

    SSH ключи для GitHub

    # Генерация ключа
    ssh-keygen -t ed25519 -C "your@email.com"
    
    # Копировать публичный ключ
    cat ~/.ssh/id_ed25519.pub
    # Добавить в GitHub → Settings → SSH Keys
    
    # Проверить подключение
    ssh -T git@github.com

    .gitignore для разных проектов

    Node.js / React / Vue

    node_modules/
    dist/
    build/
    .env
    .env.local
    *.log
    .DS_Store
    coverage/

    Python

    __pycache__/
    *.py[cod]
    venv/
    .env
    *.egg-info/
    dist/

    GitHub Actions (CI/CD)

    # .github/workflows/ci.yml
    name: CI
    
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with:
              node-version: '20'
          - run: npm ci
          - run: npm test
          - run: npm run build

    Полезные команды

    # Посмотреть разницу с remote
    git diff main origin/main
    
    # Отменить последний push (осторожно!)
    git push --force origin main
    
    # Удалить remote ветку
    git push origin --delete feature/old-branch
    
    # Синхронизировать fork с upstream
    git remote add upstream https://github.com/original/repo.git
    git fetch upstream
    git merge upstream/main

    Примеры

    Подключение remote и первый push

    # Проверяем текущие remotes
    git remote -v
    
    # Добавляем origin
    git remote add origin https://github.com/your-user/your-repo.git
    
    # Первый push + установка upstream
    git push -u origin main
    
    # Дальше можно просто
    git push

    Безопасная синхронизация с remote через fetch

    # Получаем изменения из remote, но не вливаем автоматически
    git fetch origin
    
    # Смотрим, какие коммиты есть в origin/main, но нет локально
    git log --oneline HEAD..origin/main
    
    # Если всё ок — мержим вручную
    git merge origin/main

    Git: работа с GitHub

    Remote репозиторий

    Remote — удалённый репозиторий (GitHub, GitLab, Bitbucket). Позволяет:

  • Хранить код в облаке
  • Совместная работа команды
  • CI/CD и автоматизация
  • Code review через Pull Requests
  • Подключение remote

    # Добавить remote (обычно называется origin)
    git remote add origin https://github.com/user/repo.git
    
    # Проверить remotes
    git remote -v
    
    # Изменить URL remote
    git remote set-url origin git@github.com:user/repo.git

    Push — отправка изменений

    # Отправить ветку в remote
    git push origin main
    
    # Первый push с установкой upstream
    git push -u origin main
    # После этого можно просто: git push
    
    # Отправить все ветки
    git push --all origin
    
    # Отправить теги
    git push --tags

    Pull — получение изменений

    # Получить и слить изменения
    git pull origin main
    
    # Это сокращение для:
    git fetch origin
    git merge origin/main
    
    # Pull с rebase (линейная история)
    git pull --rebase origin main

    Fetch vs Pull

    | Команда | Действие |

    |---------|----------|

    | git fetch | Только скачивает, не сливает |

    | git pull | Скачивает + сливает в текущую ветку |

    # Fetch — безопасно посмотреть что нового
    git fetch origin
    git log HEAD..origin/main  # Что добавилось в remote
    
    # Если устраивает — слить
    git merge origin/main

    Clone — клонирование репозитория

    # По HTTPS
    git clone https://github.com/user/repo.git
    
    # По SSH (нужен настроенный ключ)
    git clone git@github.com:user/repo.git
    
    # Клонировать в определённую папку
    git clone https://github.com/user/repo.git my-folder
    
    # Shallow clone (без истории)
    git clone --depth 1 https://github.com/user/repo.git

    Pull Request (PR) workflow

    1. Fork репозитория (если не имеете доступа)

    Создаёт копию в вашем аккаунте GitHub.

    2. Клонирование и создание ветки

    git clone https://github.com/YOUR-USER/repo.git
    cd repo
    git checkout -b feature/my-feature

    3. Разработка и коммиты

    # ... вносите изменения ...
    git add .
    git commit -m "feat: add awesome feature"

    4. Push в свой remote

    git push -u origin feature/my-feature

    5. Создание Pull Request

    На GitHub: "Compare & pull request" → описание → "Create pull request"

    6. Code Review и исправления

    # Если нужны изменения после review
    git add .
    git commit -m "fix: address review comments"
    git push

    7. Merge после approval

    Кнопка "Merge pull request" на GitHub.

    SSH ключи для GitHub

    # Генерация ключа
    ssh-keygen -t ed25519 -C "your@email.com"
    
    # Копировать публичный ключ
    cat ~/.ssh/id_ed25519.pub
    # Добавить в GitHub → Settings → SSH Keys
    
    # Проверить подключение
    ssh -T git@github.com

    .gitignore для разных проектов

    Node.js / React / Vue

    node_modules/
    dist/
    build/
    .env
    .env.local
    *.log
    .DS_Store
    coverage/

    Python

    __pycache__/
    *.py[cod]
    venv/
    .env
    *.egg-info/
    dist/

    GitHub Actions (CI/CD)

    # .github/workflows/ci.yml
    name: CI
    
    on:
      push:
        branches: [main]
      pull_request:
        branches: [main]
    
    jobs:
      test:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - uses: actions/setup-node@v4
            with:
              node-version: '20'
          - run: npm ci
          - run: npm test
          - run: npm run build

    Полезные команды

    # Посмотреть разницу с remote
    git diff main origin/main
    
    # Отменить последний push (осторожно!)
    git push --force origin main
    
    # Удалить remote ветку
    git push origin --delete feature/old-branch
    
    # Синхронизировать fork с upstream
    git remote add upstream https://github.com/original/repo.git
    git fetch upstream
    git merge upstream/main

    Примеры

    Подключение remote и первый push

    # Проверяем текущие remotes
    git remote -v
    
    # Добавляем origin
    git remote add origin https://github.com/your-user/your-repo.git
    
    # Первый push + установка upstream
    git push -u origin main
    
    # Дальше можно просто
    git push

    Безопасная синхронизация с remote через fetch

    # Получаем изменения из remote, но не вливаем автоматически
    git fetch origin
    
    # Смотрим, какие коммиты есть в origin/main, но нет локально
    git log --oneline HEAD..origin/main
    
    # Если всё ок — мержим вручную
    git merge origin/main
    📖

    Теоретический урок

    Изучи материал выше и задай вопросы AI если что-то непонятно

    Этот урок содержит теоретическую информацию. Изучи материал, затем отметь урок как пройденный.

    Загружаем AI-помощника...