file1.txt ~/sb/proj1-6ren">
gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:57:08 32 4
gpt4 key购买 nike

在本地配置和使用 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 push origin master 之前做一个 git clone

最佳答案

当你这样做的时候:

 git clone /home/temp-repo/

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

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

如果您在 ~/sb/proj1 中已有一个存储库,则不要克隆另一个存储库。只需将另一个添加为 Remote 即可。

因此,假设您首先在 ~/sb/proj1 中创建了本地存储库,然后创建了临时存储库,并且您想从第一个推送到第二个:

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

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

希望对您有所帮助?

编辑

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

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

现在您的本地存储库知道另一个名为“origin”的存储库。然后你可以推到那个“原点”。当然,您不必将其称为“起源”,如果您愿意,可以将其称为“猫”,然后再称为“git push cats master”。

或者你可以反过来做。所以你可以先制作临时 repo 然后做类似的事情:

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)的远程 repo,因此可以将提交推回给它。

关于git push 失败——我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604679/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com