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