2017-01-03 3 views
2

Я почему-то заставляю git запутываться после переименования каталога в проекте Java. Теперь в моей рабочей копии есть целая куча фантомных файлов для старого имени файла, которое я не могу удалить.Git: Невозможно очистить рабочую копию после рефакторинга имен файлов

Примером одного этих изменений:

Пример Diff: NumberUtils.java

-package com.RedactedCompanyName.Helpers; +package com.RedactedCompanyName.helpers;

Его в основном просто совершает изменение местоположения. Но каждый раз, когда я пытаюсь совершить это изменение, Git (и дерево исходного кода) просто игнорирует его, и они остаются незавершенные модификации

Я перепробовал все различные предложения GIT вокруг StackOverflow:

git reset --head head git clean -rf

Ни один из них, похоже, не работает.

Даже возврат к предыдущему фиксации перед этим рефактором, правильное выполнение и последующее слияние обратно не сработают, потому что это повреждение файла препятствует слиянию.

Я даже попробовал подход «забил землю», где я только что клонировал новую локальную копию репо. Второе, что я совершил первым, это шум снова появился.

ответ

1

К сожалению, вы должны использовать git mv при переименовании своих классов (поскольку стандартные инструменты обычно не знают об этом при переименовании/рефакторинг файлов Java). Если вы не можете этого сделать, вам придется использовать git rm для удаления старых файлов.

Например,

git mv OldNumberUtils.java NumberUtils.java 
git commit -m "Renamed OldNumberUtils to NumberUtils" 

или, в вашем случае (поскольку git не знает о переименовании)

git rm OldNumberUtils.java 
git commit -m "Removing OldNumberUtils, because it was renamed NumberUtils" 
+0

Это сработало! Я предполагаю, что мораль этой истории не остается именами папок в проекте Java, если у вас действительно нет веской причины – Swefnian

Смежные вопросы