One branch (refactoringBranch
) had a complete directory restructure. Files were moved chaosly, but the content was preserved.
I tried to merge:
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
git status shows about half of files renaming recognition. But out of 10000 files in the project half wasn't recognized as moved.
One example would be:
# 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
Suggestions?
Prehistory
The refactoring was made outside of git. I did the following:
- Created the
refactoringBranch
originating on master
.
- Dropped the changed structure inside the
refactoringBranch
, meaning I had my changes in some other dir and just copy-pasted them over my git repository.
- Added and committed everything and then tried to merge.
This is was my workflow:
git checkout -b refactoringBranch
cp -R other/place/* ./
git add . -A
git commit -a -m "blabla"
git checkout master
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
The problem arise on the git add . -A
step probably.
Because if rename detection was correct there, I'd assume the merge would go flawless.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…