Git clone терпит неудачу из-за неотслеживаемых файлов, но все ветви чистые - PullRequest
2 голосов
/ 05 января 2010

Я пытаюсь клонировать git-репозиторий. Клон завершается ошибкой со следующим сообщением:

Untracked working tree file ... would be overwritten by merge.

Я запустил git clean на всех ветках; ни у кого нет неотслеживаемых файлов.
Файл, помеченный как неотслеживаемый, используется только в той ветке, в которой я сейчас работаю, и отслеживается.

Кроме того, когда я извлекаю основную ветвь, а затем извлекаю ветку, над которой я первоначально работал, проверка выполняется успешно, но печатает имя предположительно необнаруженного файла. Есть идеи, что это значит?

Checking out files: 100% (477/477), done.

M       path-to-file-idenetified-as-untracked    
Switched to branch "Original_branch_name"

Как я могу заставить клона работать?

Я читал о клонировании. Я делаю клон, потому что хочу поделиться этим с кем-то, у кого в настоящее время нет хранилища.

Вот то, что я ввел, слегка отредактировано. Например, я сделал несколько команд для CD, которые не показаны.

$ git clone app.git clone/app.git
Initialized empty Git repository in /cygdrive/c/clone/app.git/.git/
error: Untracked working tree file 'C:/app.git/include/template/foo.xml' would be overwritten by merge.

$ git status
# On branch GT
nothing to commit (working directory clean)

$ git rm include/template/foo.xml
rm 'include/template/foo.xml'

$ git commit -m "Removed include/template/foo.xml because clone was failing with the message untracked working tree file would be overwritten by merge "
[GT]: created 77ca4ec: "Removed include/template/foo.xml because clone was failing with the message untracked working tree file would be overwritten by merge "
 1 files changed, 0 insertions(+), 89 deletions(-)
 delete mode 100755 include/template/foo.xml

$ git clone app.git clone/app.git
Initialized empty Git repository in /cygdrive/c/clone/app.git/.git/
Checking out files: 100% (522/522), done.

$ git commit -m "Added file deleted in previous commit after successfully cloning repository with file deleted"
[GT]: created f3eb7e8: "Added file deleted in previous commit after successfully cloning repository with
 file deleted"
 1 files changed, 89 insertions(+), 0 deletions(-)
 create mode 100755 include/template/foo.xml

$ git clone app.git clone2/app.git
Initialized empty Git repository in /cygdrive/c/clone2/app.git/.git/
error: Untracked working tree file 'C://app.git/include/template/foo.xml' would be overwritten by merge.

Ответы [ 3 ]

3 голосов
/ 05 января 2010

Какую версию Git вы используете? А на какой платформе?

В зависимости от ОС может возникнуть проблема с именем файла, чувствительная к регистру, которая может привести к появлению этого сообщения об ошибке, как показано в этой теме

Я переименовал CONTRIB/ChangeLog в CONTRIB/ChangeLog.old и попытался снова, и на этот раз он пожаловался на contrib/README.
Есть ошибки из-за того, что я сделал? I

Я полагаю, что это может быть вызвано тем, что я переименовал CONTRIB в contrib.
В системе, в которой нет различий между именами в верхнем и нижнем регистре, это может привести к конфликту?

Попробуйте удалить весь каталог CONTRIB. Если это не удастся, попробуйте получить новый клон репо.

Это исправлено. Спасибо.


Но, как только я добавил копию файла (которая мне нужна) и зафиксировал ее, я попытался снова клонировать и вернулся к исходному сообщению об ошибке

Это мне кричит core.ignorecase установлено на истину

core.ignorecase
Если true, этот параметр позволяет использовать различные обходные пути, чтобы git работал лучше на файловых системах, не чувствительных к регистру, например, FAT.
Например, если листинг каталога находит «makefile», когда git ожидает «Makefile», git будет считать, что это действительно тот же файл, и будет продолжать помнить его как «Makefile».

По умолчанию установлено значение false, за исключением того, что git-clone(1) или git-init(1) будут проверять и устанавливать core.ignorecase true, если это необходимо, при создании хранилища.

Не могли бы вы проверить, содержит ли git config -l значение core.ignorecase?

0 голосов
/ 06 января 2010

git clone - для создания нового репозитория, являющегося клоном существующего репозитория; то есть все те же файлы, ветви и теги.

Если у вас есть репозиторий, вы обычно хотите использовать git pull, чтобы вывести новые изменения и объединить их с активной веткой, или git fetch, чтобы получить ваши удаленные ветви отслеживания без слияния их с текущей активной веткой (за которой может последовать git merge, если вы решите, что хотите объединить их).

См. Учебник Git для примера того, как клонировать репо и работать с клоном.

0 голосов
/ 05 января 2010

Уведомление о том, что файл изменен:

M       path-to-file-idenetified-as-untracked

означает, что у вас есть локальные, незафиксированные изменения в рассматриваемом файле (который отслеживается только в ветке).

Когда вы пытаетесь объединить ветку с вашим мастерским git, вы отказываетесь перезаписать ваши незафиксированные изменения версией из подтвержденной ветки.

Попробуйте внести изменения в ваш файл в ветке перед попыткой слияния.

Кстати, я предполагаю, что вы имеете в виду «слияние», а не «клон» в вашем вопросе. Вы не должны запускать 'git clone' поверх существующего хранилища git.

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