Ricerca…


Sintassi

  • git unire another_branch [opzioni]
  • git merge --abort

Parametri

Parametro Dettagli
-m Messaggio da includere nel commit di unione
-v Mostra output dettagliato
--abort Tentativo di ripristinare tutti i file nel loro stato
--ff-only Interrompe istantaneamente quando è richiesto un merge-commit
--no-ff Forza la creazione di un merge-commit, anche se non era obbligatorio
--no-commit Finge che l'unione non consenta l'ispezione e il perfezionamento del risultato
--stat Mostra un diffstat dopo il completamento della fusione
-n / --no-stat Non mostrare il diffstat
--squash Consente un singolo commit sul ramo corrente con le modifiche unite

Unisci un ramo in un altro

git merge incomingBranch

Questo unisce il ramo incomingBranch al ramo in cui ci si trova attualmente. Ad esempio, se si è attualmente in master , quindi incomingBranch verrà unito a master .

L'unione può creare conflitti in alcuni casi. Se ciò accade, verrà visualizzato il messaggio Automatic merge failed; fix conflicts and then commit the result. Dovrai modificare manualmente i file in conflitto, o per annullare il tuo tentativo di unione, eseguire:

git merge --abort

Unione automatica

Quando i commit su due rami non sono in conflitto, Git può automaticamente unirli:

~/Stack Overflow(branch:master) » git merge another_branch
Auto-merging file_a
Merge made by the 'recursive' strategy.
 file_a | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Annullare una fusione

Dopo aver avviato un'unione, potresti voler interrompere l'unione e riportare tutto allo stato di pre-unione. Usa --abort :

git merge --abort

Mantieni le modifiche da un solo lato di un'unione

Durante un'unione, puoi passare --ours o --theirs a git checkout per prendere tutte le modifiche per un file da una parte o dall'altra di un'unione.

$ git checkout --ours   -- file1.txt # Use our version of file1, delete all their changes
$ git checkout --theirs -- file2.txt # Use their version of file2, delete all our changes

Unisci con un commit

Il comportamento predefinito è quando l'unione si risolve come un avanzamento rapido, aggiorna solo il puntatore del ramo, senza creare un commit unione. Usa --no-ff per risolvere.

git merge <branch_name> --no-ff -m "<commit message>"

Trovare tutti i rami senza modifiche unite

A volte potresti avere rami in giro che hanno già fuso le loro modifiche in master. Questo trova tutti i rami che non sono master che non hanno commit unici rispetto al master . Questo è molto utile per trovare rami che non sono stati cancellati dopo che il PR è stato fuso in master.

 for branch in $(git branch -r) ; do
   [ "${branch}" != "origin/master" ] && [ $(git diff master...${branch} | wc -l) -eq 0 ] && echo -e `git show --pretty=format:"%ci %cr" $branch | head -n 1`\\t$branch
 done | sort -r


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow