фатальный: 'origin' не похоже на репозиторий git

98

У меня есть репозиторий moodleв моей учетной записи Github, который я forkedиз официального репозитория.

Затем я клонировал его на свой локальный компьютер. Работало нормально. Я создал несколько веток (под masterветкой). Я сделал несколько коммитов, и все заработало.

Я не знаю, как я получаю следующую ошибку: git push origin master

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Как мне устранить ошибку, не затрагивая мой репозиторий в Github?

я использую Ubuntu 12.10

Содержимое моего .git/configпосле выполнения cat $(git rev-parse --show-toplevel)/.git/configдает:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[branch "master"]
[branch "MOODLE_23_STABLE"]
[branch "MOODLE_24_STABLE"]
[remote "upstream"]
    url = git://git.moodle.org/moodle.git
    fetch = +refs/heads/*:refs/remotes/upstream/*
xan
источник
Распечатайте содержимое .git / config и добавьте сюда
pmod
@pmod: пожалуйста, посмотрите мой обновленный вопрос.
xan
Папка, в которую вы клонировали на локальном компьютере, должна содержать папку .git.
pmod
@xancat $(git rev-parse --show-toplevel)/.git/config
bereal
@pmod: Да, нашел. См. Мой обновленный вопрос.
xan

Ответы:

120

$HOME/.gitconfigэто ваша глобальная конфигурация для git.
Есть три уровня из конфигурационных файлов .

 cat $(git rev-parse --show-toplevel)/.git/config

( Упоминаются по bereal ) Ваш локальный конфиг, локальный по отношению к репо вы клонировали.

вы также можете ввести из своего репо:

git remote -v

И посмотрите, есть ли в нем какой-либо пульт с именем origin.

Если нет, то если этот пульт (который создается по умолчанию при клонировании репо) отсутствует, вы можете добавить его снова:

git remote add origin url/to/your/fork

OP упоминает:

Выполнение git remote -vдает:

upstream git://git.moodle.org/moodle.git (fetch) 
upstream git://git.moodle.org/moodle.git (push)

Итак, originотсутствует ссылка на ваш форк.
См. "В чем разница между originи upstreamв github "

введите описание изображения здесь

VonC
источник
Выполнение git remote -vдает: upstream git://git.moodle.org/moodle.git (fetch) upstream git://git.moodle.org/moodle.git (push)
xan
@xan 'upstream "- это репо, которое вы разветвили. Вам не хватает origin, который является вашей вилкой на github. См. stackoverflow.com/a/15632224/6309 и stackoverflow.com/a/9257901/6309
VonC
Как мне сделать вилку мастером?
Wolfpack'08,
@ Wolfpack'08 «вилка» означает репозиторий (с несколькими ветвями). Переход в ветку - это локальная операция, в которой используется переключатель git: stackoverflow.com/a/57066202/6309 . По вашим собственным словам, что для вас значит «смена вилки на мастерскую»? Изменить локальную ветку в локальном клонированном репозитории (удаленной вилки GitHub)?
VonC
1
Если у вас есть GHY удаленного репо, просто нажмите на него: git push -u ghy master.
VonC
22

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

fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Мне пришлось изменить URL-адрес, используя

git remote set-url origin ssh://git@github.com/username/newRepoName.git

После этого все команды заработали нормально. Вы можете проверить изменение, используя

git remote -v

В моем случае после успешного изменения он показал правильное переименованное репо в URL

[aniket@alok Android]$ git remote -v
origin  ssh://git@github.com/aniket91/TicTacToe.git (fetch)
origin  ssh://git@github.com/aniket91/TicTacToe.git (push)
Аникет Такур
источник
15

Возможно, другая ветка, из которой вы пытаетесь извлечь, не синхронизирована; поэтому перед добавлением и удалением удаленного попробуйте (если вы пытаетесь получить от мастера)

git pull origin master

для меня этот простой вызов решил эти сообщения об ошибках:

  • фатальный: 'master' не похоже на репозиторий git
  • фатальный: не удалось прочитать из удаленного репозитория.
сиви
источник
3

Сначала попробуйте создать удаленный источник, возможно, он отсутствует, потому что вы меняете имя удаленного репо

git удаленное добавление источника URL_TO_YOUR_REPO

Здравко Здравкин
источник
2

Это не ответ на ваш вопрос, но я столкнулся с аналогичным сообщением об ошибке, но по другой причине. Разрешите сделать свой пост для сбора информации.

У меня есть репозиторий git на сетевом диске. Назовем этот сетевой диск RAID. Я клонировал это репо на свой локальный компьютер (LOCAL) и на свой вычислительный кластер (CRUNCHER). Для удобства я смонтировал каталог пользователей своей учетной записи на CRUNCHER на своей локальной машине. Итак, я могу манипулировать файлами на CRUNCHER без необходимости выполнять работу в терминале SSH.

Сегодня я изменял файлы в репо на CRUNCHER через локальный компьютер. В какой-то момент я решил зафиксировать файлы, поэтому совершил фиксацию. Добавление измененных файлов и выполнение фиксации сработало, как я ожидал, но когда я позвонил, git pushя получил сообщение об ошибке, подобное тому, которое было опубликовано в вопросе.

Причина заключалась в том, что я позвонил pushиз репо на CRUNCHER на LOCAL. Итак, все пути в конфигурационном файле были совершенно неправильными.

Когда я осознал свою ошибку, я вошел в CRUNCHER через Терминал и смог нажать фиксацию.

Не стесняйтесь комментировать, если мое объяснение непонятно или вы сочтете мой пост излишним.

Дон Джо
источник
1

У меня была такая же ошибка в git pull origin branchname при установке удаленного источника как путь fs, а не ssh в .git / config :

fatal: '/path/to/repo.git' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly

Это было так (это работает только для пользователей на том же сервере git , у которых есть доступ к git):

url = file:///path/to/repo.git/

Исправлено это так (это работает для всех пользователей, у которых есть доступ к git user (ssh authorizes_keys или пароль)):

url = git@domain.com:path/to/repo.git

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

Waqleh
источник
На самом деле! При использовании SSH /должен быть домен after :. Просто проверьте с помощью git remote -v.
Ноам Манос