Почему я иногда вижу & ldquo; имя файла «имя файла» не обновлено. Невозможно объединить. & Rdquo; после «git reset --hard» и «git pull»?

Иногда, когда я делаю следующее ...

git reset --hard
HEAD is now at 0123abde comment is here
git pull
Updating 0123abde..456789fa

Я получаю ошибку ...

error: Entry 'filename' not uptodate. Cannot merge.

Единственный обходной путь, который я нашел, - это «git reset --hard», удалить поврежденные файлы, а затем «git pull». Это не кажется мне правильным. Не следует ли с помощью аппаратного сброса удалить все локальные изменения, чтобы я мог получать последние версии без проблем слияния? Я использую Git неправильно? :)

Это на машине CI, поэтому любые изменения здесь нежелательны. Я использую git версии 1.6.1.9.g97c34 в Windows Vista.

16
задан James Bobowski 18 May 2009 в 16:24
поделиться

2 ответа

Общая идея « Запись 'filename' не обновлена. Невозможно объединить. »:

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

было сообщено , что это сообщение могло быть "ложным" во время (возможно, потому что " git pull " не обновлял индекс перед попыткой слияния), но исправление было в Git1.6.1.
Однако он все еще может быть в mSysGit 1.6.1, так что вы видите ту же ошибку в более поздней версии mSysGit? (например, 1.6.3)

12
ответ дан 30 November 2019 в 12:01
поделиться

Это также могло бы произойти из-за использования --skip-worktree или --assume-unchanged, команды и мерзавец предотвращают Вас, чтобы сделать: checkout, merge, rebase или pull.

пропущенные файлы/каталог не могли бы работать, если мы делаем следующий подход:

  • git stash
  • git merge --abort, &
  • git rm --cached это также не работает на skipped, регистрируют эту команду, бросит: fatal: pathspec [file] did not match any files вместо этого

Проверка на решение для [1 115] файлы здесь

$: git update-index --really-refresh
<file>: needs update

Дополнительный, если Вы хотите удалить skipped или неотслеженный dir/файлы на Вашем локальном

$: git reset --hard

, Если ни одна из вышеупомянутых команд не устраняет проблему, просто необходимо отменить файл от [1 117] дерево, например:

$: git update-index --no-skip-worktree [file]

, Если Вы skipped каталог, просто пойдите сюда для детали, как пропустить/отменить рекурсивно, например:

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --skip-worktree" \;
1
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: