gpt4 book ai didi

git - 让 Git 跟踪重命名和编辑的文件

转载 作者:IT王子 更新时间:2023-10-29 00:35:40 33 4
gpt4 key购买 nike

关于在Git中重命名文件的问题have been asked之前,但我无法针对我的特定问题找到解决方案。

我已经移动并编辑了多个文件(我没有使用 git mv - 不幸的是现在已经太晚了)。现在我想要它,所以当我的同事从我的存储库中 pull 出时,对这些相同的文件进行了自己的编辑(不移动它们),它成功地将我的更改与他在文件的新位置中的更改 merge 。要成功 merge ,Git 显然需要知道这些文件是相同的。

Git 是否足够聪明,可以自行解决这个问题?似乎很难相信。如果是这样,我如何确定 Git 会选择特定的文件移动 - 即使内容已更改?

最佳答案

Git 实际上并不跟踪存储库中的重命名,它使用差异试探法来确定您是否将文件重命名为另一个文件。也就是说,如果您 git mv 一个文件,然后完全替换其中的内容,它被认为是重命名,您需要使用 git mv 来检测重命名。

例如:

% mv d.txt e.txt
% git rm d.txt
rm 'd.txt'
% git add e.txt
% git commit -m"rename without git mv"
[master f70ae76] rename without git mv
1 file changed, 0 insertions(+), 0 deletions(-)
rename d.txt => e.txt (100%)
% git diff --summary --find-renames HEAD~1 HEAD
rename d.txt => e.txt (100%)

同样的,git mv并不意味着文件会被重命名,它仍然会使用diff算法:

% git mv e.txt f.txt
% echo "Completely replacing f.txt" > f.txt
% git add f.txt
% git commit -m"git mv doesn't help here"
[master 068d19c] git mv doesn't help here
2 files changed, 1 insertion(+), 14 deletions(-)
delete mode 100644 e.txt
create mode 100644 f.txt
% git diff --summary --find-renames HEAD~1 HEAD
delete mode 100644 e.txt
create mode 100644 f.txt

关于git - 让 Git 跟踪重命名和编辑的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12785160/

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