Git变基时变更错误归属至文件问题及解决方案咨询
Git变基时变更错误归属至非目标文件的Bug报告
问题概述
Git执行变基操作时存在错误:当仓库中存在内容完全相同的同名文件在不同子目录下,且父目录被重命名后,变基无法正确关联原修改的目标文件,导致变更被错误应用到路径不同但名称、初始内容一致的文件上。
复现场景
- master分支中,
parent_folder目录下的project_a和project_b各自包含内容完全相同的file.txt - 基于master创建
feature_branch,修改parent_folder/project_b/file.txt的内容 - 基于master创建
refactor_branch,将parent_folder重命名为refactored_parent_folder - 将
feature_branch变基至refactor_branch后,原本应归属到refactored_parent_folder/project_b/file.txt的变更,错误出现在refactored_parent_folder/project_a/file.txt中
复现脚本
#!/bin/bash # 初始化测试仓库 mkdir git-rebase-bug-test && cd git-rebase-bug-test git init # 创建master分支的初始结构 mkdir -p parent_folder/project_a parent_folder/project_b echo "Initial content" > parent_folder/project_a/file.txt cp parent_folder/project_a/file.txt parent_folder/project_b/file.txt git add . git commit -m "Initial commit: identical files in project_a and project_b" # 创建feature_branch并修改project_b的file.txt git checkout -b feature_branch echo "Modified content in project_b" > parent_folder/project_b/file.txt git add parent_folder/project_b/file.txt git commit -m "Modify file.txt in project_b" # 创建refactor_branch并重命名父目录 git checkout master git checkout -b refactor_branch git mv parent_folder refactored_parent_folder git commit -m "Rename parent_folder to refactored_parent_folder" # 变基feature_branch到refactor_branch git checkout feature_branch git rebase refactor_branch # 查看变更结果 echo "=== 查看refactored_parent_folder/project_a/file.txt内容 ===" cat refactored_parent_folder/project_a/file.txt echo "=== 查看refactored_parent_folder/project_b/file.txt内容 ===" cat refactored_parent_folder/project_b/file.txt
验证环境
- 操作系统:Linux
- Git版本:2.34.1、2.43.2
内容的提问来源于stack exchange,提问作者n0tis
相关产品推荐
相关产品推荐

