Fatal not a valid object name master git что за ошибка
fatal: Not a valid object name: ». #348
Comments
brianjmurrell commented Feb 28, 2018
So, per #345 and #346 I’m trying some pretty simple workflows with release/0.4.0 and still seem to still be running into some problems.
I did a git subrep clone with 0.4.0 and then subsequently the subrepo I cloned got a new commit pushed to it so I thought it would be simple to get that new code into my subrepo:
But as you can see, not so much. What am I doing wrong?
The text was updated successfully, but these errors were encountered:
grimmySwe commented Mar 1, 2018
It can be a fact that you have done some rebase that the d9025bcbee964fa14385a69d83f3986e29964105 is no longer part of your current history.
If that is the case, you might need to reclone the subrepo if you have no local changes.
I have a work in progress branch where there is a «-s» squash flag for this case, then you ignore previous history and only care about the last parent.
brianjmurrell commented Mar 1, 2018 •
Ahh. So to be clear, I cannot rebase (i.e. and reorder patches) once I have done the git subrepo clone such that the hash of the subrepo commit changes.
Of course that makes total sense now that I say it out loud.
I’ll keep this in mind in the future and just make I do my subrepo clone operation where I need it in the order of commits.
grimmySwe commented Mar 1, 2018
As you say, you need to pay a little attention to this when/if you rebase.
vjpr commented Oct 31, 2018 •
Just including this for my understanding of the problem:
And when subrepo tries to get the commits since you last scanned your commit history for subdir-modifying commits, it will fail because the parent is non-existent (because it was rewritten).
Easy way out
What if my subrepo remote is shared and others have made changes to it?
I don’t know how to recover from this. Maybe @grimmySwe has an idea?
Как исправить ошибку GIT: объектный файл пуст?
Когда я пытаюсь зафиксировать изменения, я получаю эту ошибку:
Есть идеи, как решить эту ошибку?
Я пытался git fsck у меня есть:
У меня была аналогичная проблема. В моем ноутбуке разрядился аккумулятор во время операции git. Бу.
У меня не было никаких резервных копий. (NB Ubuntu One не является решением для резервного копирования для git; он будет перезаписывать ваш нормальный репозиторий вашим поврежденным.)
Шаг 3: Удалить пустой файл. Я понял, какого черта; все равно пусто
Шаг 4: После удаления всех пустых файлов я в конечном итоге приступил к git fsck работе:
Шаг 7: Обратите внимание, что из шага 6 мы узнали, что HEAD в данный момент указывает на самый последний коммит. Итак, давайте попробуем просто взглянуть на родительский коммит:
Шаг 8: Теперь нам нужно указать HEAD 9f0abf890b113a287e10d56b66dbab66adc1662d.
Который не жаловался.
Шаг 9: Посмотрите, что говорит fsck:
Шаг 12: Догоняю с моими местными правками:
Надеюсь, что это может пригодиться людям в будущем. Я рад, что это сработало.
Объектные файлы git повреждены (как указано в других ответах). Это может произойти во время поломок машины и т. Д.
(Обязательно сделайте резервную копию вашей папки git-репозитория!)
PS. Этот ответ предполагает, что у вас есть удаленная копия вашего git-репозитория (например, на GitHub), а поврежденный репозиторий является локальным репозиторием, который привязан к удаленному репозиторию, который все еще находится в такте. Если это не так, не пытайтесь исправить это так, как я рекомендую.
Эта ошибка происходит со мной, когда я нажимаю коммит и мой компьютер зависает. Вот как я это исправлю.
Шаги, чтобы исправить
показать пустой / поврежденный объектный файл
Я получил fatal: bad object HEAD сообщение
Я удаляю index для сброса
Неустранимый: не удалось разобрать объект ‘HEAD’.
просто чтобы проверить, что происходит
Я выбираю последний commit hash
проверить мое исправление
Примечание: шаги начинаются, когда я попал на этот вопрос и использовал ответы в качестве ссылки.
Я решил это, удалив различные пустые файлы, которые обнаружил git fsck, и затем запустил простое git pull.
Я разочарован тем, что теперь, когда даже файловые системы реализуют журналирование и другие «транзакционные» методы, чтобы сохранить здравый смысл, git может перейти в поврежденное состояние (и не сможет восстановиться сам по себе) из-за сбоя питания или нехватки места на устройстве.
У меня была та же самая проблема: после извлечения удаленного хранилища, когда я сделал состояние git, я получил: «ошибка: объектный файл (. ) пуст» «фатальный: свободный объект (. ) поврежден»
Я не знаю точно, что произошло, но эти инструкции, казалось, сделали все чисто.
Потому что мне приходится регулярно перезагружать виртуальную машину, поэтому почему-то эта проблема случается со мной очень часто. После нескольких раз я понял, что не могу повторять процесс, описанный @ Nathan-Vanhoudnos, каждый раз, когда это происходит, хотя он всегда работает. Тогда я выяснил следующее более быстрое решение.
Шаг 1
Переместите весь репо в другую папку.
Шаг 2
Снова клонируйте репо из оригинала.
Шаг 3
Шаг 4
Шаг 5
Я уверен, что через несколько раз вы сможете сделать это очень быстро.
Это все. Может быть, это не самый лучший способ, но я думаю, что это так практично.
В моем случае эта ошибка произошла из-за того, что я набирал сообщение о коммите и мой блокнот выключился.
Я сделал эти шаги, чтобы исправить ошибку:
решить мою проблему
Вот действительно простой и быстрый способ решения этой проблемы, если у вас есть локальное репо со всеми необходимыми ветками и коммитами, и если вы в порядке с созданием нового репо (или удалением репо сервера и созданием нового) на своем месте)
Это сохраняет всю историю коммитов и веток, которые у вас были в вашем локальном репо.
Если у вас есть соавторы в репо, то я думаю, что во многих случаях все ваши соавторы должны также изменять удаленный URL-адрес своего локального репо и, при необходимости, выдвигать любые коммиты, которые у них есть, которых нет на сервере.
Это решение сработало для меня, когда я столкнулся с этой же проблемой. У меня был один сотрудник. После того, как я перенес свое локальное репо в новое удаленное репо, он просто изменил свое локальное репо, чтобы оно указывало на URL удаленного репо, и все работало нормально.
Я предполагаю, что у вас есть пульт со всеми соответствующими изменениями, уже внесенными в него. Я не заботился о локальных изменениях и просто хотел избежать удаления и повторного создания большого хранилища. Если у вас есть важные локальные изменения, вы можете быть осторожнее.
Он по-прежнему удаляет только один файл за раз, поэтому вы можете вызвать его в цикле, например:
Проблема в том, что он больше не выводит ничего полезного, поэтому вы не знаете, когда он закончится (через некоторое время он просто не должен делать ничего полезного)
Теперь он примерно в два раза быстрее, но выдает «состояние».
После этого я поэкспериментировал с предложениями в этой ветке и, наконец, дошел до того, что смог git stash и git stash drop много испорченного материала.
первая проблема решена
$ git remote prune origin
для хорошей меры и
How to resolve stderr: fatal: Not a valid object name HEAD in jenkins?
I am trying to get the latest code from git through Jenkins. Everytime I do so I get the following error. I have followed in through a few links on stackoverflow foe this but none of them seem to resolve the issue.
2 Answers 2
I believe you have two issues here.
is actually relatively harmless. We encountered the same one. This is caused by the fact that the read-tree call is done before the checkout. The ref HEAD gets set after the checkout. This error in our case did not cause any further problems. We managed to get rid of this one by not performing a full wipe before a checkout, but only a clean.
The real problem is the second error:
We also encountered this problem. In our case this was caused by incorrect paths in the sparse checkout. Double check if the paths you entered there are correct.
If you are seeing a Not a valid object name HEAD error, but the output of git symbolic-ref HEAD seems fine (e.g. refs/heads/master ), a possible culprit is mismatch between the Git versions being used, for example if Git in the local machine is at 2.x, but the remote machine is still at 1.x. Update your Git install everywhere to get rid of this particular issue.
Not the answer you’re looking for? Browse other questions tagged git jenkins or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.12.2.40878
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Проблема с клонированием Git репозитария
Столкнулся с неприятной проблемой при работе с Git, к сожалению все попытки найти решение самостоятельно или в Google успехом не увенчались, надеюсь на помощь коллективного хабраразума.
Ситуация выглядит следующим образом:
Есть сервер (Linux Debian), на нем установлен Git 1.7.2 (последняя версия из stable ветки debian’а) и gitolite 3. Также на этом сервере поднят Apache/PHP/MySQL для развертывания тестовых версий сайтов, разработка которых ведется под Windows.
На сервере под усправлением Gitolite находятся два репозитария. С клонированием одного из них проблем не возникает, лог клонирования репозитария (имена домена и репозитария изменены, но это к делу отношения не имеет):
Windows 7, Git 1.7.10
git clone git@example.com:project1
Cloning into ‘project1’.
remote: Counting objects: 4240, done.
remote: Compressing objects: 100% (3301/3301), done.
remote: Total 4240 (delta 970), reused 4153 (delta 911)
Receiving objects: 100% (4240/4240), 4.96 MiB | 181 KiB/s, done.
Resolving deltas: 100% (970/970), done.
Linux Debian x64, Git 1.7.2.5
git clone git@example.com:project1
Cloning into project1.
remote: Counting objects: 4240, done.
remote: Compressing objects: 100% (3301/3301), done.
remote: Total 4240 (delta 970), reused 4153 (delta 911)
Receiving objects: 100% (4240/4240), 4.96 MiB, done.
Resolving deltas: 100% (970/970), done.
Со вторым проектом со вчерашнего дня творятся странности:
Windows 7, Git 1.7.10
git clone git@example.com:project2
Cloning into ‘project2’.
remote: Counting objects: 4084, done.
remote: Compressing objects: 100% (3213/3213), done.
remote: Total 4084 (delta 747), reused 4002 (delta 710)
Receiving objects: 100% (4084/4084), 303.93 MiB | 168 KiB/s, done.
Resolving deltas: 100% (747/747), done.
Linux Debian x64, Git 1.7.2.5
git clone git@example.com:project2
Cloning into project2.
remote: Counting objects: 3760, done.
remote: Compressing objects: 100% (3137/3137), done.
Receiving objects: 100% (3760/3760), 303.88 MiB | 13.81 MiB/s, done.
Resolving deltas: 100% (537/537), done.
remote: Total 3760 (delta 537), reused 3694 (delta 513)
error: refs/remotes/origin/master does not point to a valid object!
error: Trying to write ref refs/heads/master with nonexistant object 37f88348b734c899a7ca837dab947d69a8177a94
fatal: Cannot update the ref ‘HEAD’.
Я выделил цифры чтобы было заметно что они отличаются. Вопрос — как такое может быть? Навскидку разница между командами в операционной системе, минорной версии Git и пользователе, чей ключ используется для авторизации. Но при тех же отличиях первый репозитарий нормально клонируется.
Проблема началась после того как вчера при попытке pull’а на сервере (а он производится автоматически через hook в Gitolite) произошел конфликт. Но, опять же, это вряд ли должно было повлиять на клонирование, тем более что для удаленного Windows клиента клонирование проходит нормально.
Кто-нибудь может указать направление в котором мне стоит копать чтобы решить данную проблему?
Получение «fatal: Not a git repository» при попытке удаленного добавления репозитория Git
Я представляю себя Git, следуя этому руководству:
все работает нормально до той части, где РЕПО добавляется к моей локальной машине:
(после замены имени пользователя, NFSNSERVER и REPOAME с правильными именами) я получаю сообщение об ошибке:
можете ли вы помочь мне пройти этот шаг?
22 ответов
вы ввели локальный репозиторий Git, в который предполагается добавить этот пульт?
вам нужно cd в репозиторий / рабочую копию, или вы не инициализировали или не клонировали репозиторий в первую очередь, в этом случае вам нужно инициализировать РЕПО в каталоге где вы хотите разместить РЕПО:
или клонировать репозиторий
Примечание: это не отвечает на общую проблему, которая была проблемой OP, но к другой проблеме, где это сообщение об ошибке может возникнуть. Мне не хотелось делать новый вопрос, чтобы записать этот ответ, скажите мне, Должен ли я сделать это вместо этого 😛
так как у меня не было ничего, что действительно нуждалось в сохранении, я просто пошел с dummy way и сделал.
по крайней мере для меня reflog ( git reflog ) исчезнуть полностью. Следовательно, если вы сделаете сброс, и были некоторые изменения, которые вы хотели предотвратить, я не уверен, что вы можете вернуть их после сброса. Поэтому убедитесь, что у вас есть все изменения, которые вы не можете потерять, в конечном счете, просто скопировав клон перед попыткой этого.
проблема пустой головной файл.
в командной строке / CLI вы получите эту ошибку, если ваш текущий каталог не является репозиторием. Итак, вы должны сначала CD в репо.
эта проблема возникла у меня после того, как я переместил местоположение проекта git в файловой системе. Когда я запускал некоторые команды git, произошла ошибка, например:
Я нашел в /home/rospasta/path_old/gitprojecta/.travis/.git был записан абсолютный путь к старому местоположению проекта. Вручную обновление этого пути нового местоположения решило проблему для меня.
поэтому моя проблема может быть или не быть проблемой git, но HTH.
затем снова инициализируйте git-РЕПО
просто введите следующее в cmd или git shell или любом другом терминале:
для этого вам нужно ввести одну команду, которая отсутствует в командах bitbucket
пожалуйста, попробуйте git init.
устранение:
даже у меня была такая же проблема. я написал сценарий оболочки, который будет создавать резервные копии всех моих кодов в моем РЕПО git в рабочие дни недели в 17: 55 с помощью crontab. увидев журналы cron, я нашел вышеупомянутую проблему.
и еще одна вещь на cmd перейдите в свой репозиторий git или cd, чтобы где ваш клон находится в вашем окне, обычно они будут храниться в документах под GitHub cd Document/Github / yourproject после этого вы можете иметь любые команды git
поэтому перейдите в каталог в каталог репозитория, где у вас есть проверка кода из git, а затем запустите эту команду.
GIT_DIR должен быть unset: unset GIT_DIR
в моем случае я обнаружил, что git в windows стал чувствительным к регистру для буквы диска с некоторого момента.
после обновления двоичного файла git в командах cli windows, которые раньше работали, остановились. например, путь в скрипте был D:\bla\file.txt, в то время как команда git принято только d:\bla\file.txt
все вернулось в норму, и git также распознал мои измененные / неустановленные файлы.
я исправил это, восстановив корневые файлы.
У меня была эта проблема с плагином Jenkins Git после проблем аутентификации с GitLab. Дженкинс докладывал о Хадсоне.подключаемый модуль.мерзавец.GitException: [. ]stderr: GitLab: проект, который вы искали, не найден. фатальная ошибка: не удалось прочитать из удаленного репозитория.’
однако, если я сделал «git clone» или «git fetch» непосредственно из окна Дженкинса (командной строки), он работал без проблем.
проблема была решена с помощью удаление весь /рабочая область каталог в папке Jenkins jobs для этого конкретного задания, например