Condividi tramite


Completare, abbandonare o ripristinare le pull request

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Dopo che tutti i revisori necessari approvano la pull request e la pull request soddisfa tutti i requisiti dei criteri di ramo, puoi integrare le modifiche nel ramo di destinazione e completare il PR. In alternativa, se si decide di non procedere con le modifiche nella richiesta pull, è possibile abbandonare la richiesta pull.

Per affrontare le modifiche dei revisori e i commenti di revisione, rispondere e risolverli, vedere Risolvere i commenti.

Prerequisiti

Categoria Requisiti
Accesso al progetto Membro di un progetto.
Autorizzazioni - Visualizzare il codice nei progetti privati: almeno livello di accesso Basic .
- Clonare o contribuire al codice nei progetti privati: membro del gruppo di sicurezza Contributors o con autorizzazioni corrispondenti nel progetto.
- Impostare le autorizzazioni per il ramo o il repository: Gestisci le autorizzazioni per il ramo o il repository.
- Modificare il ramo predefinito: Modificare le politiche le autorizzazioni per il repository.
- Importare un repository: membro del gruppo di sicurezza amministratori del progetto o autorizzazione a livello di progetto Git Crea repository impostata su Consenti. Per altre informazioni, vedere Impostare le autorizzazioni del repository Git.
Servizi Repos abilitato.
Strumenti Opzionale. Usare i comandi az repos: l'interfaccia della riga di comando di Azure DevOps.

Nota

Nei progetti pubblici, gli utenti con accesso Stakeholder hanno pieno accesso ad Azure Repos, compresa la visualizzazione, la clonazione e il contribuire al codice.

Categoria Requisiti
Accesso al progetto Membro di un progetto.
Autorizzazioni - Visualizzare il codice: almeno accesso di base.
- Clonare o contribuire al codice: membro del gruppo di sicurezza Contributor o autorizzazioni corrispondenti nel progetto.
Servizi Repos abilitato.

Per altre informazioni sulle autorizzazioni e l'accesso, vedere Repository Git predefinito e autorizzazioni di ramo e Informazioni sui livelli di accesso.

In Azure DevOps Services, è possibile gestire le richieste pull e altre risorse dall'interfaccia della riga di comando di Azure con l'estensione azure-devops. Per informazioni su come usare l'interfaccia della riga di comando di Azure DevOps Services, vedere Introduzione all'interfaccia della riga di comando di Azure DevOps. I comandi CLI di Azure Repos per le pull request usano az repos pr.

Controllare le modifiche di merge

Al termine di una richiesta pull, Git aggiunge un nuovo commit di merge alla fine del ramo principale. Questo commit di merge collega le cronologie precedenti del ramo principale e del ramo di origine della richiesta pull. Per visualizzare il commit di unione di anteprima e verificare la presenza di conflitti di unione, selezionare il menu Altre opzioni in alto a destra nella pagina Panoramica della pull request e quindi selezionare Visualizza modifiche di unione.

Se hai modificato il ramo di destinazione dopo aver creato la richiesta pull, seleziona Riavvia merge per creare un nuovo commit di merge di anteprima e aggiornare la visualizzazione delle differenze del merge.

Screenshot che mostra le opzioni Visualizza unione e Riavvia unione nel menu Altre opzioni di P R.

Esaminare le politiche dei filiali

Teams possono impostare criteri dei branch che richiedono che le pull request nei rami protetti soddisfino criteri specifici prima di poter essere unite. È possibile visualizzare le politiche del ramo in vigore per il pull request, indipendentemente dal fatto che siano necessarie per l'unione e se il pull request supera o fallisce.

La scheda Panoramica riepiloga i criteri delle branch che hanno superato o fallito per la pull request. La panoramica elenca solo le policy non riuscite, ma è possibile visualizzare tutti i controlli delle policy selezionando Visualizza <n> controlli.

Nella pagina Panoramica della pull request, i requisiti dei criteri di ramo hanno un'icona . Selezionare Altre opzioni accanto al requisito e quindi selezionare Visualizza criterio per passare alla pagina Criteri del ramo in Impostazioni di progetto.

Screenshot che mostra Visualizzare i criteri accanto a un requisito dei criteri di ramo in un R P.

Completa il Pull Request

Dopo aver risolto eventuali conflitti di merge e la pull request soddisfa tutte le politiche di ramo e ha tutte le approvazioni necessarie, è possibile completare la pull request.

  1. Seleziona Completa in alto a destra per completare il PR. In alternativa, selezionare la freccia a discesa accanto al pulsante Completa e selezionare una delle opzioni.

    Screenshot che mostra le opzioni del pulsante Completa per P R.

    • Completa: Completa la richiesta di pull ora e unisci le modifiche al ramo di destinazione.
    • Impostare il completamento automatico: configurare la richiesta pull per completare e unire una volta soddisfatti tutti i criteri di ramo necessari.
    • Contrassegna come bozza: Riporta la richiesta pull allo stato di bozza e rimuove tutti i voti.
    • Abbandona: chiudere la pull request senza unire le modifiche.
  2. Nel riquadro Completa la richiesta pull, in Tipo di unione, selezionare una delle opzioni di unione.

    Screenshot che mostra la finestra di dialogo P R completa.

    • Merge (senza avanzamento rapido): Esegui un'unione con una cronologia non lineare che mantiene tutti i commit.
    • Commit di squash: unisci con una cronologia lineare che combina tutti i commit di origine in un singolo commit nella destinazione o lo squash unisce la richiesta pull. Tenere presente che verrà creato un nuovo commit per il ramo di destinazione senza mantenere la cronologia dei commit dal ramo di origine.
    • Rebase e avanzamento veloce: ribasa i commit di origine sul target e procedi con l'avanzamento veloce.
    • Unione semi-lineare: esegue il commit dell'origine di rebase nella destinazione e crea un'unione a due elementi padre.

    Nota

    I criteri esistenti vengono applicati. Ad esempio, se la branch dispone attualmente di una policy "solo squash merge", è necessario modificare tale policy se si vuole usare un altro tipo di merge.

  3. Selezionare una delle opzioni di post-completamento seguenti. Alcune opzioni non sono disponibili per alcuni tipi di merge.

    • Completare gli elementi di lavoro associati dopo l'unione: completare tutti gli elementi di lavoro collegati.
    • Eliminare <il nome> del branch dopo l'unione: eliminare il branch di origine della Richiesta di Pull dopo l'unione.
    • Personalizzare il messaggio di commit di merge: aggiungere un messaggio di commit di merge personalizzato. Se selezioni questa opzione, aggiorna il messaggio di commit di merge.
    • Superare i criteri delle branche e abilitare la fusione. Forzare il merge anche se la pull request non soddisfa tutte le politiche del ramo. Questa opzione è disponibile solo se si dispone dell'autorizzazione esente dall'applicazione dei criteri.
  4. Selezionare Completa unione.

  1. Selezionare Completa in alto a destra per completare la richiesta pull. In alternativa, selezionare la freccia a discesa accanto al pulsante Completa e selezionare una delle opzioni seguenti:

    Screenshot che mostra le opzioni del pulsante di completamento per la Richiesta Pull.

    • Completa: completare la richiesta pull e unire le modifiche al ramo di destinazione.
    • Impostare il completamento automatico: se si dispone di criteri di ramo, configurare la richiesta pull per completare e unire una volta soddisfatti tutti i criteri di ramo necessari.
    • Abbandono: chiudere la richiesta pull senza unire le modifiche.
  2. Nella schermata Completa richiesta pull, immettere il messaggio per il commit di merge e aggiornare la descrizione della richiesta pull.

    Completa la finestra di dialogo della richiesta pull

  3. Selezionare una delle opzioni seguenti:

    • Completare gli elementi di lavoro collegati dopo l'unione per completare tutti gli elementi di lavoro collegati.

    • Eliminare <branch name> dopo l'unione per eliminare il ramo di origine dalla pull request.

    • Compatta le modifiche durante l'unione per effettuare una fusione squash della tua richiesta pull. Tenere presente che verrà creato un nuovo commit per il ramo di destinazione senza mantenere la cronologia dei commit dal ramo di origine.

    • Eseguire l'override dei criteri dei rami e abilitare l'unione forzata di un ramo anche se non soddisfa tutti i criteri di ramo. Questa opzione è disponibile solo se si dispone di autorizzazioni per l'esenzione dall'applicazione dei criteri.

      Nota

      I criteri esistenti vengono ancora applicati. Ad esempio, se il ramo dispone attualmente di un criterio "solo merge squash", è necessario modificare tale criterio per usare gli altri tipi di merge.

  4. Selezionare Completa fusione.

Al termine dell'unione, gli elementi di lavoro collegati vengono aggiornati automaticamente per visualizzare il completamento della pull request.

Screenshot degli elementi di lavoro collegati con P Rs completato.

Rebase durante il completamento del pull request

Ci sono alcune situazioni in cui non è possibile eseguire il rebase durante il completamento della pull request:

  • Se un criterio nel ramo di destinazione impedisce l'uso di strategie di rebase, è necessaria l'autorizzazione Override delle policy sui rami per effettuare il rebase.
  • Se sul ramo sorgente della pull request sono presenti delle policy, non è possibile fare il rebase. Il rebase modificherebbe il branch di origine senza passare attraverso il processo di approvazione dei criteri.
  • Se hai usato l'estensione dei conflitti di merge per risolvere i conflitti di merge, non puoi fare il rebase. Le risoluzioni dei conflitti applicate a un'unione a tre vie sono raramente efficaci o validi quando si ribasa singolarmente ogni commit della pull request.

In tutti questi casi, è comunque possibile ribasare il ramo in locale e quindi effettuare il push upstream o unire le modifiche alla conclusione della pull request.

Problema con più basi di unione

In alcuni casi, una richiesta pull ha più di un vero punto di unione e questa situazione può causare problemi di sicurezza. Se i file nella richiesta pull hanno versioni diverse tra le basi di merge, si genera un avviso che indica la presenza di una base di merge multipla. Per ulteriori informazioni e risoluzione, vedere Basi di merge multiple.

Risolvere i conflitti di unione

Le modifiche apportate ai file nel ramo possono essere in conflitto con le modifiche in un altro ramo. Quando non è chiaro come unire le modifiche, Git mostra i file in conflitto sulla Panoramica della PR. È necessario risolvere eventuali conflitti di unione tra il ramo pr e il ramo di destinazione prima di poter unire una richiesta pull o impostare la richiesta pull su completamento automatico. Per istruzioni sulla risoluzione dei conflitti di merge, vedere Risolvere i conflitti di merge.

Screenshot che mostra i conflitti di unione nella scheda Panoramica di un P R.

Impostare una richiesta pull per il completamento automatico

Selezionare Imposta completamento automatico nell'elenco a discesa Completa per completare e unire le modifiche della richiesta pull non appena le condizioni soddisfano tutti i criteri dei rami. Al termine della pull request, riceverai una notifica tramite email. Se un conflitto o un errore impedisce il completamento della pull request, riceverai una notifica tramite email.

Nota

L'opzione Impostare completamento automatico è disponibile in Azure Repos e TFS 2017 e versioni successive quando si dispone di criteri di ramo. Se non vedi Imposta il completamento automatico, non hai nessuna politica di ramo. Per altre informazioni, vedere Criteri di ramo.

Per impostazione predefinita, una richiesta pull impostata su completamento automatico attende solo i criteri richiesti. Nel pannello Abilita completamento automatico è possibile scegliere di attendere anche i criteri facoltativi.

Screenshot che mostra la modifica di un criterio facoltativo in obbligatorio nel pannello Abilita completamento automatico.

A partire da TFS 2018 Update 2, nella pagina Panoramica della PR viene visualizzato l'elenco dei criteri in sospeso. Se si imposta un criterio da richiedere nel pannello Abilita completamento automatico, è possibile impostarlo su facoltativo nella pagina Panoramica .

Selezionare Annulla completamento automatico per disattivare il completamento automatico.

Screenshot di un PR in stato di completamento automatico.

Screenshot di una pull request nello stato di completamento automatico.

Una richiesta di pull impostata per l'autocompletamento visualizza un badge di autocompletamento nella pagina delle richieste di pull.

Screenshot che mostra un pull request di completamento automatico nell'elenco dei pull request.

Abbandonare o riattivare una pull request

Per abbandonare le modifiche e il pull request senza unire, selezionare Abbandona dall'elenco a discesa nel pulsante Completa. È comunque possibile visualizzare la richiesta pull abbandonata e rimane collegata agli elementi di lavoro.

Per riattivare una richiesta pull abbandonata in qualsiasi momento, aprire la richiesta pull dalla scheda Abbandonata nella visualizzazione della Richiesta Pull e selezionare Riattiva in alto a destra.

Ripristinare un pull request completato

Per annullare le modifiche da una pull request, segui questi passaggi. Per altre informazioni, vedere Annullare le modifiche.

  1. Aprire il pull request completato e selezionare Ripristina. Questa azione crea un nuovo ramo con modifiche che annullano il pull request nella branch di destinazione esistente nel repository.

  2. Nel riquadro Ripristina richiesta pull:

    1. Sotto Ramo di destinazione, selezionare il ramo in cui si desidera annullare le modifiche della richiesta pull.
    2. Sotto Nome ramo argomento obbligatorio, modifica il nome del ramo di revert PR, se vuoi.
    3. Selezionare Ripristina.
  3. Nella schermata Nuova pull request, selezionare Crea.

  4. Unire il nuovo PR per completare il ripristino.

Nota

Il ramo creato durante questo ripristino ha un singolo commit che annulla tutte le modifiche ai file dalla pull request originale. Il ramo non contiene un commit annullato per ognuno dei commit nella pull request originale.

Passaggi successivi