Основы
- Пользователи, права и настройка рабочих мест
- Справочник базовых команд Git (Cheat Sheet)
- Практические кейсы и ежедневные сценарии
Пользователи, права и настройка рабочих мест
👤 1. Управление пользователями и правами (для Администратора)
Создание учетной записи
В веб-интерфейсе Gitea под учетной записью администратора:
- Перейдите в Панель администратора → вкладка Пользователи → кнопка Создать пользователя.
- Заполните данные сотрудника (например, имя пользователя:
ivanov). - Укажите временный пароль и активируйте опцию
Требовать смену пароля при следующем входе.
Предоставление прав к репозиторию
По умолчанию приватные репозитории скрыты от новых пользователей. Чтобы выдать доступ:
- Откройте нужный репозиторий (например,
infra) → перейдите в Settings (Настройки) → Access Management (Управление доступом). - В поле Add Collaborator введите имя сотрудника и выберите уровень прав (обычно Write для возможности отправки изменений).
🖥️ 2. Настройка рабочей машины пользователя
Вариант А: Работа через MobaXterm (рекомендуется для Linux-окружения)
Откройте локальный терминал (Local Terminal) в MobaXterm и выполните команды:
# 1. Создание папки для SSH-ключей, если она отсутствует mkdir -p ~/.ssh # 2. Генерация пары SSH-ключей без пароля доступа ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_gitea -C "workstation@gitea" -N "" # 3. Вывод публичной части ключа (скопируйте его полностью) cat ~/.ssh/id_ed25519_gitea.pub
Добавьте скопированный ключ в профиль Gitea пользователя: Настройки → SSH / GPG ключи → Добавить ключ.
Настройте файл конфигурации SSH на рабочей машине для автоматического использования этого ключа:
# Создание конфигурационного файла SSH
cat >> ~/.ssh/config << 'EOF'
Host gitea-lab
HostName 10.177.178.60
User git
Port 222
IdentityFile ~/.ssh/id_ed25519_gitea
IdentitiesOnly yes
StrictHostKeyChecking no
EOF
Установка безопасных прав на конфигурацию
chmod 600 ~/.ssh/config
Вариант Б: Работа через Windows PowerShell
Установите Git for Windows и выполните в PowerShell:
# Настройка глобальных параметров Git для подписи коммитов git config --global user.name "Ivanov Ivan" git config --global user.email "ivanov@company.local"Генерация SSH-ключа
mkdir -Force ~/.ssh ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_gitea -C "ivanov@workstation" -N ""
Вывод публичного ключа для добавления в веб-интерфейс Gitea
Get-Content ~/.ssh/id_ed25519_gitea.pub
Вариант В: Работа по HTTPS с токеном доступа
# Включение безопасного хранения паролей и токенов в системном менеджере Windows git config --global credential.helper managerКлонирование репозитория по HTTPS
git clone https://10.177.178.60:3000/admold/infra.git
При первом запросе учетных данных введите свой логин, а вместо пароля вставьте токен доступа.
✏️ 3. Интеграция с Notepad++
Настройка отступов для корректного синтаксиса YAML (Ansible)
Ansible критичен к отступам. Настройте Notepad++ перед началом работы:
- Перейдите в меню: Опции (Settings) → Настройки (Preferences...) → пункт Язык (Language).
- В списке языков выберите YAML.
- Установите галочку ✅ Заменять пробелом (Replace by space).
- Размер табуляции (Tab size) установите равным 2.
Алиас edit в MobaXterm (с автоматическим преобразованием путей и фоновым режимом)
Чтобы файлы открывались в Notepad++ из консоли MobaXterm без блокировки ввода терминала:
# 1. Откройте файл конфигурации оболочки в MobaXterm nano ~/.bashrc2. Добавьте в конец файла функцию (cygpath переведет Unix-путь в понятный для Windows формат, а символ & запустит редактор на фоне):
edit() { "/drives/c/Program Files/Notepad++/notepad++.exe" "$(cygpath -w "$1")" & }
3. Сохраните изменения (Ctrl+O -> Enter -> Ctrl+X) и примените их в сессии:
source ~/.bashrc
Алиас edit в стандартном Windows PowerShell
Если вы работаете в стандартном терминале Windows без MobaXterm:
# 1. Откройте профиль пользователя PowerShell (он автоматически создастся, если его нет)
if (!(Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }; notepad $PROFILE
2. Добавьте в открывшийся текстовый файл следующие строки и сохраните его:
function Edit-File { param($path) & "C:\Program Files\Notepad++\notepad++.exe" $path }
Set-Alias edit Edit-File
3. Перезапустите PowerShell. Теперь команда "edit файл.yml" будет открывать его в Notepad++.
Справочник базовых команд Git (Cheat Sheet)
📁 1. Инициализация и клонирование репозиториев
# Клонирование удаленного репозитория в текущую папку git clone gitea-lab:admold/infra.git # Клонирование репозитория в конкретную папку с указанием пути git clone gitea-lab:admold/infra.git ~/projects/ansible # Быстрое клонирование без истории коммитов (полезно для CI/CD-пайплайнов) git clone --depth 1 gitea-lab:admold/infra.git # Инициализация нового пустого Git-репозитория в текущей локальной папке git init
🔍 2. Просмотр текущего состояния и истории изменений
# Просмотр статуса рабочей копии (измененные, удаленные, неотслеживаемые файлы) git status # Просмотр статуса в кратком компактном виде git status -s # Сравнение изменений в файлах, которые еще не добавлены в индекс (staged) git diff # Сравнение изменений в конкретном файле git diff playbooks/site.yml # Просмотр истории изменений (коммитов) git log # Краткий просмотр последних 5 коммитов (в одну строку каждый) git log -5 --oneline
✏️ 3. Фиксация и отправка изменений (Commit & Push)
# Добавление конкретного файла в индекс для последующего коммита git add playbooks/site.yml # Добавление всех изменений в отслеживаемых файлах (без добавления новых неотслеживаемых) git add -u # Фиксация изменений с кратким комментарием git commit -m "fix: update configurations for backup paths" # Отправка локальных изменений на удаленный сервер в ветку main git push origin main
🌿 4. Ветки (Branches) и слияния
# Просмотр списка всех локальных веток git branch # Создание новой ветки и автоматический переход на неё git switch -c feature/monitoring # Переключение на существующую ветку git switch main # Слияние изменений из ветки feature/monitoring в текущую активную ветку git merge feature/monitoring # Удаление локальной ветки после завершения работ git branch -d feature/monitoring
🔄 5. Отмена изменений и откат состояний
# Сброс изменений в файле до состояния последнего коммита git restore playbooks/site.yml # Сброс файла из подготовленной зоны (staged) обратно в измененные git restore --staged playbooks/site.yml # Откат последнего коммита с сохранением изменений в файлах git reset --soft HEAD~1 # Полный откат последнего коммита с УДАЛЕНИЕМ всех изменений в файлах (опасно!) git reset --hard HEAD~1 # Безопасная отмена уже отправленного на сервер коммита (создает новый коммит-отмену) git revert a1b2c3d --no-edit
📦 6. Временное сохранение изменений (Stash)
# Спрятать все незакоммиченные изменения в специальный карман (чтобы очистить рабочую копию) git stash # Вернуть сохраненные изменения обратно в рабочую копию и удалить запись из кармана git stash pop
Практические кейсы и ежедневные сценарии
🔧 Сценарий 1: Редактирование существующего файла конфигурации
playbooks/site.yml (например, скорректировать пути бэкапов) и зафиксировать это в истории.
1. Перейдите в каталог репозитория и обновите файлы до актуального состояния:
cd ~/projects/infra git pull origin main
2. Откройте файл в вашем текстовом редакторе для внесения изменений:
# Введите команду редактирования (например, "nano" или ваш настроенный alias "edit" для Notepad++) edit playbooks/site.yml
3. Сохраните изменения, вернитесь в консоль и зафиксируйте их:
# Проверьте, какие файлы были изменены git status -sДобавьте измененный файл в индекс
git add playbooks/site.yml
Создайте коммит с понятным описанием изменений
git commit -m "fix: update backup paths in site.yml"
Отправьте коммит на сервер Gitea
git push origin main
📦 Сценарий 2: Создание новой роли/файла (Работа с Untracked-файлами)
roles/nginx/tasks/main.yml.
1. Создайте структуру каталогов и откройте новый файл в редакторе:
mkdir -p roles/nginx/tasks edit roles/nginx/tasks/main.yml
2. Начните отслеживание нового файла в Git:
git add . в корневом каталоге. Она может случайно захватить временные лог-файлы или незашифрованные файлы секретов. Добавляйте новые файлы точечно, прописывая к ним явные пути.
# Проверьте статус (файл должен находиться в категории Untracked) git statusЯвно укажите Git начать отслеживание этого файла
git add roles/nginx/tasks/main.yml
Создайте коммит и отправьте его на сервер
git commit -m "feat: add basic task layout for nginx role" git push origin main
🌿 Сценарий 3: Изолированное тестирование рискованных изменений
main, с которой работают остальные члены команды.
1. Создайте изолированную экспериментальную ветку и перейдите на неё:
# Переключитесь на актуальную версию ветки main git switch main git pull origin mainСоздайте ветку эксперимента
git switch -c experiment/global-refactor
2. Отредактируйте файлы и зафиксируйте изменения локально:
# Откройте плейбук для внесения тестовых изменений edit playbooks/base_setup.ymlТак как мы находимся в изолированной ветке, мы можем безопасно добавить изменения измененных файлов
git add -u git commit -m "refactor: apply experimental directory structuring"
3. Примите решение по результатам тестирования:
ВАРИАНТ А Эксперимент удался. Вливаем изменения в основную ветку:
# Вернитесь в ветку main git switch mainСлейте изменения из экспериментальной ветки в основную
git merge experiment/global-refactor
Отправьте объединенный результат на сервер
git push origin main
ВАРИАНТ Б Эксперимент провалился. Безболезненно удаляем ветку:
# Вернитесь на стабильную ветку main git switch mainПринудительно удалите испорченную ветку эксперимента
git branch -D experiment/global-refactor
💥 Сценарий 4: Разрешение конфликтов при попытке слияния
git pull или выполнить merge, консоль выдала ошибку "CONFLICT (content): Merge conflict in playbooks/site.yml".
1. Локализуйте конфликтный файл:
git status # Ищите пометку "both modified: playbooks/site.yml"
2. Откройте этот файл в текстовом редакторе:
edit playbooks/site.yml
3. Найдите в тексте разделительные маркеры Git:
<<<<<<< HEAD Ваша локальная версия (то, что было у вас на компьютере) ======= Удаленная версия (то, что кто-то уже успел отправить на Gitea) >>>>>>> a1b2c3d4...
4. Отредактируйте конфликтную область:
Удалите маркеры конфликта (`<<<<<<<`, `=======`, `>>>>>>>`) и оставьте только правильную логику (возможно, объединив обе версии).
5. Зафиксируйте успешное решение конфликта в репозитории:
# Сообщите Git, что конфликт решен git add playbooks/site.ymlЗавершите операцию слияния
git commit -m "merge: resolve conflicts in site.yml"