Separe un commit de git que tenga el cambio de nombre y edición de file en dos commits

Estoy repasando un poco, y para facilitar la revisión de la historia, quiero tener claramente definido "Renombrar x carpeta a y". Se compromete por separado con las modificaciones de file en.

Por el momento, no puedo imaginar cómo separarlos en dos cosas con la git staging .

Sé absolutamente que puedo mover files: cometer, editar files, comprometer, mover, confirmar, editar, confirmar, pero con algunos IDEs, es mejor que utilices sus funciones de movimiento que incluyen todos los demás pasos de refactorización involucrados, pero sin ser capaz de separar eso en los pasos de commit de git, me parece un process un poco complicado.

Mi preference sería un command catchall, como git add -A :/ , pero en eso, para especificar solo la parte de mover / cambiar el nombre del file git, cambie los pasos.

Solutions Collecting From Web of "Separe un commit de git que tenga el cambio de nombre y edición de file en dos commits"

Esto requerirá algunas secuencias de commands, pero se puede hacer: primero, confirmar todos los cambios que implican el cambio de nombre y la edición, a una twig temporal (TMP1 en el siguiente diagtwig).

Entonces corre

 git show -M --names-status 

Esto le mostrará los files que han sido renombrados, con su índice de similitud, marcado con R<N> , como en este ejemplo:

 $ git show -M --name-status commit 07d207f4ca1754c6b12bddb4918f42f02f37ccc3 Author: Adi Levin <alevin@aligntech.com> Date: Wed Mar 2 16:39:19 2016 +0200 ttt R100 assetsdb/assetsdb.iml assetsdb2/assetsdb.iml A assetsdb2/mvnw A assetsdb2/mvnw.cmd R100 assetsdb/pom.xml assetsdb2/pom.xml R100 assetsdb/src/main/java/com/aligntech/assetsdb/Asset.java assetsdb2/src/main/java/com/aligntech/assetsdb/Asset.java R100 assetsdb/src/main/java/com/aligntech/assetsdb/AssetsDBDemoApp.java assetsdb2/src/main/java/com/aligntech/assetsdb/AssetsDBDemoApp.java R100 assetsdb/src/main/java/com/aligntech/assetsdb/DynamodbAssetsApplication.java assetsdb2/src/main/java/com/aligntech/assetsdb/DynamodbAssetsApplication.java R100 assetsdb/src/main/java/com/aligntech/assetsdb/RandomString.java assetsdb2/src/main/java/com/aligntech/assetsdb/RandomString.java R100 assetsdb/src/main/resources/application.properties assetsdb2/src/main/resources/application.properties A assetsdb2/target/application.properties A assetsdb2/target/classes/application.properties A assetsdb2/target/classes/com/aligntech/assetsdb/Asset.class A assetsdb2/target/classes/com/aligntech/assetsdb/AssetsDBDemoApp.class 

Tenga en count que el índice de similitud pnetworkingeterminado es 50%. Si desea controlarlo, use -M90% o -M100% para files idénticos.

A continuación, debe analizar esta salida y extraer la list de files renombrados, luego volver a la confirmación base y crear una confirmación nueva ('Renombrado' en el diagtwig a continuación) donde esos files solo cambian de nombre, sin ningún otro cambio.

Finalmente, debe tomar el directory de trabajo de Tmp1 y realizar otro compromiso a partir de él, además de Renamed , donde los files se renombran y editan.

enter image description here