2015-06-15 5 views
1

В моем репозитории есть файл (всегда тот), который всегда вызывает у меня проблемы.
Я работаю с coffeescript и генерирую js с ворчащей задачей.
Несколько раз git status сказал мне, что этот файл был изменен и его необходимо добавить. Проблема заключается в том, что мерзавец видит этот файл дублированный:
enter image description hereGit видит дублированный модифицированный файл

Ok..so Я стараюсь, чтобы добавить все с git add :/ и все файлы будут добавлены, включали одну копию AreaChart.js, а другой остается modified и unstaged , Если я попытаюсь выполнить checkout или add его вручную, ничего не происходит, его статус остается modified и нестационарным.

Это ошибка git? Как я могу это исправить?

EDIT:
на самом деле мерзавец видит один и тот же файл с 2-мя разными именами файлов, то есть AreaChart.js и Areachart.js.
Если я ls Я вижу только AreaChart.js (верхний регистр C), как и должно быть.

ПОДСКАЗКА:
Если добавить AreaChart.js (прописные C) -> мерзавец добавляет Areachart.js (в нижнем регистре c)
Если добавить Areachart.js (строчные c) -> мерзавец добавляет Areachart.js (в нижнем регистре) c

EDIT2:

  1. Я выяснил, что оба файла существуют в репозитории
  2. К моему удивлению, я обнаружил, что моя файловая система (mac) не чувствительна к регистру, поэтому, если я создал и touch Test (или, возможно, оба Я вижу только один из них)
  3. выход git config core.ignorecase говорит true
+2

Эти имена файлов на самом деле разные: у второго есть нижний регистр «c». Вы или какой-то другой разработчик работаете в Windows? – Chris

+0

Можете ли вы попробовать 'git add -A: /' Это может записать дополнение * и * удаление, чтобы учесть возможное изменение случая во время генерации. – VonC

+0

@Chris вы правы, но 'ls' внутри каталога говорит мне, что существует только один, с верхним регистром C:' AreaChart.js', как и предполагалось, поэтому git видит 2 файла! – Leonardo

ответ

2

Посмотрите еще раз внимательно

AreaChart.js 

и

Areachart.js 

различные файлы. У одного есть капитал C, а у другого - строчный c-символ.

Поскольку Git чувствителен к регистру, а ваша файловая система - это случай нечувствительный, вы увидите только один из них на вашей файловой системе. Если вы хотите только одного в Git, вы должны удалить другой, с git rm --cached Areachart.js, и убедитесь, что ваши обновления добавлены через git add AreaChart.js.

+0

Спасибо, но нет, прочитайте снова вопрос и отредактируйте – Leonardo

+0

ваше репо на github? Если это так, я могу попробовать, загрузив его. – shunya

+1

@ Leonardo Я не уверен, что вы говорите «нет». Вы попробовали это? Если вы хотите только один в своем репозитории, вам нужно удалить другое (например, 'git rm --cached Areachart.js') –

1

Получите путаницу, когда он находится на файловых системах без регистра.Попробуйте:

git mv --force Areachart.js AreaChart.js 
+0

. Предполагается, что mac должен быть unix-подобным регистрозависимым, не так ли? – Leonardo

+2

Нет, к сожалению, не по умолчанию –

+0

Спустя годы я узнал, что HFS не чувствителен к регистру! Вау.. – Leonardo

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