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
获取所有更改。
我做错了什么?
答案 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