维基百科解释了自动重命名检测:
简而言之,给定修订版N中的文件,修订版N-1中的同名文件是其默认祖先.但是,当修订版N-1中没有同名文件时,Git会搜索仅存在于修订版N-1中的文件,并且与新文件非常相似.
重命名检测显然归结为类似的文件检测.这个算法记录在哪里吗?很高兴知道自动检测到哪种变换.
一个分支(refactoringBranch)有一个完整的目录重组.文件被混乱地移动,但内容被保留.
我试图合并:
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
git status显示大约一半的文件重命名识别.但是项目中的10000个文件中有一半未被识别为移动.
一个例子是:
# On branch master
# Changes to be committed:
# deleted: 404.php
# new file: public_html/404.php
...
# deleted: AnotherFile.php
# new file: public_html/AnotherFile.php
...
# renamed: contracts/css/view.css -> public_html/contracts/css/view.css
Run Code Online (Sandbox Code Playgroud)
建议?
重构是在git之外进行的.我做了以下事情:
refactoringBranch原产地master. refactoringBranch,这意味着我在其他目录中进行了更改,只是将它们复制粘贴到我的git存储库中. 这是我的工作流程:
git checkout -b refactoringBranch
cp -R other/place/* ./
git add . -A
git commit -a -m "blabla"
git checkout master
git merge --no-ff …Run Code Online (Sandbox Code Playgroud) git ×2