Почему Git оставляет предыдущие каталоги (например, дубликаты) после переименования? - PullRequest
0 голосов
/ 27 октября 2019

Есть такая ситуация, скажем, у меня есть dev ветка и такая структура проекта MyProj/Foo/MyFile.java. Затем я делаю checkout dev -> dev-test-first, помещаю некоторые файлы и делаю коммит, теперь он выглядит так:

MyProj/Foo/MyFile.java
MyProj/Foo/MyFile2.java
MyProj/Foo/MyFile3.java 

Теперь я делаю еще одну проверку из dev -> dev-test-second и сначала переименую Foo dir вBoo затем удалите MyFile.java, добавьте MyFile4.java и передайте его.

Результат на dev-test-second br

MyProj/Boo/MyFile4.java

Наконец я делаю слияние двух из этих ветвей dev-test-first иdev-test-second с основной dev веткой.

Что я ожидаю получить?

Это

MyProj/Boo/MyFile2.java
MyProj/Boo/MyFile3.java 
MyProj/Boo/MyFile4.java

Верно? Но на самом деле это то, что я получаю

MyProj/Foo/MyFile2.java
MyProj/Foo/MyFile3.java 
MyProj/Boo/MyFile4.java

Вместо переименования git держите два из этих каталогов Boo и Foo, несмотря на тот факт, что он был переименован.

Вопрос: почему происходит это неожиданное поведение?

1 Ответ

1 голос
/ 27 октября 2019

Git отслеживает содержимое. Каталоги отслеживаются только как путь к отслеживаемому контенту, а не как к чему-то, о чем стоит заботиться. Комитеты сообщают вам об эффектах, которые они записывают, ваш коммит dev-test-second должен был сказать ~ delete Foo / MyFile.java;создать Boo / MyFile4.java ~.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...