Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Git cherry-pick copia le modifiche da uno o più commit del ramo di origine in un ramo di destinazione. A differenza di merge o rebase, cherry-pick consente di selezionare commit di rami di origine specifici. Per ogni commit del ramo di origine selezionato, Git crea un commit corrispondente nel ramo di destinazione.
È possibile selezionare specificamente per affrontare queste attività comuni:
- Distribuire una funzionalità specifica da un ramo a un altro.
- Copiare il lavoro di cui è stato eseguito il commit nel ramo errato.
- Applicare una correzione di bug in più rami.
Per una panoramica del flusso di lavoro Git, vedere Esercitazione su Git di Azure Repos.
Prerequisiti
| Categoria |
Requisiti |
| Accesso al progetto |
Membro di un progetto. |
| Autorizzazioni |
- Visualizzare il codice nei progetti privati: almeno l'accesso di base . - Clonare o contribuire al codice nei progetti privati: membro del gruppo di sicurezza Contributors o con le autorizzazioni corrispondenti nel progetto. - Impostare le autorizzazioni del ramo o del repository: le autorizzazioni di gestione sono autorizzazioni per il ramo o il repository. - Modifica ramo predefinito: i criteri di modifica sono autorizzazioni per il repository. - Importare un repository: membro del gruppo di sicurezza Amministratori del Progetto o autorizzazione per la creazione del repository a livello di progetto Git impostata su Consenti. Per altre informazioni, vedere Impostare le autorizzazioni del repository Git. |
| Servizi |
Repository attivati. |
| Tools |
Optional. Usare i comandi az repos: CLI di Azure DevOps. |
Annotazioni
Nei progetti pubblici gli utenti con accesso stakeholder hanno accesso completo a Azure Repos, tra cui visualizzazione, clonazione e contributo al codice.
| Categoria |
Requisiti |
| Accesso al progetto |
Membro di un progetto. |
| Autorizzazioni |
- Visualizzare il codice: almeno l'accesso di base. - Clonare o contribuire al codice: membro del gruppo di sicurezza Collaboratori o delle autorizzazioni corrispondenti nel progetto. |
| Servizi |
Repository attivati. |
Seleziona un commit
Azure Repos
Azure Repos offre un supporto limitato per il cherry-picking e solo allo scopo di creare una richiesta pull per applicare una correzione in un ramo di destinazione. Per ulteriori informazioni, vedere Migliorare il cherry-pick in Azure DevOps.
L'opzione Cherry-pick nel menu di richiesta pull in Azure Repos esegue le operazioni seguenti:
- Crea un nuovo ramo di argomento dal ramo di destinazione della richiesta pull.
- Seleziona con precisione tutte le modifiche dal ramo di origine della pull request al nuovo ramo tematico.
- Richiede di creare una nuova richiesta pull per unire il nuovo ramo di argomento in un altro ramo di destinazione.
Per un tutorial passo-passo, vedere Crea una nuova pull request con cherry-pick.
GitHub
L'interfaccia Web di GitHub non supporta cherry-pick, ma GitHub Desktop lo fa. Per istruzioni dettagliate su come effettuare il cherry-picking in GitHub Desktop, vedere Eseguire il cherry-picking di un commit.
Visual Studio 2022 offre un'esperienza di controllo della versione Git usando il menu Git, Le modifiche Git e tramite i menu di scelta rapida in Esplora soluzioni. Visual Studio 2019 versione 16.8 offre anche l'interfaccia utente Git di Team Explorer . Per altre informazioni, vedere la scheda Visual Studio 2019 - Team Explorer .
Scegli Git Gestisci Rami per aprire la finestra Repository Git.
Nella finestra Repository Git fare clic con il pulsante destro del mouse sul ramo di destinazione e scegliere Checkout .In the Git Repository window, right-click the target branch and choose Checkout.
Nella visualizzazione Rami fare clic con il pulsante destro del mouse sul ramo di origine e scegliere Visualizza Cronologia per aprire una scheda Cronologia dei commit.
Nella scheda Cronologia fare clic con il pulsante destro del mouse sul commit che si desidera selezionare e scegliere Cherry-Pick. Visual Studio non supporta il cherry-pick di più di un commit alla volta, quindi è necessario ripetere questo passaggio per ogni commit che si vuole cherry-pick.
Visual Studio crea un nuovo commit del ramo di destinazione che contiene le modifiche dal commit cherry-pickato. Se l'operazione cherry-pick non viene completata correttamente, Visual Studio invierà una notifica.
Visual Studio 2019 versione 16.8 e versioni successive offre un'esperienza di controllo della versione Git mantenendo al tempo stesso l'interfaccia utente git di Team Explorer . Per usare Team Explorer, deselezionare Strumenti>Opzioni>Funzionalità di anteprima> e Nuova esperienza utente Git dalla barra dei menu. È possibile usare le funzionalità Git da entrambe le interfacce in modo intercambiabile.
In Team Explorer, selezionare il pulsante Home e scegliere branch.
Nella visualizzazione Rami, fare clic con il pulsante destro del mouse sul ramo di destinazione e scegliere Checkout.
Nella visualizzazione Rami fare clic con il pulsante destro del mouse sul ramo di origine e scegliere Visualizza storico per aprire una scheda della cronologia commit.
Nella scheda Cronologia fare clic con il pulsante destro del mouse sul commit che si desidera selezionare e scegliere Cherry-Pick. Visual Studio non supporta il cherry-pick di più di un commit alla volta, quindi è necessario ripetere questo passaggio per ogni commit che si desidera cherry-pickare.
Visual Studio crea un nuovo commit nel branch di destinazione che contiene le modifiche dal commit risultante dalla cherry-pick. Se l'operazione cherry-pick non viene completata correttamente, Visual Studio ti avviserà.
Usa il comando git log per elencare i commit del ramo di origine. Il --oneline flag abbrevia le informazioni di commit.
git log --oneline <source branch>
Git elenca prima i commit più recenti. Ogni ID commit è un hash SHA-1 parziale che identifica in modo univoco il commit. Ad esempio:
e745d06 (HEAD -> add-network-controller) Add a test initialization class
a89f48e (origin/add-network-controller) Add fiber optic transceiver test
31da50b Add network switch test
e74baa2 (origin/main, origin/HEAD, test-fiber-optic-transmitter, main) Add readme content
0c14391 Add readme file
32e3946 Add project files.
Prendere nota dell'ID del commit che si desidera selezionare.
Fare il checkout del ramo di destinazione, se non è già stato fatto.
git checkout <target branch>
Eseguire il commit, fare lo stash o eliminare le modifiche non ancora confermate.
Per selezionare un singolo commit:
git cherry-pick <commit ID>
Per selezionare diversi commit, separa gli ID commit con spazi. I commit verranno applicati nell'ordine in cui vengono immessi:
git cherry-pick <commit1 ID> <commit2 ID> <commit3 ID>
Per scegliere un intervallo inclusivo di commit, usare la ^..notazione a puntini:
git cherry-pick <oldest-commit ID>^..<newest-commit ID>
Quando si selezionano più commit, il comando cherry-pick predefinito crea una sequenza corrispondente di nuovi commit del ramo di destinazione. Per indicare a Git di eseguire la fase e non eseguire il commit delle modifiche del ramo di destinazione, usare il -n flag :
git cherry-pick -n <commit1 ID> <commit2 ID>
È quindi possibile creare manualmente un singolo commit per contenere tutte le modifiche apportate dall'operazione cherry-pick.
Git ti avviserà in caso di conflitti di merge durante l'operazione di cherry-pick. È possibile risolvere i conflitti ed eseguire git cherry-pick --continueoppure eseguire git cherry-pick --abort per annullare l'operazione cherry-pick.
Passaggi successivi
Articoli correlati