hg addremove en git

Realmente necesito este command en git

hg addremove 

Así que ahora mira el escenario y ve cómo mercurial me salvaría aquí:

Tenía algún tipo de directory aquí var / htdocs / static / static. Acendentemente moví los files a una location incorrecta (con git-mv). de todos modos … ahora moví algunas carpetas a mano:

 mv static static2 mv static2/static ./ 

tal vez también he cambiado algunos files aquí … y ahora todo está genial … ¿así que ahora git no sabe lo que pasó? Cómo podía rastrear un movimiento de files sin notificarlo como lo hace mercurial con addremove.

Por ejemplo ahora con mercurial podría hacer:

 hg addremove --similarity 80% 

eso es todo, el seguimiento mercurial de dónde se movieron los files al reconocer el contenido de los files y guardé el historial de mis files.

un muchacho aquí tiene un truco para esto:

 git add . git ls-files --deleted | xargs git rm 

pero es como en CVS en ese momento. eliminando files, agregando files. ¿Qué hay de save el historial de files?

Básicamente, git siempre hace algo así como "addremove" cuando aplica una confirmación para actualizar el tree de trabajo: busca files agregados y eliminados en el commit y detecta pares de files eliminados y agregados que probablemente cambien de nombre (usando un " cantidad de cambio "heurístico") Entonces no tienes que usar un command especial; simplemente haga las adiciones y las eliminaciones, y git luego resolverá las cosas por sí mismo.

En su escenario de ejemplo, solo cuéntele a git sobre los nuevos files: git add static y sobre los files eliminados: git add -u static , y listo para cometer. Si haces un git status antes de cometer, puedes ver que ya se ha detectado el cambio de nombre.

[Como se menciona otra respuesta, git add -A es un buen atajo que simplemente agrega todo en el tree de trabajo, incluidos los files nuevos y eliminados; la única razón para utilizar los commands más angostos es si desea evitar agregar otros cambios que estén en el tree de trabajo.]

Git no realiza un seguimiento de los cambios de nombre a través de metadatos adicionales para que pueda hacer git add -A con la plena security de que no le falta ningún metadato.

Mientras que Git rastrea el historial de "todo el tree" en lugar del historial de files, puede activar su cambio de nombre y copyr la detección después del hecho con commands como git log -M -C y git log --follow <file> .

Respuesta corta. El command más similar a hg addremove en git es:

 git add -A 

Oooorr …

 git add --all