git push失败 - 我做错了什么?

时间:2011-07-07 00:50:11

标签: git

在本地配置和使用git似乎工作正常:

~/sb> mkdir proj1
~/sb> cd proj1
~/sb/proj1> echo "asdf" > file1.txt
~/sb/proj1> git init
~/sb/proj1> git add .
~/sb/proj1> git commit -a -m "Import"
~/sb/proj1> git branch
* master

当我尝试push到中央存储库时,问题就开始了:

~/sb/proj1> cd /home
~> mkdir temp-repo
~> cd temp-repo/
~/temp-repo> git init --bare
Initialized empty Git repository in /home/temp-repo/
~/temp-repo> cd ~/sb/proj1/
~/sb/proj1> git clone /home/temp-repo/
Cloning into temp-repo...
done.
warning: You appear to have cloned an empty repository.
~/sb/proj1> git push origin master
fatal: 'origin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

注意:上面的--bareorigin master来自此处发布的问题的解决方案:pushing to a git repository does not work

然而,我似乎并不知道我错过了什么。必须是微不足道的,但它是什么?

更新:以下@Firoze Lafeer的答案有效:

~/sb/proj1> cd /home
~> mkdir temp-repo
~> cd temp-repo/
~/temp-repo> git init --bare
Initialized empty Git repository in /home/temp-repo/
~/temp-repo> cd ~/sb/proj1/
~/sb/proj1> git remote add origin /home/temp-repo
~/sb/proj1> git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 230 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /home/temp-repo
 * [new branch]      master -> master
~/sb/proj1>

现在我需要了解原因。特别是,我在this answer中误解了什么,这表明在git clone之前做git push origin master

1 个答案:

答案 0 :(得分:5)

当你这样做时:

 git clone /home/temp-repo/

你现在应该在一个新目录中克隆一个repo~ / sb / proj1 / temp-repo /

如果我正确理解你的问题,那不是你想要的。

如果您已在〜/ sb / proj1中拥有存储库,则不要克隆其他存储库。只需添加另一个作为遥控器。

所以假设你先在〜/ sb / proj1中创建了本地仓库,然后创建了temp-repo,你想从第一个推送到第二个:

git remote add origin /home/temp-repo
git push origin master

或者只是反过来做。首先在/ home / temp-repo中创建repo,然后克隆并推送到它。

希望有帮助吗?

修改

希望进一步解释为什么不想在这里克隆:

如果您尚未创建本地存储库,则会出现克隆。因此,您要求git复制一些远程存储库,然后将其隐式设置为新本地副本中名为“origin”的远程存储库。在你的情况下,你已经有了一个本地仓库,所以你想要的只是将另一个仓库设置为名为“origin”的远程仓库。

所以现在你的本地仓库知道另一个名为'origin'的仓库。然后你可以推动那个“起源”。当然,你不必将它称为“起源”,如果你愿意,你可以称之为'猫'然后'git push cats master'。

或者你可以反过来做。所以你可以首先制作临时回购,然后做一些像:

cd ~/sb
git clone /home/temp-repo proj2
cd proj2
# make some changes...
git push origin master

也有效。将temp-repo复制到新目录proj2中的新repo中。然后在proj2中,新的repo知道一个名为'origin'(/ home / temp-repo)的远程仓库,所以可以将提交推回给它。