Невозможно потянуть b/c "У вас неустановленные изменения", но статус говорит, что изменений нет
Я работаю с разработчиком здесь, который видит странную проблему, с которой я никогда не сталкивался раньше. Он работает над репозиторием и должен вытащить последние изменения от кого-то еще, прежде чем он сможет нажать. Все его изменения совершены.
$ git pull
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.
Что кажется достаточно разумным, пока...
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 3 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)
Скажите что?
Я попробовал git reset --hard HEAD
перед тем, как потянуть, но потянуть все еще не удается.
Только один парень видит это, и он на Mac (OSX 10.6.8). Есть идеи? Я собираюсь вытащить волосы.
Ответы
Ответ 1
Вместо
git pull
попробовать
git fetch
git rebase -p origin/master
Если это не работает, вы можете попробовать
git pull --no-rebase
Как проверить, почему это сообщение происходит
Удостоверьтесь, что вы на ветке, а не на отдельной голове. Rebasing не работает на отсоединенной головке.
Выполните следующие команды, результат не должен выводиться.
git update-index -q --ignore-submodules --refresh
git diff-files --ignore-submodules
git diff-index --cached --ignore-submodules HEAD --
Ответ 2
Работаете ли вы с локальной файловой системой или nfs?
У меня была точно такая же проблема, когда я работал над share nfs.
Я добавил параметр noatime
в команду mount
, и это помогло:
mount -t nfs -o noatime,... device dir
Ответ 3
Вы можете попробовать для $ git stash, а затем попробовать для git pull.
Ответ 4
для меня проблема была с файлами в защищенной папке
-
только эта команда показала, что есть файлы без изменений
git diff-files --ignore-submodules
-
деконфигурировать git-crypt и перекодировать файлы в рабочем дереве
git-crypt lock
Ответ 5
Похоже, что может произойти перебаза. Сначала попробуйте запустить git rebase --abort
.
Более сильные методы очистки локальных объектов включают
-
Удалить все файлы в рабочем каталоге (за исключением директории .git, конечно)
-
git clean -d -x -f
(-d
: каталоги, -x
: проигнорированные файлы, -f
: force. Замените -f
на -n
для сухого прогона)
Затем следуйте инструкциям git reset --hard
и git checkout
.
Еще одна мысль - попробовать git reset --hard HEAD~N
- i.e сбросить количество коммитов назад и надеяться, что притяжение будет работать и ускорить переадресацию локальных.