Настройка 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), можно с помощью любой из следующих команд:
Проверка версии (Самый простой способ)
Выполните в терминале:
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