Git 移动一些文件后检测到合并冲突
Git merge conflict detected after moving some files
我们目前正在处理一堆文件,所有文件都在 git 存储库中进行了跟踪。
在某些时候,我们不得不移动这些文件的一部分,我们使用 :
git mv repo/file.c new_repo/
在对 "new_repo/file.c" 进行一些修改后(修改,我的意思是很多更改),我们必须在主分支上进行 rebase(其中的文件没有被移动)。
假设这个分支 "repo/file.c" 已经被修改,GIT 是否会检测工作分支上的 "new_repo/file.c" 和主分支上的 "repo/file.c" 之间的合并冲突?这些文件即使修改了很多也认为是相同的吗?
Git 将尝试 检测 合并一侧的哪些文件对应于使用 [=15= 合并另一侧的哪些文件]相似性启发法(文件及其文件名的相似程度)。
通常有效O.K。如果没有,并且您使用了增量更改(即文件更改是渐进的,逐个提交),您可以尝试使用 git-imerge 工具。
Git 不存储副本和重命名,它尝试使用试探法找出它们。它并不总是很努力。可以告诉默认合并策略(递归)更加努力。
rename-threshold=<n>
Controls the similarity threshold used for rename detection.
See also git-diff(1)-M.
相似性阈值定义为...
(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%.
我不知道递归合并的默认值是多少,大概是 50%。尝试 git merge -X rename-threshold=50%
然后 40%、30% 等等。
我们目前正在处理一堆文件,所有文件都在 git 存储库中进行了跟踪。 在某些时候,我们不得不移动这些文件的一部分,我们使用 :
git mv repo/file.c new_repo/
在对 "new_repo/file.c" 进行一些修改后(修改,我的意思是很多更改),我们必须在主分支上进行 rebase(其中的文件没有被移动)。
假设这个分支 "repo/file.c" 已经被修改,GIT 是否会检测工作分支上的 "new_repo/file.c" 和主分支上的 "repo/file.c" 之间的合并冲突?这些文件即使修改了很多也认为是相同的吗?
Git 将尝试 检测 合并一侧的哪些文件对应于使用 [=15= 合并另一侧的哪些文件]相似性启发法(文件及其文件名的相似程度)。
通常有效O.K。如果没有,并且您使用了增量更改(即文件更改是渐进的,逐个提交),您可以尝试使用 git-imerge 工具。
Git 不存储副本和重命名,它尝试使用试探法找出它们。它并不总是很努力。可以告诉默认合并策略(递归)更加努力。
rename-threshold=<n> Controls the similarity threshold used for rename detection. See also git-diff(1)-M.
相似性阈值定义为...
(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%.
我不知道递归合并的默认值是多少,大概是 50%。尝试 git merge -X rename-threshold=50%
然后 40%、30% 等等。