Git推送错误:“origin似乎不是一个git仓库”

100
我正在按照这里的说明创建一个Git存储库。一切都进行得很顺利,直到最后一行:
$ git push -u origin master  

致命错误:'origin' 不是一个git仓库
致命错误:远程终端意外挂断

我在OS X 10.6.8上使用的是git版本1.7.11.3。

$ git remote -v  

不返回任何内容

存储库的配置文件:

[core]
repositoryformatversion = 0  
filemode = true  
bare = false
logallrefupdates = true  
ignorecase = true  

我不得不使用sudo visudo命令打开sudoers文件,并在其中添加以下内容(在#用户特权规范下):

git ALL=(ALL) ALL.  
现在如果我这样做:
$ git remote add origin /Volumes/500GB/git-repository/myproject.git  

它没有显示错误,但我在仓库里看不到任何代码(它有前面提到的分支、钩子等目录...)

如果我执行以下操作:

$ git push -u origin master  
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

$ git remote -v   
origin /Volumes/500GB/git-repository/myproject.git (fetch)     
origin /Volumes/500GB/git-repository/myproject.git (push)

1
这是一个相当常见的错误。请查看此线程以获取帮助:https://dev59.com/R2LVa4cB1Zd3GeqPwnhV - tymeJV
2
“git remote -v” 命令的输出是什么? - brimble2010
你的指令链接已经丢失,你还记得它是什么吗? - user456814
也许在这里:http://git-scm.com/book/zh/v2/Git-基础-远程仓库的使用 - Al Lelopath
14个回答

90

正如在che的回答中已经提到的添加远程部分,我相信你还没有掌握。

关于您编辑本地USB驱动器上添加远程的问题。首先,如果您想让您的存储库成为共享存储库,即能够推送/拉取/获取/合并等操作,您必须拥有一个“裸仓库”。

要创建一个裸/共享存储库,请转到所需位置。在您的情况下:

$ cd /Volumes/500gb/   
$ git init --bare myproject.git

关于创建裸仓库的更多信息,请查看这里

一旦您在所需位置设置了裸仓库,现在可以将其作为远程仓库添加到您的工作副本中。

$ git remote add origin /Volumes/500gb/myproject.git

现在,您可以将更改推送到您的代码库

$ git push origin master

38

以下是来自 Github 的指示:

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/tqisjim/google-oauth.git
git push -u origin master

这是实际奏效的方法:

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/tqisjim/google-oauth.git
git clone origin master

克隆之后,push 命令将通过提示输入用户名和密码来成功


像魔法一样运作良好。 - Trect

29

很可能远程仓库不存在或者你添加了错误的仓库。

你需要先移除 origin,然后重新添加它:

git remote remove origin
git remote add origin https://github.com/username/repository

这对我真的很有用!谢谢! - Chandra Shekhar

12

您的配置文件中没有包含对“origin”远程的任何引用。该部分如下所示:

[remote "origin"]
    url = git@foo.com:repository.git
    fetch = +refs/heads/*:refs/remotes/origin/*

在使用之前,您需要使用git remote add添加远程。


在git中,你推送代码是因为你想把它推到除了你正在工作的那个repo之外的另一个repo。如果你只想拥有一个本地的git仓库,那么你已经完成了。如果你想要其他东西,你可能需要查看一些教程来解释远程和本地仓库,可能从这里开始:http://git-scm.com/book/en/Getting-Started-Git-Basics。 - che
我想要代码的两份副本。一份在Mac的硬盘上(工作目录),另一份在外部USB驱动器上(Git目录)。如果我有代码的两份副本和我所采取的步骤(即原始帖子中除最后一步之外的所有步骤),那么我就完成了。但是我在外部USB驱动器上没有看到任何源代码。我看到一个目录结构,其中包含分支、钩子、信息、对象、引用等目录,但没有源代码。 - Al Lelopath
如果你缺少远程仓库,那么你可能没有在最初链接的指南中执行git remote add部分。无论如何,如果你成功地推送到另一个仓库,它不会自动进行检出,你需要在仓库中手动执行(但你不必这样做,因为文件仍然在 git 结构中)。还可以参考这个答案:https://dev59.com/EHI-5IYBdhLWcg3wYXP8#1887474 - che

6
当你在 bitbucket.org 上创建一个仓库时,它会给出设置本地目录的指示。很可能你只是忘记运行以下代码了: git remote add origin https://username@bitbucket.org/username/reponame.git

5
我会谦虚地分享我的简短答案,知道我回答这个问题已经非常晚了。 这里有一个简单干净的解释,解决了我的问题 此外,由于我使用了SSH密钥,我使用了以下命令:
  • $ git remote add origin git@github.com:{your-username}/{your-remote-repo-branch}
例如,它看起来像:
  • $ git remote add origin git@github.com:aniketrb-github/microservices.git
如果您使用HTTPS URL,请参考@sunny-jim上面提供的答案。
如果我错了,请纠正我。谢谢。

5
也许您忘记在远程运行“git --bare init”了?这就是我的问题。

3

我的情况略有不同 - 不小心改变了Git仓库的所有者(在我的情况下是project.git目录),将所有者改回git用户即可解决问题。


3

如果您使用HTTPS,请执行以下操作-

git remote add origin URL_TO_YOUR_REPO

2
为了解决这个问题,我只需创建一个新文件夹并放入一些新文件,然后使用以下命令。
* git add .
* git commit 
* git remote add master `your address`

然后它要求我登录。 输入您的用户名和密码。 之后

git pull 
git push origin master

你已经将代码推送到了你的 Github 上


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接