我从个人git服务器克隆了一个空存储库。在初始推送(push -u origin master
)之后,我遇到了一些错误,但我推进了内部。
尝试使用git push
会显示以下内容:
没有共同的参考,没有指定;什么也不做。也许你 应该指定一个分支,例如'master'。致命的:远程端挂了 意外错误:无法推送一些参考 “链路顶库”
然后我尝试了git push origin master
:
Counting objects: 3, done.
Writing objects: 100% (3/3), 218 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
使用git pull
时会出现问题:
您的配置指定与来自的“ref”master合并 远程,但没有提到这样的参考。
我试过检查.git / config但似乎是正确的。
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = junior@54blue.com:/repository/regulator
[branch "master"]
remote = origin
merge = refs/heads/master
[branc "master"]
remote = origin
有什么建议吗?
答案 0 :(得分:5)
假设您具有对个人git服务器的写入权限,您正在做的是将更改推送到non-bare repository,以及当前检出为工作目录的分支。
目前常见的良好做法总是推向裸存储库。要创建它,您可以执行以下操作:
git init --bare SomeRepo.git
如果您坚持要推送到非裸存储库(不推荐使用),请确保要推送到的分支不是当前签出的分支或当前工作目录。只需打开命令行工具,例如Linux中的终端或Windows中的git bash,移动到您的存储库目录(其中包含文件夹.git的目录),执行以下命令:
git branch -v
它将显示该存储库的所有可用分支,并且当前签出的分支标有“*”,例如:
* master b0bb0b1 some commit message
development babbab2 some other commit message
experimental bebbeb3 some commit message in experiment
上面的示例显示master是当前签出的分支,因此您无法推送它。但你可以推动其他分支,如开发或实验。如果必须推送到master,可以使用以下命令将当前目录更改为其他分支:
git checkout the_branch_name
此后,当前签出的是上面命令中指定的分支,现在可以推送到master。
答案 1 :(得分:0)
从文件末尾删除它。
[branc "master"]
remote = origin
此外 - 您的开发人员push
所在的中央Git存储库应该是一个裸存储库。您的错误日志显示您的错误日志不是。
答案 2 :(得分:0)
我遇到了类似的问题,并在Unix堆栈交换中找到了答案: https://unix.stackexchange.com/a/166713
在我的情况下,我的本地分支和远程分支有所不同 大写。
要解决此问题,我删除了我的本地分支
$ git branch -d branch-name
, 然后使用$ git fetch
和$ git checkout Branch-name
再次检出远程分支。
因此,删除本地分支并再次检出远程分支。