> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/it/base-di-conoscenza/040-git-integration.md).

# Integrazione con Git

**L'integrazione Git di Overleaf** è una [funzionalità premium](/latex/it/base-di-conoscenza/120-overleaf-premium-features.md). Le funzionalità premium di Overleaf sono disponibili per i partecipanti in [Overleaf Commons](https://www.overleaf.com/for/universities), i membri degli [abbonamenti di gruppo](https://www.overleaf.com/for/groups), e i titolari di abbonamenti individuali [abbonamenti di gruppo](https://www.overleaf.com/user/subscription/plans). L'integrazione Git è disponibile su Overleaf Cloud e Overleaf Server Pro (versione 4.0 e successive).

### Che cos'è l'integrazione Git di Overleaf?

L'integrazione Git di Overleaf ti consente di ottenere un URL Git dal tuo progetto Overleaf e di trattarlo come un repository Git remoto (repo). Puoi clonare il tuo progetto in un repository Git locale e lavorare sul progetto in locale, inviando le modifiche al progetto dal tuo computer locale e scaricando gli aggiornamenti che avvengono nell'editor online di Overleaf nel tuo repo locale.

Questo ti consente di lavorare sul tuo progetto in locale in quei momenti in cui lavorare online non è possibile, di usare un editor locale diverso a tua scelta quando lavori su un progetto Overleaf, oppure di aggiungere facilmente gli output di altri software locali al tuo progetto Overleaf.

Puoi ottenere l'URL Git e il comando di clonazione per il tuo progetto dall'opzione Git nel menu di Overleaf del tuo progetto.

![Menu progetto git.png](/files/ffe60ac28d9fedd12047c47583cd370b896ed747)

### Come autenticarsi quando si usa l'integrazione Git

Quando esegui un'operazione Git come clone, pull o push sul tuo progetto remoto Overleaf, ti verrà chiesto di autenticarti.

Per accedere al tuo progetto Overleaf da Git, devi usare l'autenticazione basata su token di Overleaf. Per istruzioni passo passo, vedi: [Autenticazione basata su token](/latex/it/base-di-conoscenza/042-git-integration-authentication-tokens.md).

### Clonare il tuo progetto come repository locale

Da [**Menu**](/latex/it/base-di-conoscenza/148-using-the-overleaf-project-menu.md) all'interno del tuo progetto, puoi selezionare Git dalle opzioni di sincronizzazione. Verrà visualizzata una finestra di dialogo che mostra il `git clone` comando da usare per creare il tuo repository locale.

![Menu progetto git.png](/files/ffe60ac28d9fedd12047c47583cd370b896ed747)

In alternativa, puoi trovare l'URL Git dall'URL del progetto (l'URL nella barra degli indirizzi del browser quando ti trovi in un progetto).

#### Overleaf Cloud

Se stai usando Overleaf Cloud e l'URL del tuo progetto Overleaf ha questo aspetto:

```
https://www.overleaf.com/project/1234567
```

allora l'URL Git da usare per clonare il progetto sarà

```
https://git.overleaf.com/1234567
```

E il comando usato per clonare il progetto in un repository Git locale sarà:

```
git clone https://git.overleaf.com/1234567
```

**Nota**: potrebbe esserti richiesto un nome utente e una password. Consulta [autenticazione tramite password dell'integrazione Git](/latex/it/base-di-conoscenza/043-git-integration-password-based-authentication.md)

#### Overleaf Server Pro (versione 4.0 o successiva)

**Nota**: L'integrazione Git-bridge non è abilitata per impostazione predefinita in Server Pro. Consulta la nostra [Integrazione Git](https://github.com/overleaf/overleaf/wiki/Git-Integration) guida per istruzioni su come abilitarla.

Se stai usando Overleaf Server Pro e l'URL del tuo progetto ha questo aspetto:

```
https://<SHARELATEX_SITE_URL>/project/1234567
```

Allora l'URL Git usato quando si clona il progetto sarà:

```
https://git@<SHARELATEX_SITE_URL>/git/1234567
```

E il comando usato per clonare il progetto in un repository Git locale usando la riga di comando Git sarà:

```
git clone git@<SHARELATEX_SITE_URL>/git/1234567
```

**Nota**: potrebbe esserti richiesta una password. Consulta: [token di autenticazione dell'integrazione Git](/latex/it/base-di-conoscenza/042-git-integration-authentication-tokens.md)

### Creare un progetto Overleaf da un repository Git esistente

Se hai un repository esistente, puoi aggiungere un progetto Overleaf come repository remoto. Ci sono alcuni comandi qui sotto che dovrai eseguire per iniziare. Nota che Overleaf supporta solo una cronologia lineare per ogni progetto. L'integrazione Git impone questa limitazione limitando a uno il numero di branch. Quel branch unico è attualmente codificato in modo fisso come `master`.

1. Per prima cosa, assumiamo che tu abbia un repository git sul tuo computer in una cartella chiamata `my-paper`. (Potrebbe anche essere ospitato su GitHub, GitLab o Bitbucket, ecc., ma devi averne anche una copia clonata in locale.)
2. Crea [un nuovo progetto](/latex/it/base-di-conoscenza/031-creating-a-document-in-overleaf.md) su Overleaf. Poiché qualsiasi contenuto nel progetto verrà sovrascritto, usa l'opzione di progetto 'Blank' quando crei questo progetto ed elimina il `main.tex` file in Overleaf.
3. Trova l'URL Git per il progetto (vedi [sopra](#cloning-your-project-as-a-local-repository)).

   ![Git-bridge-url.png](/files/0a54cfbb390643d59396d56f32f094b2ecf0ed6a)
4. Aggiungi l'URL Git del progetto come remoto nel tuo progetto locale.

   ```
   $ cd my-paper
   $ git remote add overleaf <GIT-URL>
   ```

   (Assicurati di usare il tuo link, non quello di esempio.)
5. Scarica il contenuto più recente dal progetto Overleaf e uniscilo al tuo branch master.

   ```
   $ git checkout master
   $ git pull overleaf master --allow-unrelated-histories --rebase=false
   ```
6. Invia il tuo progetto a Overleaf.

   ```
   $ git push overleaf master --set-upstream
   ```

   Se vuoi usare un nome di branch diverso in locale, ad es. `my-branch`, puoi inviare le modifiche con un alias:

   ```
   $ git push overleaf my-branch:master
   ```
7. Visita il progetto su Overleaf. Le tue modifiche dovrebbero essere presenti. (Potresti dover aprire il menu del progetto Overleaf per trovare quale file è stato impostato come file del documento principale e, eventualmente, cambiare questa selezione iniziale.)

### Commit Git e l'integrazione Git di Overleaf

Overleaf ha un sistema interno di [cronologia](/latex/it/altri-argomenti/49-using-the-history-feature.md) che consente la collaborazione simultanea all'interno di un progetto Overleaf. Non è la stessa cosa di Git, quindi l'integrazione Git di Overleaf è essenzialmente una traduzione del meccanismo di cronologia e versionamento di Overleaf in Git. Questo consente molti casi d'uso abilitati da Git, ma non ti permette di lavorare in Overleaf come se fosse un'implementazione Git completa.

#### Quando vengono creati i commit?

Quando esegui un `pull` o `fetch` comando, se non esiste alcun commit per lo stato attuale del progetto, viene creato dinamicamente un nuovo commit. Quando `push` i file dal tuo repository locale al remote di Overleaf, anche in quel momento viene creato un commit, che sarà visibile in eventuali future clonazioni che farai del progetto Overleaf. Quando tu o altri state modificando in Overleaf, i commit non verranno generati automaticamente finché non sarà necessario.

#### Forzare i commit

Se desideri forzare la creazione di un commit in un particolare punto della cronologia di Overleaf, puoi farlo [assegnando un'etichetta a una versione](/latex/it/altri-argomenti/49-using-the-history-feature.md) nella cronologia di Overleaf. La versione etichettata otterrà un proprio hash di commit anche se non esegui subito un git pull. Un commit verrà creato da un'etichetta solo se non ci sono stati altri commit più recenti del punto della cronologia di Overleaf che viene etichettato.

#### Tracciamento della paternità

La natura just-in-time dei commit dell'integrazione Git di Overleaf significa che, se ci sono state più modifiche sul lato Overleaf prima che venga generato un commit, l'autore della modifica più recente sarà indicato come autore del commit.

Quando lavori con coautori, è utile creare un'etichetta (generando un commit) dopo che ogni collaboratore ha completato un aggiornamento significativo: questo crea una sequenza di commit visibile in Git che riflette nel modo più fedele le modifiche che avvengono in Overleaf.

### Sincronizzazione con un altro remoto

L'integrazione Git di Overleaf consente al tuo progetto Overleaf di agire come repository remoto per repository locali. Tuttavia, potresti voler sincronizzare il tuo progetto Overleaf con un altro remoto, ospitato su GitHub, GitLab o un altro servizio di hosting Git.

Se stai sincronizzando il tuo progetto con un repository ospitato su GitHub (<https://github.com/>), potresti voler usare il diretto di Overleaf [sincronizzazione con GitHub](/latex/it/base-di-conoscenza/044-github-synchronization.md) funzionalità.

Se stai sincronizzando il tuo progetto con GitLab, GitHub Enterprise o un altro host, puoi usare l'integrazione Git di Overleaf per configurare un repository locale intermedio.

Seguendo le istruzioni sopra per [clonare il tuo progetto](#cloning-your-project-as-a-local-repository) o [collegare un progetto a un repository esistente](#creating-an-overleaf-project-from-an-existing-git-repository), avrai un repository locale che può inviare/ricevere modifiche da Overleaf. Potrai quindi aggiungere a questo repository un secondo remote che punti al tuo repository ospitato. Il tuo repository locale dovrà avere due remote, in modo da puntare sia al tuo host Git sia al progetto Overleaf.

Anche se non ci sarà una connessione diretta tra il progetto Overleaf e il tuo repository Git, questo ti permetterà di mantenerli sincronizzati.

![Git other remote.png](/files/b4e4165b384ec8e1c73738dbc9ab5215a1b22a62)

### Aggiungere un progetto Overleaf come sottomodulo Git

Ogni progetto su Overleaf agisce come un repository Git indipendente, ma se vuoi organizzare diversi di questi progetti in un unico repo Git, puoi aggiungere il repo di ogni progetto come sottomodulo Git nel modo consueto. Potrai quindi eseguire push e pull su ciascun repository sottomodulo da/verso Overleaf individualmente e continuare ad averli raccolti insieme come sottomoduli in un progetto più grande.

**Nota:** Sebbene i progetti Overleaf possano essere sottomoduli all'interno di un altro repository, i progetti Overleaf stessi non possono contenere altri sottomoduli.

### Limitazioni note

**Branch**: Il sistema Git di Overleaf non supporta il branching.

**Link simbolici**: Il sistema Git di Overleaf non gestisce bene i link simbolici. Un link simbolico può essere inviato a un progetto Overleaf, ma verrà convertito in un file normale e sovrascriverà il link simbolico locale la prossima volta che il progetto verrà scaricato.

**Tag**: Il sistema Git di Overleaf non supporta i tag.

**Permessi dei file**: Il sistema Git di Overleaf non preserva i permessi di esecuzione. Per aggirare il problema, puoi eseguire `git config core.fileMode false` nella tua copia locale del repository. Poi potrai reimpostare i permessi di esecuzione su tutti i file interessati. In questo modo non verranno modificati di nuovo con le operazioni Git successive.

**Git LFS:** I progetti Overleaf non supportano Git Large File Storage.

**Sottomoduli Git:** I progetti Overleaf possono agire come sottomoduli Git all'interno di altri repository, ma non possono contenere altri sottomoduli Git. Per fare riferimento a file di altri progetti, si suggerisce di usare la [funzionalità di aggiunta da un altro progetto](/latex/it/base-di-conoscenza/009-can-i-share-files-e.g.-.bib-and-some-graphics-across-my-projects.md).

**Rinominare le cartelle**: Se un utente rinomina una cartella e invia la modifica a Overleaf, il progetto conserverà una cartella vuota con il vecchio nome, oltre alla nuova cartella. (Ad esempio, rinominare images/ in img/ lascerà due cartelle nel progetto: img/ contenente i file immagine e images/, che sarà vuota. Questo può causare problemi quando un utente rinomina una cartella e crea un nuovo file con lo stesso nome della vecchia cartella, in un unico commit. Il sistema Git di Overleaf rifiuterà questo commit. In questo caso consigliamo di dividere il commit in due parti e di eliminare la cartella rimanente.

**Rinominare i file e spostare i file:** Una ridenominazione di file nel tuo repository locale diventa un'eliminazione e una creazione sul lato Overleaf. Questo può comportare la perdita dei metadati associati a un file sul lato Overleaf, causando l'eliminazione delle modifiche tracciate e dei commenti. Non è consigliato spostare o rinominare file sul lato Git che hanno modifiche tracciate o commenti di Overleaf.

**Revisioni tracciate e commenti**: Purtroppo, i push da Git a Overleaf possono comportare la perdita o lo spostamento delle revisioni tracciate e dei commenti; di conseguenza, non consigliamo di mescolare l'uso attivo di Git con l'uso delle revisioni tracciate e/o dei commenti.

### Risoluzione dei problemi

#### Errori repository non trovato

Se visualizzi un errore Repository not found, è probabile che venga usato l'URL sbagliato. L'URL corretto può essere trovato facendo clic sull'opzione Git nel menu all'interno del progetto. Per Overleaf cloud, l'integrazione Git è una funzionalità premium, quindi sarà disponibile solo se il proprietario del progetto ha un abbonamento a pagamento a Overleaf o se gli è stato concesso l'accesso alla funzionalità (ad esempio partecipando a un beta test anticipato).

#### Errori di autenticazione fallita

Consulta le istruzioni per la risoluzione dei problemi per [token di autenticazione dell'integrazione Git](/latex/it/base-di-conoscenza/042-git-integration-authentication-tokens.md) o [autenticazione tramite password dell'integrazione Git](/latex/it/base-di-conoscenza/043-git-integration-password-based-authentication.md) a seconda del metodo di accesso che stai usando.

#### Limiti di frequenza

In generale, il rate limiting di Git Bridge non si verifica quando le operazioni Git vengono eseguite manualmente. Alcuni client Git possono essere configurati per tentare di interrogare automaticamente i remoti alla ricerca di modifiche, il che in alcuni casi può portare a errori di limitazione della frequenza. In generale, disattivare qualsiasi polling automatico o ridurre la frequenza delle operazioni Git dovrebbe risolvere questi problemi.

#### Impossibile inviare riferimenti

Il mancato invio di alcuni riferimenti al progetto remoto può essere causato da [il superamento delle limitazioni di dimensione o numero di file di un progetto](/latex/it/base-di-conoscenza/119-overleaf-plan-limits.md) oppure dall'inclusione di tipi di file non supportati (ad esempio link simbolici o LFS). Consulta le limitazioni note elencate sopra per identificare eventuali file problematici nel commit.

In alcuni casi, aumentare l'impostazione **postBuffer** può risolvere i fallimenti nell'invio dei riferimenti dal tuo repository locale al progetto Overleaf.

Per prima cosa, puoi controllare l'impostazione attuale con il comando:

```
     git config http.postBuffer
```

Se non c'è alcun output, significa che viene usato il valore predefinito di 1 MB.

Poi prova il comando

```
     git config --global http.postBuffer 10485760
```

che imposterà invece il valore a 10 MB.

Ora puoi provare a inviare il commit (al progetto originale o a quello nuovo). Se non funziona, puoi tornare all'impostazione precedente oppure rimuovere l'impostazione con:

```
     git config --global --unset http.postBuffer
```

#### Timeout

I commit Git che includono un gran numero di modifiche possono potenzialmente causare timeout. Se riscontri un timeout, prova a suddividere il commit in modifiche più piccole. Se il problema persiste, considera di impostare **postBuffer** a 10 MB come descritto sopra.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/it/base-di-conoscenza/040-git-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
