Pregunta

Estoy usando Git para mi proyecto y tratar de seguir las mejores prácticas:

  1. Trabajo en un rama tema
  2. Cuando esté listo, puedo combinar el rama tema en mi dev rama usando git merge --squash. Esto mantiene mi dev rama limpia.
  3. Cada vez que el dev rama es estable y el equipo decide que es hora de un comunicado, que se funden el dev se ramifican en el principal rama, sin utilizando la calabaza, y la etiqueta que se cometen como entregas.

Esto debe mantener nuestra historia, y el uso de gitk, podemos ver donde todas las confirmaciones vienen en. Sin embargo, quiero ser capaz de ver sólo las confirmaciones aplican a la maestro rama. He tratado:

git log master
git show-branch

Ninguna de éstas muestran solo la historia de la principal rama. ¿Hay una manera de hacer esto fácilmente?

¿Fue útil?

Solución

Si te lo estoy entendiendo correctamente, usted quiere ver las fusiones de nuevo en maestro, pero no la historia de las fusiones. Creo que:

git log --merges

le dará lo que quiere.

ACTUALIZACIÓN:. La adición de --first-padre debe solucionar este problema a partir de los sonidos de la misma

git log --merges --first-parent

- primera matriz

Follow only the first parent commit upon seeing a merge commit.

Esta opción puede dar una mejor visión de conjunto cuando se observa la evolución de una rama particular tema, porque se funde en una rama tema tienden a ser sólo el ajuste de actualización aguas arriba de vez en cuando, y esto opción le permite ignorar la confirmaciones individuales ejercidas en su la historia por una combinación de tales.

Otros consejos

Por desgracia, Git no almacena información de la rama de un commit, y se compromete no pertenecen a una rama. Sucursales en Git son sólo "movimiento etiquetas" en un curso de confirmaciones y no una secuencia de confirmaciones, como cabría esperar.

Así que, básicamente, no se puede mostrar compromete a que pertenecen a una rama ya que no existe tal concepto en Git.

Desde Git no almacena información sobre qué rama es incipiente de la que otra, no hay forma automática de adivinar qué rama lo que pueda desear para ser mostrado.

A ese respecto, --first-parent no en última instancia, ayuda, sobre todo porque es fácil tener más de un maestro, por ejemplo. Considere lo siguiente:

wc1$ git clone git://shared.com/repo
wc1$ (hack code, git commit)
wc2$ git clone git://shared.com/repo
wc2$ (hack code, git commit, git push somewhere)
wc1$ git fetch origin; git merge origin/master; git push somewhere master;

(Siéntase libre de tomar un proyecto de azar y hacer este ejercicio.) Gráfico ella. Así no se puede representar gráficamente de manera significativa "sólo una rama", incluso si las confirmaciones fueron etiquetados con el nombre de la rama que se hicieron en (porque ambos son maestro).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top