在本地配置和使用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
注意:上面的--bare
和origin 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
。
答案 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)的远程仓库,所以可以将提交推回给它。