Документация/Рабочее место
Git-клиент, аккаунты и публикация
Встроенный Git: статус, коммит, ветки, журнал с графом, rebase, cherry-pick, stash и worktree. Здесь же — Git-аккаунты, клонирование и публикация репозитория, а merge request открывает агент.
В DevMachine ADE есть свой Git-клиент: коммиты, ветки, журнал с графом, слияния и конфликты — без отдельной программы. Клиент и агент работают с одной рабочей копией, поэтому правки агента сразу видны в списке изменений. Если вы работали в IDE JetBrains, многое покажется знакомым: Git-операции здесь называются по-английски, как и там.
Как открыть
- Кнопка «Git» в шапке: ⌘ 9 на macOS, Alt 9 на Windows и Linux (в наборе сочетаний VS Code — ⌃ ⇧ G / Ctrl Shift G).
- Чип ветки в шапке — быстрые действия: поиск «Ветки и действия…», «Pull…», «Commit…», «Push», «Fetch», «Новая ветка…», «Checkout tag или revision…», «Недавние» и ветки Local / Remote по папкам. Если выбрать здесь удалённую ветку, она станет локальной отслеживающей веткой.
Янтарная точка на значке Git значит, что папка проекта ещё не репозиторий или у репозитория нет remote. Для каждого случая в виде Git свои кнопки:
- Папка ещё не репозиторий — кнопки «git init — сделать папку репозиторием», «Проект из git…» и «Аккаунты…».
- У репозитория нет remote — над журналом полоса «Нет remote» с кнопками «Опубликовать…», «Добавить remote…» и «Аккаунты…». Нажмите «Опубликовать…», чтобы создать новый репозиторий на хосте, или «Добавить remote…», чтобы указать адрес репозитория, который там уже есть.
Вид «Git»
- Слева — ветки. Поиск «Ветка или tag», группы Local, Remote, Tags и Worktree, пометка «HEAD отсоединён».
- В середине — журнал с графом. Фильтры «Текст или hash», «Ветка» и «Автор», кнопка «Показать ещё 50».
- Справа — коммит. «Подробности» и «Файлы». Щёлкните файл — откроется дифф в раскладке «Рядом» или «Единый», с кнопками «Открыть в редакторе» и «Скопировать путь». Стрелки ↑ ↓ листают файлы, а «Журнал» или Esc возвращают назад. Дифф можно читать и по смыслу — см. Дифф «Код / Поведение».
Несколько репозиториев в одной папке
Если проект — папка, в которой лежат репозитории (до трёх уровней вглубь), вид Git покажет их список и поле «Фильтр репозиториев». Выберите нужный, и вид будет работать с ним. «Сменить» возвращает к списку. Чтобы сделать репозиторием саму папку, нажмите «git init в этой папке…».
Коммит
- Откройте окно коммита: «Commit…» в виде Git или в чипе ветки, либо ⌘ K (Ctrl K).
- В окне два списка: «Изменения» и «Новые файлы». По умолчанию все флажки отмечены. Снимите флажки с файлов, которые не хотите коммитить: в коммит попадут только отмеченные.
- Заполните «Заголовок commit» и, если хотите, «Описание — необязательно». Черновик сохранится, даже если закрыть окно.
- Нажмите «Commit» (⌘ ⏎) или «Commit and Push». После «Commit and Push» откроется окно отправки: в нём «Commits для push», выбор remote и флажок «Push tags».
Кнопка «Commit…» есть и в Изменениях сессии. Учтите: она коммитит все рабочие изменения проекта. Сессия — это чат, а у всех чатов одного проекта общая рабочая копия, поэтому в коммит попадут и правки агента из других чатов. Если они не нужны, снимите с этих файлов флажки в окне коммита.
Ветки и история
Операции есть на панели вида и в меню по правому щелчку на ветке или коммите:
| Что | Операции |
|---|---|
| Обмен с remote | Fetch, Pull, Pull --rebase, Push, Force push… (с защитой --force-with-lease: если в remote появились чужие коммиты, push отменится) |
| Ветки | Checkout, «Новая ветка отсюда…», «Новый tag…», «Удалить ветку…», «Сравнить с …», «Сравнить с локальными» |
| Слияние | Merge, Rebase |
| Коммиты | Cherry-pick, Revert, «Checkout revision», «Скопировать revision» |
| Переписать историю | «Reset текущей ветки сюда…» (Soft, Mixed, Hard); «Squash до этого commit…» сливает в один коммиты от HEAD до выбранного включительно (только для линейной истории) |
| Stash | «Stash» откладывает все изменения; в списке stash их можно «Вернуть» (pop), «Применить» (apply) или удалить |
Важно
Reset в режиме Hard удаляет изменения снятых коммитов и локальные правки, и вернуть их нельзя.
Конфликты
Операция с конфликтом не зависает. Приходит уведомление со списком файлов и кнопкой «Показать конфликты». Над журналом появляется полоса, например «Rebase остановлен», с кнопками «Конфликты», «Abort» и, по ситуации, «Продолжить rebase» или «Завершить merge». Разрешите конфликты в редакторе или попросите об этом агента, а потом продолжите операцию.
Worktree
Группа «Worktree» в списке веток показывает все рабочие копии репозитория. Щелчок по копии открывает её как проект. Копия, в которой вы сейчас работаете, помечена «здесь», основная — «основная копия». Копия с пометкой «папки нет» не открывается: её папки больше нет на диске. Агент тоже умеет работать в отдельной копии — см. Задача в отдельной копии проекта.
Git-аккаунты
С аккаунтом можно отправлять и получать изменения по HTTPS без пароля и публиковать репозитории, а агент сможет открывать merge request.
- Откройте «Настройки → Git-аккаунты» (группа «Подключения») или нажмите «Аккаунты…» в виде Git.
- Нажмите «Добавить аккаунт» и выберите тип: GitHub, GitLab или «Другой». Если у вас свой сервер GitLab, укажите «Адрес сервера».
- Нажмите «Создать на GitHub» или «Создать на GitLab». В браузере откроется страница нового токена, где права уже выбраны (GitHub: repo и workflow, GitLab: api). Создайте там токен и вставьте его в поле.
- Нажмите «Проверить и добавить». Логин приложение узнает само.
Для типа «Другой» шаги 3 и 4 выглядят иначе: кнопки создания токена нет. Укажите «Адрес сервера» и «Логин», вставьте токен, созданный на этом сервере, и нажмите «Сохранить». Проверить такой токен у хоста приложение не может.
Приложение использует токен для Push, Pull, Fetch и клонирования по HTTPS и только на хосте этого аккаунта. Токен хранится в системной связке ключей. Если связки нет, токен живёт только до перезапуска. В меню аккаунта есть «Заменить токен» и «Удалить аккаунт».
Клонировать репозиторий
- Нажмите «Из git…» на стартовом экране или выберите в меню «Проект» → «Проект из git…».
- В поле «Адрес репозитория» вставьте адрес SSH или HTTPS.
- Заполните «Папка» и «Имя папки».
- Если репозиторий приватный, адрес HTTPS, а Git-аккаунта нет, заполните «Логин» и «Токен или пароль». Они нужны только для этого клонирования и не сохраняются.
По SSH используются ключи из ssh-agent и ~/.ssh.
Опубликовать репозиторий
Если у репозитория нет remote, в виде Git есть кнопка «Опубликовать…»:
- Выберите «Аккаунт» (GitHub или GitLab с токеном).
- Укажите «Имя репозитория» и выберите «Приватный» или «Публичный».
- Нажмите «Опубликовать». Приложение создаст на хосте пустой репозиторий, сделает его
originи отправит туда текущую ветку.
Если репозиторий на хосте уже есть, нажмите «Добавить remote…».
Merge request и pull request
Merge request в GitLab или pull request в GitHub открывает агент. Он работает через Git-аккаунт, добавленный в настройках, поэтому отдельно подключать агента не нужно. Кнопки для pull request в приложении нет. Попросите агента, например: «отправь ветку и открой merge request». Он отправит ветку, откроет запрос и пришлёт ссылку.
- Токен агент не получает: запросы к хосту делает приложение.
- Агент отправляет изменения только в свою ветку. Force push он не делает, в ветку по умолчанию ничего не отправляет.
- У аккаунта типа «Другой» нет API, поэтому merge request через него не открыть.
Сочетания клавиш
В наборе JetBrains, который стоит по умолчанию:
| Действие | macOS | Windows и Linux |
|---|---|---|
| Вид «Git» | ⌘ 9 | Alt 9 |
| Commit | ⌘ K | Ctrl K |
| Push | ⇧ ⌘ K | Ctrl Shift K |
| Pull | ⌘ T | Ctrl T |
| Ветки | ⌃ V | Alt ` |
В наборе VS Code сочетание есть только у вида «Git», у остальных команд его нет.
Ограничения
- Нужен установленный git.
- Коммит, push и fetch используют ваши настройки git: хуки, SSH, подпись коммитов и помощники учётных данных.
- В проекте на сервере git работает на сервере, с учётными данными сервера. Токены Git-аккаунтов этого компьютера туда не передаются.
- Публиковать репозитории и открывать merge request можно только в GitHub и GitLab.
- Push, fetch и pull идут на ваш git-хостинг. Токен аккаунта уходит только на хост этого аккаунта.
Что дальше
Обновлено · Нашли неточность? Напишите на support@devmachine.ai или в Telegram.
