我正在对一个项目进行几次重构。因此,有时我需要重命名文件扩展名,例如index.js -> index.ts,并更改该文件上的许多行。
由于 git 错误地将其标记index.js为已删除并index.ts标记为新文件,因此这可能会对代码审查和日志造成不良影响。
有没有办法明确地对 git 说“嘿,我重命名index.js为index.ts”?
使用的方法git add / git rm / git mv不起作用,因为 git 仍然说我创建了一个新文件并删除了其他文件。
另外,我不应该使用两次提交(一次用于重命名,一次用于更新其内容),因为第一次提交将被破坏,因为文件的构建步骤与文件.js不同.ts
tor*_*rek 11
\n\n\n有没有什么方法可以明确地对 git 说“嘿,我将index.js 重命名为index.ts”?
\n
不。
\n\n这里的所有都是它的。Git 不存储对文件的更改。Git 存储文件的快照。在快照 X 中,您有一个名为index.js. 在快照 Y 中,您有一个名为index.ts.
当比较快照X和快照Y时,可以让Git检测命名。检测基于两个事实:
\n\n在快照 X 中,有一个名为 的文件index.js,在快照 Y 中,该文件不存在,但index.ts存在一个名为 的新文件;因此可以将这两个名称放入候选列表中以进行重命名检测。
现在重命名检测的候选列表已填充了从左侧 (X) 提交中消失并出现在右侧 (Y) 提交中的所有文件名,Git 将比较每对文件。如果这两个文件的内容足够相似,Git 会暂时将该对配对,并记住这个相似性索引值。运行完所有可能的配对后,Git 将采用具有最佳相似性索引的配对,并将该文件称为“重命名”。
每当你让 Git 比较快照 X 和 Y\xe2\x80\x94 的任何提交哈希值X和Y时,实际上\xe2\x80\x94你就可以告诉 Git:
\n\n使用该git diff命令,重命名检测器在 Git 2.9 之前默认为关闭,在 Git 2.9 及更高版本中默认为打开。在所有版本的 Git 中,相似度阈值默认为“50% 相似”。使用-M标志打开检测器并设置相似性阈值。
使用其他 Git 命令时,其他标志和参数可能允许您启用重命名检测并设置阈值\xe2\x80\x94,或者在某些情况下,没有那么多。例如,git log --follow打开重命名检测器,但将其限制为仅一个文件名,并且不允许您设置阈值。
该git status命令用于始终启用重命名检测并将阈值设置为 50%。现在它服从了git config启用或禁用重命名检测的设置,但仍然无法设置阈值。
同样,当您比较两个提交时,会发生此重命名检测。提交本身只是所有文件的快照。具有不同重命名检测设置的两个不同git diff命令将显示不同的操作集,这些操作集导致将第一个提交替换为第二个提交。 该git diff命令不会显示某人实际做了什么。相反,它显示了一些将产生相同结果的操作序列。
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |