Pregunta

Estoy a punto de mover una tonelada de archivos de todo en un proyecto existente. Antes de hacer esto, me gustaría tener un control firme sobre algunas de las técnicas utilizadas para analizar código que tiene una historia de varios archivos.

¿Cómo puedo usar Git para preguntar: "¿de dónde esta línea de código viene?" cuando el contenido se ha movido a través de múltiples archivos en ella de por vida?

Sé que git no cambia el nombre de pista de forma explícita (por buenas razones) por lo que parece que debería ser capaz de hacer esto, pero no estoy seguro de cómo. Si hay método de visualizar esto sería genial saber también.

¿Fue útil?

Solución

Me recomiendo mirar tres herramientas en la caja de herramientas git. La primera de ellas es la culpa, que es en gran medida la misma que está en cvs. Se le muestra que practican tocado por último a cada línea en un archivo. Si desea ver ver lo que había antes, se puede tomar la confirmación tiene que tocar la línea y vistazo a cometer el anterior.

git show <sha1_of_interesting_commit>^ -- file/path

Se puede repetir la culpa a ver lo que pasó antes de eso.

git blame <sha1_of_interesting_commit>^ -- file/path

La segunda herramienta está utilizando --follow para rastrear archivos pasado los cambios de nombre.

git log --follow -- file/path

La tercera - y posiblemente la herramienta más útil - es la opción pico para iniciar la sesión. Esta historia de las búsquedas de los cambios de las líneas eliminadas, introducidos o modificados que incluyen un bit determinado de texto. Esto es especialmente útil para el seguimiento de cosas como los nombres de función. Puede ser nuevo en un archivo en una confirmación en concreto, pero que provienen de un archivo de origen diferente? Era una llamada a ella añadió, al mismo tiempo, o antes de que se movió?

git log -S"Interesting_Function"

Si está usando un parche o una opción de estadísticas (por ejemplo -p o --stat) la salida se restringe a aquellos archivos cuyos cambios realmente implicada la cadena de búsqueda a menos que también utiliza --pickaxe-all donde se muestra todo el cambio.

En combinación con git grep para mostrar donde todos los sucesos actuales de una cadena son, pico es una herramienta de minería de la historia de gran utilidad.

Otros consejos

git blame es la que se uso para preguntar "¿dónde esta línea de código viene?". No sé si maneja los cambios de nombre. Probablemente lo hace.

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