Risposte:
La funzione "richiesta di unione" di GitLab è equivalente alla funzione "richiesta di pull" di GitHub . Entrambi sono mezzi per estrarre le modifiche da un altro ramo o fork nel proprio ramo e unire le modifiche con il codice esistente. Sono strumenti utili per la revisione del codice e la gestione delle modifiche.
Un articolo di GitLab discute le differenze nella denominazione della funzione:
Le richieste di unione o pull vengono create in un'applicazione di gestione git e chiedono a una persona assegnata di unire due rami. Strumenti come GitHub e Bitbucket scelgono la richiesta di pull del nome poiché la prima azione manuale sarebbe quella di estrarre il ramo della funzione. Strumenti come GitLab e Gitorious scelgono la richiesta di unione del nome poiché è l'azione finale richiesta all'assegnatario. In questo articolo faremo riferimento a loro come richieste di unione.
Una "richiesta di unione" non deve essere confusa con il git merge
comando. Né una "richiesta pull" deve essere confusa con il git pull
comando. Entrambi i git
comandi vengono utilizzati dietro le quinte in entrambe le richieste pull e le richieste di unione, ma una richiesta di unione / pull fa riferimento a un argomento molto più ampio di questi due comandi.
Sono la stessa caratteristica
Le richieste di unione o pull vengono create in un'applicazione di gestione git e chiedono a una persona assegnata di unire due rami. Strumenti come GitHub e Bitbucket scelgono la richiesta di pull del nome poiché la prima azione manuale sarebbe quella di estrarre il ramo della funzione. Strumenti come GitLab e Gitorious scelgono la richiesta di unione del nome poiché è l'azione finale richiesta all'assegnatario. In questo articolo faremo riferimento a loro come richieste di unione.
Dal mio punto di vista, significano la stessa attività ma da diverse prospettive:
Pensaci, Alice si impegna sul repository A, che è stato biforcato dal repository B.
Quando Alice vuole "unire" le sue modifiche in B, in realtà vuole che Bob "tiri" queste modifiche da A.
Pertanto, dal punto di vista di Alice, è una "richiesta di unione", mentre Bob la vede come una "richiesta pull".
C'è una sottile differenza in termini di gestione dei conflitti. In caso di conflitti, una richiesta pull in Github comporterà un commit di unione sul ramo di destinazione . In Gitlab, quando viene rilevato un conflitto, le modifiche apportate saranno su un commit di unione sul ramo di origine .
Vedi https://docs.gitlab.com/ee/user/project/merge_requests/resolve_conflicts.html
"GitLab risolve i conflitti creando un commit di unione nel ramo di origine che non viene automaticamente unito nel ramo di destinazione. Ciò consente di verificare e testare il commit di unione prima che le modifiche vengano unite, evitando che modifiche indesiderate entrino nel ramo di destinazione senza revisione o interruzione la build ".
GitLab 12.1 (luglio 2019) introduce una differenza:
" Unisci richieste per problemi riservati "
Quando si discute, si pianifica e si risolvono problemi confidenziali, come le vulnerabilità della sicurezza, può essere particolarmente difficile per i progetti open source rimanere efficienti poiché il repository Git è pubblico.
A partire da 12.1, è ora possibile risolvere problemi confidenziali in un progetto pubblico all'interno di un flusso di lavoro semplificato utilizzando il pulsante Crea richiesta di unione confidenziale, che consente di creare una richiesta di unione in un fork privato del progetto.
Vedi " Problemi riservati " da numero 58583 .
Una funzionalità simile esiste in GitHub, ma comporta la creazione di uno speciale fork privato, chiamato " advisor di sicurezza del manutentore ".
Come menzionato nelle risposte precedenti, entrambi hanno quasi lo stesso scopo. Personalmente mi piace git rebase e unire richiesta (come in gitlab). Elimina l'onere del revisore / manutentore, assicurandosi che durante l'aggiunta della richiesta di unione, il ramo della funzione includa tutti gli ultimi commit eseguiti sul ramo principale dopo la creazione del ramo della funzione. Ecco un articolo molto utile che spiega in dettaglio rebase: https://git-scm.com/book/en/v2/Git-Branching-Rebasing