in

¿Cuál es la diferencia entre `git merge` y` git merge –no-ff`?

apple touch icon@2

Respuesta gráfica a esta pregunta

Aquí hay un sitio con una explicación clara y una ilustración gráfica del uso git merge --no-ff:

diferencia entre git merge --no-ff y git merge

Hasta que vi esto, estaba completamente perdido con git. Utilizando --no-ff permite que alguien que revisa el historial pueda ver la sucursal que revisó para trabajar en. (ese enlace apunta a la herramienta de visualización «red» de github) Y aquí está otra gran referencia con ilustraciones. Esta referencia complementa muy bien la primera con un enfoque más en aquellos menos familiarizados con git.


Información básica para novatos como yo

Si eres como yo, y no un gurú de Git, mi respuesta aquí describe cómo manejar la eliminación de archivos del seguimiento de git sin eliminarlos del sistema de archivos local, lo que parece estar mal documentado pero ocurre a menudo. Otra situación nueva es obtener el código actual, que aún se las arregla para eludirme.


Flujo de trabajo de ejemplo

Actualicé un paquete en mi sitio web y tuve que volver a mis notas para ver mi flujo de trabajo; Pensé que sería útil agregar un ejemplo a esta respuesta.

Mi flujo de trabajo de comandos git:

git checkout -b contact-form
(do your work on "contact-form")
git status
git commit -am  "updated form in contact module"
git checkout master
git merge --no-ff contact-form
git branch -d contact-form
git push origin master

Debajo: uso real, incluidas explicaciones.
Nota: la salida a continuación está recortada; git es bastante detallado.

$ git status
# On branch master
# Changed but not updated:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   ecc/Desktop.php
#       modified:   ecc/Mobile.php
#       deleted:    ecc/ecc-config.php
#       modified:   ecc/readme.txt
#       modified:   ecc/test.php
#       deleted:    passthru-adapter.igs
#       deleted:    shop/mickey/index.php
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       ecc/upgrade.php
#       ecc/webgility-config.php
#       ecc/webgility-config.php.bak
#       ecc/webgility-magento.php

Note 3 cosas desde arriba:
1) En el resultado, puede ver los cambios de la actualización del paquete ECC, incluida la adición de nuevos archivos.
2) Observe también que hay dos archivos (no en el /ecc carpeta) Eliminé independientemente de este cambio. En lugar de confundir esas eliminaciones de archivos con ecc, Haré una diferente cleanup branch más tarde para reflejar la eliminación de esos archivos.
3) ¡No seguí mi flujo de trabajo! Me olvidé de git mientras intentaba que ecc funcionara nuevamente.

Abajo: en lugar de hacer todo incluido git commit -am "updated ecc package" Normalmente lo haría, solo quería agregar los archivos en el /ecc carpeta. Esos archivos eliminados no eran específicamente parte de mi git add, pero debido a que ya fueron rastreados en git, necesito eliminarlos de la confirmación de esta rama:

$ git checkout -b ecc
$ git add ecc/*
$ git reset HEAD passthru-adapter.igs
$ git reset HEAD shop/mickey/index.php
Unstaged changes after reset:
M       passthru-adapter.igs
M       shop/mickey/index.php

$ git commit -m "Webgility ecc desktop connector files; integrates with Quickbooks"

$ git checkout master
D       passthru-adapter.igs
D       shop/mickey/index.php
Switched to branch 'master'
$ git merge --no-ff ecc
$ git branch -d ecc
Deleted branch ecc (was 98269a2).
$ git push origin master
Counting objects: 22, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 59.00 KiB, done.
Total 14 (delta 10), reused 0 (delta 0)
To git@github.com:me/mywebsite.git
   8a0d9ec..333eff5  master -> master

Script para automatizar lo anterior

Después de haber usado este proceso más de 10 veces en un día, me dediqué a escribir scripts por lotes para ejecutar los comandos, así que hice un git_update.sh <branch> <"commit message"> script para realizar los pasos anteriores. Aquí está la fuente de Gist para ese guión.

En lugar de git commit -am Estoy seleccionando archivos de la lista «modificada» producida a través de git status y luego pegarlos en este script. Esto sucedió porque hice docenas de ediciones pero quería nombres de sucursales variados para ayudar a agrupar los cambios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Anotaciones de Jackson – @JsonFilter

QsLoyXP8TxozYVmwLeiSF6 1200 80

Guía de personajes de Persona 5: detalles de las relaciones sociales, los confidentes y los miembros del grupo