在 git 中提交后延迟重命名文件
Late-rename file after commit in git
有人以 git 无法检测到是同一个文件的方式更改了文件名及其内容。
他们也没有使用git mv
,所以当我收到拉取请求时,我看到一个新文件被添加,一个旧文件被删除,这使得审查变得不切实际。
作为一个好人,我提取了他们的代码并尝试做一个 late git mv
,这样我就可以向他们的 pull request 添加一个提交并且在 Github 评论页面上看到的东西很漂亮,但是没有用。
有没有办法对文件进行死后重命名?
Git 不跟踪文件标识:存储库中没有任何内容表明修订 n 中的文件 bar
是 renamed/copied/moved来自文件 foo
修订版 (n-1)。执行 git mv
与执行普通 mv
后跟新名称上的 git add
和旧名称上的 git rm
相同。存储库仅在每次提交时存储目录树的快照,并且由工具检查存储库来决定不同提交中的文件如何相互关联。
当您查看修订历史记录并且 git 说文件已移动或重命名时,它是在本地确定的,作为基于新旧文件内容相似性的猜测。许多 git 命令支持 -M
选项,该选项允许您指定相似性阈值,以确定同一提交中的删除和添加应被视为重命名。默认阈值为 50%。
如果您希望 git 默认将更改视为重命名,而不必在每次检查存储库时指定较低的 -M
阈值,您可以将更改拆分为两个提交: 一种是在保留名称的同时更改内容,一种是在保持内容不变(或至少更改不到 50%)的情况下重命名文件。
这样做"posthumously"当然需要将分支头重置到旧提交之前,用两个新提交替换它,强制推送,并联系任何可能拉取原始版本的人让他们知道你改变了历史。 (这与对已发布给其他人的提交进行任何其他类型的更改没有什么不同。)
有人以 git 无法检测到是同一个文件的方式更改了文件名及其内容。
他们也没有使用git mv
,所以当我收到拉取请求时,我看到一个新文件被添加,一个旧文件被删除,这使得审查变得不切实际。
作为一个好人,我提取了他们的代码并尝试做一个 late git mv
,这样我就可以向他们的 pull request 添加一个提交并且在 Github 评论页面上看到的东西很漂亮,但是没有用。
有没有办法对文件进行死后重命名?
Git 不跟踪文件标识:存储库中没有任何内容表明修订 n 中的文件 bar
是 renamed/copied/moved来自文件 foo
修订版 (n-1)。执行 git mv
与执行普通 mv
后跟新名称上的 git add
和旧名称上的 git rm
相同。存储库仅在每次提交时存储目录树的快照,并且由工具检查存储库来决定不同提交中的文件如何相互关联。
当您查看修订历史记录并且 git 说文件已移动或重命名时,它是在本地确定的,作为基于新旧文件内容相似性的猜测。许多 git 命令支持 -M
选项,该选项允许您指定相似性阈值,以确定同一提交中的删除和添加应被视为重命名。默认阈值为 50%。
如果您希望 git 默认将更改视为重命名,而不必在每次检查存储库时指定较低的 -M
阈值,您可以将更改拆分为两个提交: 一种是在保留名称的同时更改内容,一种是在保持内容不变(或至少更改不到 50%)的情况下重命名文件。
这样做"posthumously"当然需要将分支头重置到旧提交之前,用两个新提交替换它,强制推送,并联系任何可能拉取原始版本的人让他们知道你改变了历史。 (这与对已发布给其他人的提交进行任何其他类型的更改没有什么不同。)