Forks
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
I fork del repository Git sono utili quando gli utenti vogliono apportare modifiche sperimentali, rischiose o nascoste a una codebase, ma queste modifiche devono essere isolate dalla codebase nel repository originale. Un nuovo fork è fondamentalmente un nuovo repository remoto che condivide il codice sorgente del repository originale.
Come versione indipendente, le modifiche apportate al fork, ad esempio l'aggiunta di commit o rami, sono nascoste al repository originale. Se si desidera unire le modifiche della codebase nel repository originale, è necessario creare una richiesta pull per richiedere la revisione e l'approvazione di tali modifiche.
Il processo di fork non trasferisce autorizzazioni, criteri o pipeline di compilazione dal repository originale al fork.
Questo articolo illustra l'uso dei fork nei repository Git di Azure Repos e fornisce collegamenti a contenuto GitHub che illustra come gestire i fork nei repository GitHub.
In questo articolo viene spiegato come:
- Condividere il codice tra fork
- Scegliere tra rami e fork
- Abilitare i fork del repository
- Creare un fork
- Clonare il fork in locale
- Eseguire il push delle modifiche locali nel fork
- Creare e completare una richiesta pull
- Sincronizzare il fork
Prerequisiti per l'accesso a Azure Repos
I repository devono essere abilitati nelle impostazioni del progetto Azure DevOps. Se l'hub Repos e le pagine associate non vengono visualizzate, vedere Attivare o disattivare un servizio Azure DevOps per riabilitare Repos.
Per visualizzare il codice nei progetti privati, è necessario essere membri di un progetto Azure DevOps con livello di accesso Basic o superiore. Per i progetti pubblici, tutti possono visualizzare il codice.
Se non si ha un progetto, crearne uno o iscriverti gratuitamente.
Se non si è membri del progetto, viene aggiunto.
Per clonare o contribuire al codice per un progetto privato, è necessario essere membri del gruppo di sicurezza Collaboratori o disporre del set di autorizzazioni corrispondente. Per i progetti pubblici, chiunque può clonare e contribuire al codice. Per altre informazioni, vedere Che cos'è un progetto pubblico?
Nota
Per i progetti pubblici, gli utenti a cui è concesso l'accesso degli stakeholder hanno accesso completo ad Azure Repos.
I repository devono essere abilitati nelle impostazioni del progetto Azure DevOps. Se l'hub Repos e le pagine associate non vengono visualizzate, vedere Attivare o disattivare un servizio Azure DevOps per riabilitare Repos.
Per visualizzare il codice, è necessario essere membri del progetto Azure DevOps con accesso Basic o versione successiva. Se non si è membri del progetto, viene aggiunto.
Per clonare o contribuire al codice, è necessario essere membri del gruppo di sicurezza Collaboratori o disporre delle autorizzazioni corrispondenti nel progetto da modificare.
Condividere il codice tra fork
Il repository originale viene spesso definito repository upstream . È possibile creare richieste pull per unire le modifiche in entrambe le direzioni: da fork a upstream o upstream a fork. La direzione più comune è da fork a upstream. Le autorizzazioni, i criteri, le compilazioni e gli elementi di lavoro del repository di destinazione verranno applicati alla richiesta pull.
Scegliere tra rami e fork
Per un piccolo team di sviluppatori da 2 a 5, un flusso di lavoro di fork potrebbe non essere necessario perché tutti possono lavorare nei rami delle funzionalità e nei criteri dei rami possono proteggere il ramo predefinito. Tuttavia, se il team espande e espande questa disposizione, può passare a un flusso di lavoro di fork.
Se il repository ha un numero elevato di commit casuali o poco frequenti, ad esempio un progetto open source, è consigliabile usare il flusso di lavoro di creazione di fork. In genere, solo i collaboratori principali del progetto devono avere diritti di commit diretti per il repository originale. Altri collaboratori devono usare un flusso di lavoro di fork per isolare le modifiche proposte fino a quando i collaboratori principali non hanno la possibilità di esaminare il proprio lavoro.
Abilitare i fork del repository
Per abilitare i fork per un repository Git di Azure Repos, vedere Abilitare i fork.
Per abilitare i fork per un repository GitHub, vedere Gestione dei criteri di fork per l'organizzazione.
Flusso di lavoro di fork
Il flusso di lavoro di fork è costituito da cinque passaggi descritti nelle sezioni seguenti.
- Creare un fork
- Clonare il fork in locale
- Eseguire il push delle modifiche locali nel fork
- Creare e completare una richiesta pull
- Sincronizzare il fork
Creare un fork
I passaggi seguenti descrivono come creare una copia tramite fork di un repository Git di Azure Repos.
Nota
Per creare una copia tramite fork di un repository in un progetto Azure DevOps, è necessario disporre dell'autorizzazione Crea repository per tale progetto. I proprietari del repository devono prendere in considerazione la creazione di un progetto dedicato per i fork e l'assegnazione dell'autorizzazione Crea repository a tutti i collaboratori. Per altre informazioni sull'impostazione delle autorizzazioni, vedere Impostare le autorizzazioni del repository Git.
Dal Web browser passare al repository Git Azure Repos che si vuole creare tramite fork. Selezionare File di repository > e quindi scegliere Fork dal menu con i puntini di sospensione per aprire la finestra di dialogo Fork.
Nella finestra di dialogo Fork denominare il repository con fork, scegliere il progetto in cui si vuole creare il fork, selezionare i rami da includere nel fork e quindi scegliere Fork. È possibile specificare se il fork conterrà tutti i rami o solo il ramo predefinito. Se il repository contiene diversi rami di argomento, prendere in considerazione solo l'inclusione del ramo predefinito nel fork.
Per informazioni su come creare una copia tramite fork di un repository GitHub, vedere Creare una copia tramite fork di un repository.
Clonare il fork in locale
Dopo aver creato una copia tramite fork di un repository, clonare il fork per creare una copia locale in una cartella nel computer. È possibile clonare dalla riga di comando o usando un IDE come Visual Studio. Per altre informazioni sulla clonazione di un repository, vedere Clonare un repository Git esistente.
Quando si clona un repository remoto, Git assegna l'alias origin
come abbreviato per l'URL del repository remoto clonato. Per praticità, aggiungere un altro alias denominato upstream
per il repository da cui è stato eseguito il fork, denominato repository upstream. I passaggi seguenti descrivono come aggiungere un upstream
alias.
Suggerimento
Per praticità, è possibile usare gli origin
alias e upstream
anziché gli URL corrispondenti nei comandi Git.
Per aggiungere un upstream
alias in Visual Studio, seguire questa procedura:
Scegliere Opzioni strumenti > dalla barra dei menu per aprire la finestra Opzioni. Selezionare Controllo del codice > sorgente Impostazioni > repository Git Remotes e quindi scegliere Aggiungi per aprire la finestra di dialogo Aggiungi remoto .
Nella finestra di dialogo Aggiungi remoto aggiungere un nuovo remoto denominato
upstream
e immettere l'URL clone Git del repository copiato tramite fork. Scegliere quindi Salva.
Eseguire il push delle modifiche locali nel fork
Quando si crea una copia tramite fork, si crea una versione personale del repository originale (il repository originale viene definito "upstream"). Il fork è indipendente dall'upstream, ma il fork condivide il codice e mantiene un collegamento all'upstream, consentendo una sincronizzazione futura. Quindi, non c'è nulla che impedisca di lavorare direttamente nel main
ramo del clone locale e quindi di eseguire il push del lavoro nel main
ramo del fork. Tuttavia, in genere è preferibile usare rami di funzionalità per il lavoro. Usando i rami di funzionalità:
È possibile gestire più flussi di lavoro indipendenti contemporaneamente.
È più semplice per gli altri comprendere il lavoro condiviso perché tale lavoro è organizzato in flussi di lavoro distinti per ramo.
Un flusso di lavoro Git tipico include questi passaggi:
Creare una funzionalità locale o un ramo di correzione di bug.
Apportare modifiche nel nuovo ramo ed eseguire il commit del lavoro. In genere, le persone effettuano più commit quando si lavora su una funzionalità o una correzione di bug.
Eseguire il push della funzionalità o del ramo di correzione di bug nel fork. Il fork ha l'alias
origin
.
Per informazioni su come eseguire il push delle modifiche, vedere Condividere il codice con il push.
Creare e completare una richiesta pull
In Azure Repos, per eseguire il merge nel repository originale le modifiche di cui è stato eseguito il push nel fork, è possibile:
Creare una richiesta pull per richiedere la revisione e l'approvazione delle modifiche. Quando si apre una richiesta pull, impostare il ramo di origine della richiesta pull sulla funzionalità o sul ramo di correzione di bug nel fork. Il ramo di destinazione della richiesta pull è in genere il
main
ramo del repository creato tramite fork. Tale repository viene definito repository upstream e ha l'aliasupstream
.Lo screenshot seguente mostra il repository di origine e il ramo e il repository di destinazione e il ramo di una richiesta pull creata in Azure Repos.
Per altre informazioni su come creare una richiesta pull usando il browser, Visual Studio o l'interfaccia della riga di comando di Azure DevOps, vedere Creare una richiesta pull.
Importante
Chiunque disponga dell'autorizzazione di lettura per il repository upstream può aprire una richiesta pull. Se il repository upstream ha una pipeline di compilazione pull configurata per l'esecuzione nella creazione della richiesta pull, verrà eseguita una compilazione sulle modifiche introdotte dalla richiesta pull.
Per il completamento della richiesta pull, tutti i revisori necessari devono approvare le modifiche della richiesta pull e tutti i criteri dei rami di destinazione devono essere soddisfatti. Al termine dell'approvazione e del completamento della richiesta pull, le modifiche nel ramo di origine della richiesta pull verranno unite nel ramo di destinazione della richiesta pull.
Per informazioni su come creare e completare una richiesta pull di GitHub, vedere Creazione di una richiesta pull e Unione di una richiesta pull.
Sincronizzare il fork
Dopo che una richiesta pull unisce le modifiche dal fork nel ramo di destinazione del repository upstream, è possibile eseguire il pull dal ramo di destinazione del repository upstream per aggiornare il ramo locale corrispondente con le modifiche apportate da altri collaboratori. Quindi si è pronti per:
Creare una nuova funzionalità o un ramo di correzione di bug dal ramo locale aggiornato.
Aggiornare il fork eseguendo il push dal ramo locale aggiornato a
origin
.
In genere, il ramo di destinazione del repository upstream è main
. Se non si modifica direttamente il ramo locale main
(si lavora in rami di funzionalità), il pull dal ramo upstream/main
upstream aggiornerà il ramo locale main
senza conflitti di merge.