gpt4 book ai didi

git - 将具有文件重命名和编辑的 git 提交分成两个提交

转载 作者:太空狗 更新时间:2023-10-29 14:05:13 26 4
gpt4 key购买 nike

我正在进行一些重构,为了便于查看历史记录,我希望明确定义“将 x 文件夹重命名为 y”提交与文件编辑提交分开。

目前,我不知道如何使用 git staging 将它们分成两部分。

我绝对知道我可以移动文件 - 提交、编辑文件 - 提交、移动 - 提交、编辑 - 提交,但是对于某些 IDE,你最好使用它们的移动功能,其中包括所有其他涉及的重构步骤,但是无法在 git 提交步骤中将其分开,我发现它有点困惑。

我的偏好是一个包罗万象的命令,比如 git add -A :/,但是在那种情况下, 指定 git 文件更改的移动/重命名部分步骤。

最佳答案

这需要编写一些脚本,但可以完成:首先,将涉及重命名和编辑的所有更改提交到一个临时分支(下图中的 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 之上进行另一次提交,其中文件都被重命名和编辑。

enter image description here

关于git - 将具有文件重命名和编辑的 git 提交分成两个提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com