Skip to main content

Настройка Git в WSL-Ubuntu && Windows

Зайдите в папку проекта.

Проверка версии Git

Чтобы узнать, какая версия Git установлена в Ubuntu:

git --version

(Если нужно обновить Git до актуальной версии в Ubuntu: sudo apt update && sudo apt install git -y).

Проверить, установлена ли утилита GitHub CLI (gh) в вашей системе (в WSL Ubuntu, PowerShell на Windows или Linux), можно с помощью любой из следующих команд:

Проверка версии (Самый простой способ)

Выполните в терминале:

Bash
gh --version
  • Если gh установлен: Вы увидите версию утилиты и архитектуру, например:

    gh version 2.52.0 (2024-06-20)

  • Если gh НЕ установлен:

    • В WSL / Ubuntu вы получите сообщение: Command 'gh' not found...

    • В Windows PowerShell вы получите ошибку: gh : Имя "gh" не распознано как имя командлета...

Проверка пути к исполняемому файлу

  • В WSL / Ubuntu / Linux:

    which gh
    

    (Если установлен, вернет путь вида /usr/bin/gh или /usr/local/bin/gh).

  • В Windows PowerShell:

    Get-Command gh
    

Как быстро установить gh, если его нет:

В WSL / Ubuntu:

sudo apt update && sudo apt install gh -y

В Windows (через winget в PowerShell):

winget install --id GitHub.cli

Перед началом работы с репозиторием в GitHub вам нужно к нему подключиться с помощью команды 

gh auth login

Далее последует небольшой диалог, в приведенном примере я использую ключ GitHub для авторизации:

gh auth login
? What account do you want to log into? GitHub.com
? What is your preferred protocol for Git operations on this host? HTTPS
? Authenticate Git with your GitHub credentials? Yes
? How would you like to authenticate GitHub CLI? Paste an authentication token
Tip: you can generate a Personal Access Token here https://github.com/settings/tokens
The minimum required scopes are 'repo', 'read:org', 'workflow'.
? Paste your authentication token: **************************************************
- gh config set -h github.com git_protocol https
✓ Configured git protocol
! Authentication credentials saved in plain text
✓ Logged in as YourGitLogin

Чтобы склонировать репозиторий с GitHub со всеми ветками и полной историей, достаточно выполнить стандартную команду git clone:

git clone git@github.com:username/repository.git

(Или через HTTPS / GitHub CLI, например: gh repo clone username/repository).

Вопреки распространенному заблуждению, стандартный git clone по умолчанию скачивает абсолютно ВСЕ ветки, теги и всю историю проекта.

Однако локально Git сразу создает текстовую указательную ветку только для главной (обычно main или master). Остальные ветки остаются в так называемом режиме отслеживания (remote-tracking branches).

Как увидеть все забранные ветки и работать с ними

1. Посмотреть список всех веток

Перейдите в папку проекта (cd repository) и выполните:

git branch -a

Вы увидите список:

* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/dev
  remotes/origin/feature-login

Все ветки с префиксом remotes/origin/ уже находятся на вашем компьютере, их не нужно скачивать заново из интернета.

2. Как переключиться на нужную ветку

Чтобы начать работать с любой из локально загруженных веток (например, dev), просто переключитесь на нее:

git checkout dev

(В современных версиях Git также можно использовать git switch dev).

Git автоматически создаст локальную ветку dev, свяжет ее с origin/dev и переключит ваш рабочий каталог.

Если вам нужно гарантированно развернуть ЛОКАЛЬНЫЕ копии ВСЕХ веток сразу

Если ваша цель — не просто скачать проект, а сделать так, чтобы команда git branch (без флага -a) сразу показывала полный список всех веток как локальных, используйте короткий однострочник прямо в терминале:

В WSL / Ubuntu (Bash):

git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all

В Windows PowerShell:

git branch -r | Where-Object { $_ -notmatch '->' } | ForEach-Object {
    $branch = $_.Trim().Replace('origin/', '')
    git branch --track $branch $_.Trim()
}
git fetch --all

После выполнения этого скрипта каждая удаленная ветка превратится в полноценную локальную ветку.

Рекомендуемый файл .gitignore для проекта в связке с .NET и REACT:

# ==========================================
# .NET / C# (Правила сработают для любой подпапки)
# ==========================================
## --- Build & Output directories ---
bin/
obj/
out/
[Bb]in/
[Ob]j/

## --- Visual Studio & Rider temporary files ---
.vs/
.idea/
*.user
*.userosscache
*.sln.docstates
*.suo
*.userprefs

## --- NuGet Packages & Cache ---
*.nupkg
*.snupkg
**/packages/
project.lock.json
project.assets.json

## --- Local settings & Secrets ---
# Локальные пользовательские конфигурации (раскомментируйте, если не хотите коммитить appsettings.Development.json)
# appsettings.Development.json
# appsettings.*.local.json
secrets.json

## --- Test Results & Coverage ---
[Tt]est[Rr]esult*/
*.coverage
*.coveragexml

# ==========================================
# Node.js / Frontend (Vue, React и т.д.)
# ==========================================
node_modules/
dist/
.npm
*.log

# ==========================================
# Общие временные файлы ОС
# ==========================================
.DS_Store
Thumbs.db