Git - 推送到远程存储库

时间:2011-08-22 17:33:31

标签: git

Git newbie here。

创建了一个新文件夹:

mkdir hello_master
cd hello_master
touch test.txt
git init
git add test.txt
git commit test.txt

然后克隆了存储库

    git clone hello_master hello_local
    # made some changes to test.txt and committed it

如何将其推送到hello_master?如果我做一个git push,它抱怨说我不能推到hello_master。但是,如果我转到hello_master,我可以从hello_local获取所有更改。

我做错了什么?

4 个答案:

答案 0 :(得分:2)

无。你无法推送到非裸存储库。因为git不知道如何处理签出的文件。

答案 1 :(得分:1)

仅推荐您没有推送到非裸机库。有很多方法可以推送到非裸仓库(当然!):

1)错误消息本身会讨论将receive.denyCurrentBranch配置设置为警告或忽略。

2)在回购中签出一个新分支(比如说temp)。现在你可以推送master或任何其他分支。

答案 2 :(得分:0)

您提供的信息不多,但我想,您已经“推动非裸回购”问题 使用Git,您无法将非裸存储库(存储库,具有工作副本)推送到活动分支,因为有人可能正在这个分支中工作,您可能会破坏他的工作。
解决方案1是使主存储库裸露;
解决方案2是将hello_master签出到另一个分支;
解决方案3(来自git help):'您可以在远程存储库中将'receive.denyCurrentBranch'配置变量设置为'ignore'或'warn'以允许推入其当前分支;但是,除非您安排更新其工作树以匹配您以其他方式推送的内容,否则不建议这样做。

答案 3 :(得分:0)

我怀疑你要找的答案在这里: https://git.wiki.kernel.org/index.php/GitFaq#How_would_I_use_.22git_push.22_to_sync_out_of_a_host_that_I_cannot_pull_from.3F

但简而言之,你不能直接推动,你必须在远程一侧创建一个分支机构。它看起来像这样: git push remote-box:/ path / to / git / repo master:refs / remotes / name-of-local-box / master

然后当您登录“remote-box”时,您可以合并您从其他计算机推送的更改,如下所示: git merge name-of-local-box / master