> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub

> Lavora con Devin direttamente nei tuoi repo

<div id="why-integrate-devin-with-github">
  ## Perché integrare Devin con GitHub?
</div>

Integrare Devin con la tua organizzazione GitHub consente a Devin di creare pull request (PR), rispondere ai commenti sulle PR e collaborare direttamente all'interno dei tuoi repository. In questo modo Devin può essere un vero collaboratore del tuo team di engineering.

Per iniziare, vai su [app.devin.ai](http://app.devin.ai) > **Settings** > **Integrations** > **GitHub**, fai clic su **Add Connection** e segui le istruzioni. Potrai selezionare a quali repository Devin può accedere e rivedere le autorizzazioni richieste.

<Note>
  **Stai usando GitHub Enterprise Server o GitHub Enterprise Cloud con Data Residency?** Consulta la [guida all'integrazione di GitHub Enterprise Server](/it/enterprise/integrations/github-enterprise-server) per le istruzioni di configurazione.
</Note>

<div id="setting-up-the-integration">
  ## Configurare l'integrazione
</div>

<Tip>Devi essere un amministratore della tua organizzazione GitHub per creare e gestire l'integrazione con Devin. Riscontri problemi? Consulta la sezione [Problemi comuni](/it/admin/common-issues#i-m-unable-to-connect-my-github-organization).</Tip>

1. Nel tuo account Devin su [app.devin.ai](http://app.devin.ai), vai su **Settings** > **Integrations** > **GitHub** e fai clic su **Add Connection**.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/Add-GitHub-Connection.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=c7f5f670bcf2216e6883b99fbb267f49" alt="Devin" width="1264" height="1474" data-path="images/integrations/Add-GitHub-Connection.png" />
</Frame>

2. Se non hai già effettuato l'accesso a GitHub, ti verrà richiesto di autenticarti.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/GitHub-Authenticate.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=22f091a1ffec12d41b28b7ac2e955a77" alt="Devin" width="1004" height="1380" data-path="images/integrations/GitHub-Authenticate.png" />
</Frame>

3. Seleziona l'organizzazione GitHub che vuoi collegare a Devin.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/GitHub-Select-Organization.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=84eb317b909b6a1a4ab70742563a1eec" alt="Devin" width="1296" height="726" data-path="images/integrations/GitHub-Select-Organization.png" />
</Frame>

4. Scegli se concedere a Devin l'accesso a **All repositories** oppure a **Select repositories** per controllare a quali repository può accedere.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/GitHub-Grant-Repository-Permissions.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=26c759c0d5fa426677ab3fa765a49952" alt="Devin" width="1004" height="652" data-path="images/integrations/GitHub-Grant-Repository-Permissions.png" />
</Frame>

5. Dopo aver completato l'autorizzazione su GitHub, verrai reindirizzato alle impostazioni di Devin, dove potrai confermare che l'integrazione è attiva.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/GitHub-Connected.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=0381c62ef505b76d57ec7924614e45b6" alt="Devin" width="1212" height="326" data-path="images/integrations/GitHub-Connected.png" />
</Frame>

<Tip>Ti consigliamo di abilitare le regole di protezione del branch sul tuo branch principale per assicurarti che tutti i controlli richiesti vengano superati prima che Devin possa effettuare il merge delle modifiche.</Tip>

<div id="using-devin-with-the-github-integration">
  ## Utilizzare Devin con l'integrazione GitHub
</div>

<div id="for-core-and-teams-users">
  ### Per gli utenti Core e Teams
</div>

Una volta configurata l'integrazione, puoi menzionare i repository preceduti da @ direttamente nei tuoi prompt all'interno dell'applicazione web di Devin.

<div id="for-enterprise-users">
  ### Per utenti Enterprise
</div>

Una volta configurata l'integrazione, puoi delegare i repository a specifiche organizzazioni dalla sezione **Enterprise Settings** > **Repository Permissions**.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/Mjnq1XQhhDt7kgxn/images/enterprise/Enterprise-Add-Repositories.png?fit=max&auto=format&n=Mjnq1XQhhDt7kgxn&q=85&s=40569aced6bfea47b72b31a39865b89f" alt="Devin" width="2360" height="1322" data-path="images/enterprise/Enterprise-Add-Repositories.png" />
</Frame>

<Tip>
  Se lavori con un repository per la prima volta, ti consigliamo di completare la [configurazione dell'ambiente di sviluppo nel flusso di onboarding](/it/onboard-devin/environment) per garantire che Devin disponga di informazioni accurate,
  e aggiornate sulla tua codebase. Devin risponde automaticamente ai commenti sulle pull request (PR) finché la sessione non viene archiviata.
</Tip>

<div id="managing-devins-permissions-in-github">
  ## Gestione delle autorizzazioni di Devin in GitHub
</div>

Durante la configurazione, puoi concedere a Devin l'accesso a **tutti i repository** della tua organizzazione oppure limitare l'accesso a **repository specifici**.

Puoi modificare in qualsiasi momento l'accesso ai repository dalle impostazioni di GitHub:

1. Vai alle **Settings** della tua organizzazione GitHub > **GitHub Apps** (ad es. `https://github.com/organizations/<org_name>/settings/installations`)
2. Seleziona **Configure** per l'integrazione Devin.ai
3. In **Repository access**, scegli se concedere l'accesso a tutti i repository oppure seleziona repository specifici
4. Fai clic su **Save** per applicare le modifiche

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/c6DxxPyY6b7QnGkw/images/integrations/GitHub-Manage-Devin-Permissions.png?fit=max&auto=format&n=c6DxxPyY6b7QnGkw&q=85&s=f926780257bb9628e26d634f4a15c18c" alt="Devin" width="1984" height="1542" data-path="images/integrations/GitHub-Manage-Devin-Permissions.png" />
</Frame>

Devin richiede le seguenti autorizzazioni:

Accesso in **lettura** a:

| Permission                       | Description                                                                                                                  |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `dependabot alerts`              | Consente a Devin di risolvere gli avvisi di Dependabot per tuo conto (ad es. aggiornando le versioni delle dipendenze)       |
| `actions`                        | Consente a Devin di visualizzare le Actions configurate per un repository per capire se le modifiche di Devin superano la CI |
| `deployments`                    | Consente a Devin di vedere quali versioni di un repository sono state distribuite                                            |
| `metadata`                       | Consente a Devin di visualizzare metadati fondamentali su un repository, come chi ne è il proprietario                       |
| `packages`                       | Consente a Devin di vedere quali versioni di un repository sono state rilasciate come package                                |
| `pages`                          | Consente a Devin di consultare le pagine associate a un repository, ad esempio per visualizzare la documentazione            |
| `repository security advisories` | Consente a Devin di visualizzare gli avvisi di sicurezza relativi a un repo per aiutare a risolvere i problemi di sicurezza  |
| `members`                        | Consente a Devin di visualizzare i membri di un'organizzazione                                                               |
| `webhooks`                       | Consente a Devin di visualizzare i webhook configurati per un repository, ad esempio linting e type checking                 |

Accesso in **lettura** e **scrittura** a:

| Permission        | Description                                                                                                                                          |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| `checks`          | Consente a Devin di visualizzare e riportare i risultati dei check per un repository per capire e comunicare se le modifiche di Devin superano la CI |
| `commit statuses` | Consente a Devin di visualizzare e impostare gli stati dei commit per indicare se un commit supera la CI                                             |
| `contents`        | Consente a Devin di contribuire alla codebase                                                                                                        |
| `discussions`     | Consente a Devin di contribuire alle discussioni                                                                                                     |
| `issues`          | Consente a Devin di aprire nuove issue                                                                                                               |
| `pull requests`   | Consente a Devin di creare nuove pull request                                                                                                        |
| `projects`        | Consente a Devin di visualizzare e gestire i progetti associati a un repository, ad esempio per recuperare informazioni su un'attività               |
| `workflows`       | Consente a Devin di impostare nuovi workflow, ad esempio per aiutare a configurare la CI/CD                                                          |

Queste autorizzazioni consentono a Devin di lavorare nei tuoi repository come un normale collaboratore, eseguendo il push dei branch, aprendo pull request e partecipando alle discussioni nelle pull request.

<div id="pull-request-templates">
  ## Template per le pull request
</div>

Quando Devin crea una pull request, utilizza un template presente nel tuo repository per strutturare la descrizione della PR. Se fornisci un template, Devin ne segue il formato quando invia le PR su GitHub.

<div id="devin-specific-template-recommended">
  ### Template specifico per Devin (consigliato)
</div>

Puoi fornire a Devin un template dedicato senza modificare il tuo template predefinito per gli utenti umani, aggiungendo un file chiamato `devin_pr_template.md` in una delle posizioni supportate di `PULL_REQUEST_TEMPLATE` indicate di seguito. Questo è utile se vuoi che Devin includa contesto aggiuntivo, ad esempio una checklist per i revisori o un diagramma Mermaid dei file modificati.

<div id="template-search-order">
  ### Ordine di ricerca dei template
</div>

Devin cerca i template nel seguente ordine e utilizza il primo che trova:

1. PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
2. docs/PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
3. .github/PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
4. pull\_request\_template.md
5. docs/pull\_request\_template.md
6. .github/pull\_request\_template.md

Se non viene trovato alcun template, Devin utilizza il suo formato predefinito per la descrizione delle PR.

<Tip>Se vuoi che Devin utilizzi il tuo `pull_request_template.md` esistente, copialo (o crea un symlink) in uno dei percorsi `devin_pr_template.md` elencati sopra.</Tip>

<Info>Per ulteriori informazioni sui template di pull request di GitHub (posizioni supportate, template multipli, parametri di query, ecc.), consulta la documentazione di GitHub: <a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository" target="_blank" rel="noopener noreferrer">Creating a pull request template for your repository</a>.</Info>

<div id="commit-signing">
  ### Firma dei commit
</div>

Per firmare i commit di Devin con GPG, configura la chiave nel tuo [ambiente](/it/onboard-devin/environment/blueprints) in modo che venga mantenuta tra una sessione e l'altra. Generare la chiave nel terminale di una sessione non funzionerà — ogni sessione di Devin viene avviata da una nuova copia dell'immagine della macchina, quindi tutte le chiavi create durante la sessione vengono eliminate alla fine della sessione.

<Warning>
  La firma GPG tramite configurazione dell'ambiente produce commit **Verified**
  solo quando Devin è l'*autore del commit*. GitHub verifica le firme in base
  all'identità dell'autore, ma in qualsiasi modalità di **Commit authoring** in
  cui l'autore è l'utente che ha effettuato la richiesta (ad es.,
  "Co-authored", "User only", "User as author, Devin as committer"), Devin
  sovrascrive `user.email` in ogni sessione con l'email del singolo utente, che
  non corrisponderà a un'unica chiave GPG condivisa. Imposta la modalità [Commit
  authoring](https://app.devin.ai/settings/profile) della tua org su **"Devin
  only"** o **"Devin as author, user as committer"** prima di fare affidamento
  su questa configurazione.
</Warning>

Configura questa impostazione a livello **org-wide** (oppure a livello **enterprise**, se serve a tutte le tue orgs) in modo che ogni repo riceva una configurazione per la firma dei commit:

1. Crea (o scegli) un account utente GitHub dedicato che possiederà sia l'identità dell'autore del commit *sia* le credenziali con cui Devin esegue il push, ad es. `devin@company.com`. Usare un unico account per entrambe le funzioni semplifica la configurazione della firma; usarne due significa dividere tra entrambi la configurazione descritta di seguito.
2. Genera localmente una chiave GPG usando come UID l'email di quell'account, seguendo le [istruzioni di GitHub](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key).
3. Carica la chiave **pubblica** nell'account GitHub la cui email verificata corrisponde all'UID GPG, in [GitHub Settings > SSH and GPG keys](https://github.com/settings/keys). GitHub verifica le firme in base all'identità dell'*autore del commit*, non a quella usata per eseguire il push — la chiave pubblica deve trovarsi nell'account che possiede l'email in `user.email`. (Se coincide con lo stesso account dedicato da cui esegui il push, devi farlo solo una volta.)
4. Esporta la chiave **privata**, codificala in base64 e aggiungila (insieme ai corrispondenti `GIT_USER_NAME` / `GIT_USER_EMAIL`) come secret in [Settings > Secrets](https://app.devin.ai/settings/secrets).
5. Nella tua [configurazione dell'ambiente org-wide](https://app.devin.ai/settings/environment), importa la chiave e abilita la firma all'avvio di ogni sessione. Per il file YAML completo, consulta l'[esempio di firma dei commit GPG](/it/onboard-devin/environment/templates#gpg-commit-signing) da copiare e incollare.

<Tip>
  L'email del committer (`user.email`) deve corrispondere a un UID della chiave
  GPG e la stessa email deve essere verificata nell'account GitHub in cui hai
  caricato la chiave pubblica. Se anche solo uno di questi tre elementi non
  corrisponde, GitHub mostrerà il commit come **Unverified** anche se la firma
  in sé è valida.
</Tip>

<div id="security-considerations">
  ### Considerazioni sulla sicurezza
</div>

* **Protezione del branch:** Consigliamo di abilitare le regole di protezione del branch sul branch principale per garantire che tutti i controlli richiesti vengano superati prima che Devin possa eseguire il merge delle modifiche.
* **Autorizzazioni a livello di organizzazione:** Devin utilizza le autorizzazioni concesse a livello di organizzazione, non le autorizzazioni del singolo utente che esegue la sessione.
* **Accesso uniforme:** Tutti gli utenti con accesso sia all'organizzazione GitHub che all'organizzazione Devin condividono le stesse autorizzazioni di integrazione Devin.
* **Creazione di repository:** Devin non può creare nuovi repository nel tuo account GitHub.

<div id="ip-allowlisting">
  ## Allowlist degli indirizzi IP
</div>

Se la tua organizzazione richiede un'allowlist di indirizzi IP per l'accesso a GitHub, aggiungi i seguenti indirizzi IP:

* 100.20.50.251
* 44.238.19.62
* 52.10.84.81
* 52.183.72.253
* 20.172.46.235
* 52.159.232.99
* 4.204.199.103
* 54.201.200.193
* 54.69.238.189
* 100.23.34.160

<Note>Questi indirizzi IP potrebbero cambiare in aggiornamenti futuri. Ti consigliamo di monitorare le nostre note di rilascio per eventuali modifiche.</Note>

<div id="troubleshooting-github-organization-connected-to-the-wrong-devin-organization">
  ## Risoluzione dei problemi: organizzazione GitHub collegata all'organizzazione Devin errata
</div>

Se la tua organizzazione GitHub è già collegata a un'organizzazione Devin a cui non hai accesso, un amministratore dell'org GitHub può rimuovere l'installazione esistente e reinstallarla in un'altra organizzazione Devin.

<Warning>Consigliamo di verificare con il proprietario dell'organizzazione Devin attuale prima di rimuovere l'installazione.</Warning>

1. Vai a [github.com/settings/installations](https://github.com/settings/installations) e fai clic su **Configure** accanto a **Devin.ai Integration**.

   Se necessario, passa al contesto dell'organizzazione GitHub corretto usando il menu a discesa **Go to settings page** in alto a destra.

   <Frame>
     <img src="https://mintcdn.com/cognitionai-enterprise/Q55SWovKajVuWOnW/images/integrations/GitHub-Settings-Switch-Context.png?fit=max&auto=format&n=Q55SWovKajVuWOnW&q=85&s=2d3a5deeb2792ed3461c5e8f20261ac4" alt="Cambia contesto delle impostazioni GitHub" width="788" height="192" data-path="images/integrations/GitHub-Settings-Switch-Context.png" />
   </Frame>

2. Nella pagina di installazione, scorri fino alla sezione **Danger zone** e fai clic su **Uninstall** per rimuovere Devin.ai Integration dall'organizzazione GitHub.

   <Frame>
     <img src="https://mintcdn.com/cognitionai-enterprise/Q55SWovKajVuWOnW/images/integrations/GitHub-Uninstall-App.png?fit=max&auto=format&n=Q55SWovKajVuWOnW&q=85&s=6ed985bca3524ea7a574a95752f7cea7" alt="Disinstalla Devin.ai Integration" width="1095" height="839" data-path="images/integrations/GitHub-Uninstall-App.png" />
   </Frame>

3. Torna su [app.devin.ai](https://app.devin.ai) e aggiorna la pagina. Ora puoi reinstallare l'integrazione GitHub sotto la tua organizzazione Devin.

<div id="github-integration-faqs">
  ## Domande frequenti sull'integrazione con GitHub
</div>

<AccordionGroup>
  <Accordion title="Posso collegare il mio account GitHub personale all'account Devin della mia organizzazione?" icon="user">
    Sì, puoi collegare alla tua organizzazione Devin sia un'organizzazione GitHub sia un account GitHub personale. Tuttavia, consigliamo di collegare l'account che dispone delle autorizzazioni appropriate affinché Devin possa accedere ai repository di cui il tuo team ha bisogno.
  </Accordion>

  <Accordion title="In che modo l'app GitHub gestisce l'autenticazione degli utenti?" icon="shield-halved">
    Solo gli utenti che sono membri dell'organizzazione che ha installato l'integrazione GitHub possono usarla nelle proprie sessioni con Devin. Devin eredita l'accesso all'integrazione GitHub in base all'appartenenza dell'utente all'organizzazione.
  </Accordion>

  <Accordion title="In che modo Devin gestisce e ruota le chiavi di cifratura?" icon="binary">
    Le chiavi di crittografia sono gestite da AWS KMS e ruotate periodicamente.
  </Accordion>
</AccordionGroup>
