tipos tener tag sirve qué proyecto podemos para nuestros nos mayor log herramienta hacer existen etiquetas cuando creamos control git branch

tag - Cómo obtener los cambios en una sucursal en Git



¿qué herramienta podemos hacer para tener un mayor control de nuestros proyecto en github? (9)

¿Cuál es la mejor manera de obtener un registro de confirmaciones en una rama desde el momento en que se ramificó desde la rama actual? Mi solución hasta ahora es:

git log $(git merge-base HEAD branch)..branch

La documentación para git-diff indica que git diff A...B es equivalente a git diff $(git-merge-base AB) B Por otro lado, la documentación de git-rev-parse indica que r1...r2 se define como r1 r2 --not $(git merge-base --all r1 r2) .

¿Por qué son diferentes? Tenga en cuenta que la git diff HEAD...branch me da las diferencias que quiero, pero el comando correspondiente de git log me da más de lo que quiero.

En imágenes, supongamos que esto:

x---y---z---branch / ---a---b---c---d---e---HEAD

Me gustaría obtener un registro que contenga confirmaciones x, y, z.

  • git diff HEAD...branch da estos compromisos
  • sin embargo, git log HEAD...branch da x, y, z, c, d, e.

En el contexto de una lista de revisión, A...B es cómo git-rev-parse define. git-log toma una lista de revisión. git-diff no toma una lista de revisiones; toma una o dos revisiones, y ha definido la sintaxis A...B para indicar cómo se define en la página de git-diff . Si git-diff no definiera explícitamente A...B , entonces esa sintaxis sería inválida. Tenga en cuenta que la página de git-rev-parse describe A...B en la sección "Especificar rangos", y todo en esa sección solo es válido en situaciones en las que un rango de revisión es válido (es decir, cuando se desea una lista de revisión).

Para obtener un registro que contenga solo x, y, y z, intente git log HEAD..branch (dos puntos, no tres). Esto es idéntico al git log branch --not HEAD , no git log branch --not HEAD , y significa todos los confirmaciones en la rama que no están en HEAD.


Esto es similar a la respuesta que publiqué en: Vista previa de un empuje de Git

Coloca estas funciones en tu perfil de Bash:

  • gbout - rama de git saliente
  • gbin - rama de git entrante

Puedes usar esto como:

  • Si en master: gbin branch1 <- esto le mostrará lo que hay en branch1 y no en master
  • Si en master: gbout branch1 <- esto le mostrará qué hay en master que no está en branch 1

Esto funcionará con cualquier rama.

function parse_git_branch { git branch --no-color 2> /dev/null | sed -e ''/^[^*]/d'' -e ''s/* /(.*/)//1/'' } function gbin { echo branch /($1/) has these commits and /($(parse_git_branch)/) does not git log ..$1 --no-merges --format=''%h | Author:%an | Date:%ad | %s'' --date=local } function gbout { echo branch /($(parse_git_branch)/) has these commits and /($1/) does not git log $1.. --no-merges --format=''%h | Author:%an | Date:%ad | %s'' --date=local }


Lo que quieres ver es la lista de confirmaciones salientes. Puedes hacer esto usando

git log master..branchName

o

git log master..branchName --oneline

Donde asumo que "branchName" se creó como una rama de seguimiento de "master".

Del mismo modo, para ver los cambios entrantes puede utilizar:

git log branchName..master


Para ver el registro de la rama actual desde la bifurcación de maestro:

git log master...

Si actualmente está en el master, para ver el registro de una rama diferente, ya que se ramificó del maestro:

git log ...other-branch


Similar a varias respuestas como la de Alex V y NDavis, pero ninguna de ellas es exactamente la misma.

Cuando ya esté en la rama en cuestión.

Utilizando:

git diff master...

Que combina varias características:

  • es super corto
  • muestra los cambios reales

Actualizar:

Probablemente debería ser git diff master , pero también muestra la diferencia, no las confirmaciones como la pregunta especificada.


Tire un -p allí para ver algunos CAMBIOS DE ARCHIVO

git log -p master..branch

Hacer algunos alias:

alias gbc="git branch --no-color | sed -e ''/^[^/*]/d'' -e ''s/* //(.*//)//1/''" alias gbl=''git log -p master../`gbc/`''

Ver los compromisos únicos de una rama:

gbl


encontré

git diff <branch_with_changes> <branch_to_compare_to>

Más útil, ya que no solo obtienes los mensajes de confirmación sino todo el dif. Si ya está en la rama de la que desea ver los cambios y (por ejemplo) desea ver qué ha cambiado en el maestro, puede utilizar:

git diff HEAD master


git cherry branch [newbranch]

hace exactamente lo que estás preguntando, cuando estás en la rama master .

También soy muy aficionado a:

git diff --name-status branch [newbranch]

Lo que no es exactamente lo que estás preguntando, pero sigue siendo muy útil en el mismo contexto.


git log --cherry-mark --oneline from_branch...to_branch

(3dots) pero a veces muestra ''+'' en lugar de ''=''