3

我从个人 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' 合并,但没有获取这样的 ref。

我试图检查 .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

有什么建议么?

4

3 回答 3

5

假设您对您的个人 git 服务器具有写入权限,您所做的是将更改推送到非裸存储库,以及当前作为工作目录签出的分支。

当前常见的良好实践总是推送到裸存储库。要创建它,您可以执行以下操作:

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。

于 2012-12-06T15:47:29.147 回答
0

从文件末尾删除它。

[branc "master"]
        remote = origin

此外 - 您的开发人员所在的中央 Git 存储库push应该是一个裸存储库。您的错误日志显示您的错误日志不是。

于 2012-12-06T15:21:12.927 回答
0

我遇到了类似的问题,并在 Unix stack-exchange 中找到了答案: https ://unix.stackexchange.com/a/166713

就我而言,我的本地分支和远程分支的大小写不同。

为了解决这个问题,我删除了本地分支,然后使用and$ git branch -d branch-name再次签出远程分支。$ git fetch$ git checkout Branch-name

所以删除本地分支并再次签出远程分支修复它。

于 2016-07-14T11:18:51.770 回答