gpt4 book ai didi

git - git 如何处理移动到不同文件的 merge 代码?

转载 作者:IT王子 更新时间:2023-10-29 00:59:47 25 4
gpt4 key购买 nike

假设我在文件 A 中有函数 X,我想将该函数移动到文件 B。与此同时,其他人对文件 A 中的函数 X 进行了更改。

merge 这两个更改时,git 有什么特别之处吗?它会识别出相同的功能已移至文件 B 并在那里应用更改吗?或者我们最终会丢失更改或在文件 A 和 B 中拥有相同功能的两个副本吗?

我发现的大多数关于在 git 中移动代码的文章主要是指重命名整个文件,而不是文件内的代码块。我找到的最接近的是 blurb from Linus at kerneltrap :

And when using git, the whole 'keep code movement separate from changes' has an even more fundamental reason: git can track code movement (again, whether moving a whole file or just a function between files), and doing a 'git blame -C' will actually follow code movement between files. It does that by similarity analysis, but it does mean that if you both move the code and change it at the same time, git cannot see that 'oh, that function came originally from that other file', and now you get worse annotations about where code actually originated.

所以看起来 git 会识别出代码被移动到了别处,但并没有真正说明 merge 期间发生了什么。

最佳答案

不,git 不会做这种程度的改变。当您移动整个文件时,它会注意到;因此,例如,如果您移动了文件,删除了其中的所有其他内容,那么它可能有机会获取更改。但它不会对每个子文件或任何类型的重构进行更改。

关于git - git 如何处理移动到不同文件的 merge 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com