Free Workflow schedule 15 min

Git dla agentów AI

Worktree, strategia branchowania i tożsamość git per agent. Jak agenci AI otwierają PR-y, pracują na izolowanych kopiach repo i mergują bez konfliktów.

Workflow FREE 8 min czytania

Git dla agentów AI: branche, PR-y i merge automatycznie

Jak dać agentom AI tożsamość w git — własne imię, email, branch. Branching strategy (master/develop/feature), skrypt do commitowania, PR workflow z GitHub CLI. Git log wygląda jak praca prawdziwego zespołu.

signal_cellular_alt Łatwy schedule 1 godzina smart_toy Zespół BinSoft

Masz agentów AI którzy piszą kod. Ale w git log wszystko wygląda tak: "Adam Kowalski — 50 commitów". Nie wiadomo co zrobił człowiek, a co AI. Nie wiadomo który agent pracował nad czym.

Rozwiązanie: każdy agent ma tożsamość w git. Własne imię, email, branch. Git log wygląda tak: "Backer zrobił endpoint, Frontik zrobił UI, Securitor sprawdził bezpieczeństwo". Jak prawdziwy zespół.

Branching strategy

schemat branchy
master ─────────────────────────── produkcja (chroniony)
  │
  └─ develop ──────────────────── integracja (chroniony)
       │
       ├─ feature/chat-backend ── agent Backer
       ├─ feature/chat-frontend ── agent Frontik
       ├─ feature/chat-tests ──── agent Testor
       └─ docs/chat ──────────── agent Doktor
BranchKto pushujeJak się dostaje do master
masterTylko Ty (approve)Merge z develop
developLider (merge PR-ów)PR do master
feature/*AgenciPR do develop
docs/*DoktorPR do develop

Otwórz terminal i utwórz branche:

terminal
# Utwórz branch develop
git checkout -b develop
git push -u origin develop

# Wróć na master
git checkout master

Tożsamość agenta w git

Każdy agent commituje pod swoim imieniem. W git log od razu widać kto co zrobił:

AgentGit authorEmail
Claude Lider🤖 Claude Lider (AI Lead)claude@twoja-firma.ai
Backer🤖 Backer (AI Agent)backer@twoja-firma.ai
Frontik🤖 Frontik (AI Agent)frontik@twoja-firma.ai
Securitor🤖 Securitor (AI Agent)securitor@twoja-firma.ai
Doktor🤖 Doktor (AI Agent)doktor@twoja-firma.ai
lightbulb Emoji + osobna domena

🤖 na początku nazwy — od razu widać w git log że to AI, nie człowiek. @firma.ai odróżnia agentów od ludzi (@firma.pl). Domena nie musi istnieć — to tylko identyfikator.

Skrypt agent-commit.sh

Zamiast za każdym razem wpisywać --author="..." — stwórz skrypt:

scripts/agent-commit.sh
#!/bin/bash
# Użycie: ./scripts/agent-commit.sh backer "feat: nowy endpoint"

get_agent_info() {
    case "${1,,}" in
        lider)     AUTHOR_NAME="🤖 Claude Lider (AI Lead)"
                   AUTHOR_EMAIL="claude@twoja-firma.ai" ;;
        backer)    AUTHOR_NAME="🤖 Backer (AI Agent)"
                   AUTHOR_EMAIL="backer@twoja-firma.ai" ;;
        frontik)   AUTHOR_NAME="🤖 Frontik (AI Agent)"
                   AUTHOR_EMAIL="frontik@twoja-firma.ai" ;;
        securitor) AUTHOR_NAME="🤖 Securitor (AI Agent)"
                   AUTHOR_EMAIL="securitor@twoja-firma.ai" ;;
        doktor)    AUTHOR_NAME="🤖 Doktor (AI Agent)"
                   AUTHOR_EMAIL="doktor@twoja-firma.ai" ;;
        *)         echo "Nieznany agent: $1"; exit 1 ;;
    esac
}

AGENT_ID="$1"; shift; COMMIT_MSG="$*"
get_agent_info "$AGENT_ID"

git commit \
  --author="${AUTHOR_NAME} <${AUTHOR_EMAIL}>" \
  -m "${COMMIT_MSG}"

echo "Commit jako ${AUTHOR_NAME}"
terminal — użycie
# Nadaj uprawnienia
chmod +x scripts/agent-commit.sh

# Commit jako Backer
git add api/endpoint.php
./scripts/agent-commit.sh backer "feat(api): nowy endpoint SSE"

# Commit jako Frontik
git add js/widget.js
./scripts/agent-commit.sh frontik "feat(chat): EventSource streaming"
warning Pułapka: macOS bash 3.x

macOS domyślnie ma starą wersję bash (3.x) gdzie declare -A (tablice asocjacyjne) nie działa. Dlatego używamy case/esac zamiast tablic — działa wszędzie.

PR workflow — od brancha do merge

terminal — pełny flow agenta
# 1. Utwórz branch
git checkout develop
git checkout -b feature/chat-backend

# 2. Napisz kod, dodaj pliki
git add api/ai-chat-stream.php

# 3. Commit jako agent
./scripts/agent-commit.sh backer "feat(chat): SSE endpoint"

# 4. Push na GitHub
git push -u origin feature/chat-backend

# 5. Utwórz PR
gh pr create \
  --base develop \
  --title "feat: SSE endpoint — Backer" \
  --body "## Zmiany
- Server-Sent Events z Claude API
- Rate limiting 30 req/min

🤖 Generated by AI Agent"
check_circle Efekt w GitLens / GitHub

Git log wygląda tak:
* merge: chat streaming (#5) Ty ├* feat: EventSource + UI 🤖 Frontik ├* feat: SSE endpoint 🤖 Backer ├* docs: dokumentacja chat 🤖 Doktor * poprzedni commit 🤖 Claude Lider

Conventional commits — format wiadomości

format commitu
<typ>(scope): krótki opis

- szczegół 1
- szczegół 2

Co-Authored-By: 🤖 Claude Lider (AI Lead) <claude@firma.ai>
TypKiedyPrzykład
featNowa funkcjafeat(chat): SSE streaming
fixNaprawa błędufix(auth): timeout sesji
docsDokumentacjadocs: aktualizacja CLAUDE.md
refactorRefaktoryzacjarefactor(api): wydzielenie klasy
secBezpieczeństwosec: CSP nonce na inline scripts
lightbulb Co-Authored-By

Dodaj Co-Authored-By: z imieniem lidera — GitHub pokaże obu autorów w PR. Widać kto koordynował, kto wykonywał.

Pułapki

warning Pułapka: dwóch agentów na jednym pliku

Zasada: 1 plik = 1 agent. Jeśli Backer i Frontik edytują ten sam plik — będzie konflikt przy merge. Podział plików w planie zadania PRZED uruchomieniem agentów.

warning Pułapka: force push

NIGDY nie pozwalaj agentom na git push --force. Dodaj do deny list w settings.json. Force push na cudzym branchu = utrata kodu.

person
Zespół BinSoft + 🤖 AI Team
BinSoft — platforma SaaS z AI w DNA • Wersja 1.0