Git重复文件去重:重命名与删除的选择逻辑问询
Git处理相同文件去重命名的选择逻辑及自定义方法
当你有两个内容完全一致的x.txt和y.txt,想要合并成z.txt时,Git确实会自动识别为「一次重命名+一次删除」,它的选择逻辑其实很直接:
- 因为两个文件和新的
z.txt内容相似度都是100%,Git会默认按文件名的字典序来配对:比如x.txt比y.txt字母排序靠前,就会把x.txt识别为重命名到z.txt,y.txt则被标记为删除。少数情况下也可能受文件inode顺序影响,但字典序是最常见的判定依据。
如果你想指定保留哪个文件的历史,完全可以手动干预,步骤如下:
- 先删除你不想保留历史的那个文件:比如你想留
y.txt的历史,就执行git rm x.txt,把这个操作暂存(git add .) - 再用
git mv y.txt z.txt命令,把要保留的文件重命名为z.txt,同样暂存 - 最后提交,这样Git就会准确记录
y.txt→z.txt的重命名操作,同时删除x.txt,完全符合你的偏好
注意:别直接同时删除两个文件再新建z.txt,那样Git会自动帮你选择,没法控制结果。手动分步骤操作就能牢牢掌握历史记录的归属。
内容的提问来源于stack exchange,提问作者Mark VY
相关产品推荐
相关产品推荐

