Git
Fusionando
Buscar..
Sintaxis
- git merge another_branch [opciones]
- git merge --abort
Parámetros
Parámetro | Detalles |
---|---|
-m | Mensaje a ser incluido en el merge commit |
-v | Mostrar salida detallada |
--abort | Intenta revertir todos los archivos a su estado |
--ff-only | Anula instantáneamente cuando se requiere un merge-commit |
--no-ff | Fuerza la creación de un merge-commit, incluso si no fuera obligatorio |
--no-commit | Finge que la fusión no permitió la inspección y el ajuste del resultado |
--stat | Mostrar un diffstat después de completar la fusión |
-n / --no-stat | No mostrar el diffstat |
--squash | Permite una única confirmación en la rama actual con los cambios combinados |
Fusionar una rama en otra
git merge incomingBranch
Esto combina la rama incomingBranch
la rama con la rama en la que se encuentra actualmente. Por ejemplo, si actualmente está en el master
, la rama incomingBranch
se fusionará con el master
.
La fusión puede crear conflictos en algunos casos. Si esto sucede, verá el mensaje Automatic merge failed; fix conflicts and then commit the result.
Deberá editar manualmente los archivos en conflicto, o para deshacer su intento de combinación, ejecute:
git merge --abort
Fusión automática
Cuando las confirmaciones en dos ramas no entran en conflicto, Git puede fusionarlas automáticamente:
~/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(-)
Abortando una fusión
Después de iniciar una combinación, es posible que desee detener la combinación y devolver todo a su estado anterior a la combinación. Utilice --abort
:
git merge --abort
Mantener los cambios de un solo lado de una fusión
Durante una fusión, puede pasar --ours
o --theirs
a git checkout
para tomar todos los cambios para un archivo de un lado o el otro de una combinación.
$ 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
Fusionar con un commit
El comportamiento predeterminado es cuando la combinación se resuelve como un avance rápido, solo actualice el puntero de la rama, sin crear una confirmación de combinación. Utilice --no-ff
para resolver.
git merge <branch_name> --no-ff -m "<commit message>"
Encontrar todas las ramas sin cambios fusionados
A veces, es posible que haya ramas alrededor que ya hayan fusionado sus cambios en maestro. Esto encuentra todas las ramas que no son master
que no tienen confirmaciones únicas en comparación con la master
. Esto es muy útil para encontrar ramas que no se eliminaron después de que el RP se fusionara en el maestro.
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