Наибольшее значение, представляемое n-битным целым числом, равно 2n-1. Как отмечено выше, float
имеет 24 бита точности в значении, которое, как представляется, означает, что 224 не подходит. Однако . Силы 2 в пределах показателя экспоненты точно представлены как 1,0 & times; 2n, поэтому 224 может соответствовать, и, следовательно, первое непредставимое целое число для float
равно 224 + 1. Как указано выше. Опять же.
Прямой причиной ошибки является то, что да, невозможно использовать git-add
с открытым репозиторием. Голый репозиторий по определению не имеет рабочего дерева. git-add
берет файлы из рабочего дерева и добавляет их в индекс, готовясь к фиксации.
Возможно, вам, возможно, потребуется немного подумать о вашей настройке. GIT_DIR - это каталог репозитория, используемый для всех команд git. Вы действительно пытаетесь создать единый репозиторий для всего, что вы отслеживаете, возможно, повсюду в вашей системе? Git-репозиторий по своей природе отслеживает содержимое одного каталога. Вам нужно будет установить GIT_WORK_TREE
путь, содержащий все, что вы хотите отслеживать, а затем вам понадобится .gitignore
, чтобы заблокировать все, что вам не интересно отслеживать.
Возможно, вы 'пытается создать репозиторий, который будет отслеживать только c:\www
? Затем вы должны поместить его в c:\www
(не устанавливайте GIT_DIR). Это нормальное использование git с репозиторией в каталоге .git каталога верхнего уровня вашего «модуля».
Если у вас нет действительно веской причины, я бы рекомендовал придерживаться way git любит работать. Если у вас есть несколько вещей для отслеживания, вы, вероятно, хотите несколько репозиториев!
Кроме того, вы, вероятно, находитесь в подпапке .git, перемещаете одну папку в свой корень проекта.
Создать голый репозиторий GIT
Небольшой разбор: git не может самостоятельно создать обычный голый репозиторий. Глупый git действительно.
Чтобы быть точным, невозможно клонировать пустые репозитории. Таким образом, пустой репозиторий - бесполезный репозиторий. Действительно, вы обычно создаете пустой репозиторий и сразу же заполняете его:
git init
git add .
Однако git add невозможно при создании открытого репозитория:
git --bare init
git add .
дает ошибку «fatal: эта операция должна выполняться в дереве работ».
Вы также не можете проверить это:
Initialized empty Git repository in /home/user/myrepos/.git/
fatal: http://repository.example.org/projects/myrepos.git/info/refs not found: did you run git update-server-info on the server?
git --bare init
git update-server-info # this creates the info/refs file
chown -R <user>:<group> . # make sure others can update the repository
Решение состоит в том, чтобы создать другой репозиторий в другом месте, добавить файл в этом репозитории и вставьте его в открытый репозиторий.
mkdir temp; cd temp
git init
touch .gitignore
git add .gitignore
git commit -m "Initial commit"
git push (url or path of bare repository) master
cd ..; rm -rf temp
надеюсь, что это поможет u
$ git --bare init bare.git
Initialized empty Git repository in /home18/cbailey/gittest8/bare.git/
$ git clone bare.git non-bare
Cloning into 'non-bare'... \\ done. \\ warning: You appear to have cloned an empty repository.
– CB Bailey
9 July 2012 в 09:04
В моем случае я был в той же папке, что и файл .git для моего репо. Мне нужно было идти на один уровень каталогов, он решил это.
Просто клонировать один и тот же проект в другой папке и скопировать папку .git / в ваш проект.
Пример
Создать временную папку:
mkdir temp
переключиться на папку temp
cd temp/
клонировать один и тот же проект в папке temp:
git clone [-b branchName] git@path_to_your_git_repository
скопировать папку .git в ваш проект:
cp -R .git/ path/to/your/project/
переключитесь на ваш проект и запустите git status
удалите временную папку, если вы закончили.
надеюсь, что это поможет кому-то
Если ни один из вышеперечисленных способов не поможет вам, посмотрите на трассировку вызова под этим сообщением об ошибке ("fatal: This operation . . ."
) и найдите сценарий и строку, которая поднимает фактическую ошибку. Как только вы обнаружите этот вызов (), отключите его и проверьте, завершена ли операция, которую вы пытаетесь выполнить, даже с некоторыми предупреждениями / сообщениями - на данный момент их игнорировать. Если это так, то, наконец, после завершения может указать часть операции, которая не была успешно завершена. Теперь, примените эту часть отдельно.
Относительно логики к моему делу, я получал это сообщение об ошибке "fatal: This operation . . ."
, когда пытался получить код Android-x86 с помощью repo sync . . .
. и трассировка вызова показала raise GitError("cannot initialize work tree")
как вызов error (), вызывающий указанное выше сообщение об ошибке ("fatal: . . ."
). Итак, после комментирования того, что GitError()
в .repo/repo/project.py
, repo sync . . .
продолжался и, наконец, указал ошибку для трех проектов, которые не были правильно синхронизированы. Я просто удалил их папки *.git
из их соответствующих путей в исходном дереве Android-x86 локально и снова запустил repo sync . . .
и пробовал успех!
На всякий случай, что случилось со мной, происходит с кем-то другим, мне нужно сказать следующее: я был в моей директории .git в своем проекте, когда получал эту ошибку. Я искал и искал ответы, но ничего не получилось. Все, что мне нужно было сделать, это вернуться в нужный каталог. Для меня это был момент лица. В случае, если кто-то еще такой глупый, как я, надеюсь, вы нашли этот ответ полезным.
У меня была эта проблема, потому что .git/config
содержал worktree = D:/git-repositories/OldName
. Я просто изменил его на worktree = D:/git-repositories/NewName
. Я обнаружил, что, поскольку я использовал git gui , который показал более подробное сообщение об ошибке:
В том же выпуске я получил следующие шаги:
, после чего он начинает работать.
Если текущая (не-голая) проверка начнет давать эту ошибку, проверьте файл .git / config; если core.bare
истинно, удалите эту конфигурационную строку
git config --unset core.bare
. – Matthias Urlichs 10 January 2015 в 11:42