VS代码'git mv'是否保留文件历史记录?

w41d8nur  于 2022-12-10  发布在  Git
关注(0)|答案(3)|浏览(210)

在VS代码中有没有办法更改文件名,这样文件历史记录就可以保存在git中,而不会认为被跟踪的文件已经被删除了?
我希望得到命令的GUI实现:

git mv oldName.abc newName.xyz

谢谢

3df52oht

3df52oht1#

没有必要,只要重命名文件即可。Git会检测重命名,无论是否使用了git mv
试试看:以正常的方式重命名它,在旧的和新的名称下暂存文件(或者只是执行git add .),然后在控制台中运行git status,它应该显示为重命名,而不是创建和删除,所以历史记录总是被保留。

fzsnzjdm

fzsnzjdm2#

Git不会存储文件被重命名的信息,它只在执行diff时检测到重命名(在git diff/status/log/etc中)。(源代码)
有一个选项-M可控制此重命名检测的级别。

-M[<n>], --find-renames[=<n>]
           Detect renames. If n is specified, it is a threshold on the similarity index (i.e. amount of addition/deletions compared to the file’s size).
           For example, -M90% means Git should consider a delete/add pair to be a rename if more than 90% of the file hasn’t changed. Without a % sign,
           the number is to be read as a fraction, with a decimal point before it. I.e., -M5 becomes 0.5, and is thus the same as -M50%. Similarly, -M05
           is the same as -M5%. To limit detection to exact renames, use -M100%. The default similarity index is 50%.

请尝试使用:

git status -M10%

对于VS Code,你可以使用GitLens扩展,它提供了一个选项来控制这个阈值,这个设置叫做similarityThreshold

gitlens.advanced.similarityThreshold    Specifies the amount (percent) of similarity a deleted and added file pair must have to be considered a rename

尝试将其设置为10并通过GitLens检查历史记录,它应该能更好地检测到文件重命名。

jaql4c8m

jaql4c8m3#

由于git有时无法检测重命名操作,我在Visual Studio Code中安装了这个扩展,到目前为止,它似乎可以很好地重命名文件,并在下面执行git mv
https://marketplace.visualstudio.com/items?itemName=ambooth.git-rename
README.md的一个很酷的地方是,在重命名过程中可以指定一个新的目录位置:

用法

在文件资源管理器中右键单击一个文件,然后选择“重命名(git-mv)"。使用出现的输入文本字段,输入新名称并按Enter键。注意:也可以通过调整路径来更改目录位置。

相关问题