origin - ¿Alguna guía para git merge(w squash)?
git push tag (4)
Mi flujo de trabajo:
- rama de maestro
- trabajar en mi rama, cometer frecuentemente (más de 100)
- Cuando el trabajo se realiza en mi sucursal, fusionar maestro en mi sucursal, resolver todo el conflicto.
- TIEMPO DE REVISIÓN DEL CÓDIGO antes de fusionarse de nuevo a maestro
Para CODE REVIEW, necesito mostrar las diferencias entre dos cabezales y squash / organizar mis commits (en aproximadamente 5 commits). ¿Cuál es la mejor GUI (multiplataforma?) Para esta tarea.
En Linux, mis dos GUIs favoritas para git son gitg y meld . Para obtener la diferencia correcta para la revisión del código en su caso, ejecute gitg y encuentre la última confirmación en el maestro de la que se fusionó (lo que es importante, no quiere diferir del jefe maestro actual en caso de que el maestro haya avanzado desde la última vez que se fusionó ) Copia este SHA1 y ponlo en tu git difftool
:
git difftool -t meld <SHA1>
Para configurarlo para que no tenga que especificar meld como difftool cada vez, simplemente configúrelo en la configuración:
git config --global diff.tool meld
Eclipse puede hacer la parte de comparación. Puede hacer clic derecho en el proyecto y seleccionar
Team->Advanced->Synchronize With...->(branch you want to compare against)
Eso te muestra la diferencia entre las 2 ramas. Sin embargo, ni git ni ninguna GUI de git que conozco admiten ataques de aplastamiento que en mi humilde opinión es demasiado malo.
Así que termino haciendo una
git rebase --interactive HEAD~3
(en caso de que tuviera 3 commits quiero aplastar).
La salida de cualquier comando ''git diff'' se puede mostrar en una herramienta GUI usando el comando ''git difftool''.
En primer lugar, el comando ''diff'' que queremos: mostrar los diffs acumulados introducidos por cada confirmación en ''mybranch'' ya que divergió de ''master'' usando:
git diff master...mybranch
o
git diff master...HEAD
Tenga en cuenta que esto excluye cualquier compromiso que haya sucedido en el maestro mientras tanto, que es probablemente lo que desea si está revisando mybranch.
Si mybranch es tu cabeza actual, entonces esto se puede abreviar:
git diff master...
Git alimentará los comandos de salida de diff a uno de una lista de aproximadamente ocho herramientas GUI conocidas, usando ''git difftool''. Uso kdiff3 en OSX, y en el pasado lo he usado felizmente en Linux también. Prefiero kdiff3 porque me permite hacer combinaciones de 3 vías cuando es necesario, y me permite editar manualmente la salida de la combinación, así como simplemente seleccionar los bloqueos que se utilizarán.
Primero instala kdiff3, luego agrega un enlace simbólico en tu PATH. Para mí, eso fue:
ln -s /Applications/kdiff3.app/Contents/MacOS/kdiff3 /usr/local/bin/kdiff3
Luego dile a git que quieres usar kdiff3 como tu herramienta de diferencia de GUI:
git config --global merge.tool kdiff3
A continuación, vea sus diferencias en él:
git difftool master...
Depende de su sistema operativo (git Tower, en MacOs solo por ejemplo, es una GUI fina particular pero no ofrece ninguna característica particular para una rebase interactiva). En Windows, no parece haber ninguna GUI para esa función.
La manera más fácil sigue siendo una sin interfaz, donde puedes ejecutar un
git rebase --interactive --autosquash
porque te comprometiste con un mensaje de compromiso que comenzaba con! squash (cuando esos commits intermedios eran sobre la misma tarea)
Consulte " Recorte de registros de GIT / Historia de GIT aplastante ".