我正在进行一些重构,为了便于查看历史记录,我希望明确定义"将x文件夹重命名为y"提交与提交文件编辑的提交分开。
目前,我无法弄清楚如何将这些内容与git staging
分开。
我绝对知道我可以移动文件 - 提交,编辑文件 - 提交,移动 - 提交,编辑 - 提交,但是对于某些IDE,您最好使用包含所有其他重构步骤的移动函数参与,但无法在git提交步骤中将其分开,我发现它有点混乱。
我的偏好是一个catchall命令,如git add -A :/
,但在此,要指定仅 git文件的移动/重命名部分更改步骤。
答案 0 :(得分:3)
这将需要一些脚本,但可以完成:首先,将涉及重命名和编辑的所有更改提交到临时分支(下图中的TMP1)。
然后,运行
git show -M --name-status
这将显示已重命名的文件及其相似性索引,标记为R<N>
,如下例所示:
$ 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
请注意,默认相似性指数为50%。如果您想对其进行控制,请仅将-M90%
或-M100%
用于相同的文件。
接下来,您需要解析此输出并提取重命名文件列表,然后返回到基本提交,并创建一个新提交(下图中的“重命名”),其中这些文件仅重命名 - 没有任何其他变化。
最后,您需要获取Tmp1
的工作目录,并在Renamed
之上进行另一次提交,其中文件都被重命名和编辑。