Git 推送错误 '[远程拒绝] master ->master(分支当前已检出)' [英] Git push error '[remote rejected] master -> master (branch is currently checked out)'

查看:30
本文介绍了Git 推送错误 '[远程拒绝] master ->master(分支当前已检出)'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

昨天,我发布了一个关于如何克隆 Git 存储库的问题我的一台机器到另一台,怎么能我从另一台机器git clone"?.

Yesterday, I posted a question on how to clone a Git repository from one of my machines to another, How can I 'git clone' from another machine?.

我现在可以成功地将 Git 存储库从我的源 (192.168.1.2) 克隆到我的目标 (192.168.1.1).

I am now able to successfully clone a Git repository from my source (192.168.1.2) to my destination (192.168.1.1).

但是当我编辑一个文件时,一个 git commit -a -m "test" 和一个 git push,我在我的目的地收到这个错误 (192.168.1.1):

But when I did an edit to a file, a git commit -a -m "test" and a git push, I get this error on my destination (192.168.1.1):

git push                                                
hap@192.168.1.2's password: 
Counting objects: 21, done.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (11/11), 1010 bytes, done.
Total 11 (delta 9), reused 0 (delta 0)
error: refusing to update checked out branch: refs/heads/master
error: By default, updating the current branch in a non-bare repository
error: is denied, because it will make the index and work tree inconsistent
error: with what you pushed, and will require 'git reset --hard' to match
error: the work tree to HEAD.
error: 
error: You can set 'receive.denyCurrentBranch' configuration variable to
error: 'ignore' or 'warn' in the remote repository to allow pushing into
error: its current branch; however, this is not recommended unless you
error: arranged to update its work tree to match what you pushed in some
error: other way.
error: 
error: To squelch this message and still keep the default behaviour, set
error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git+ssh://hap@192.168.1.2/media/LINUXDATA/working
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'git+ssh://hap@192.168.1.2/media/LINUXDATA/working'

我使用两个不同版本的 Git(远程 1.7 和本地机器 1.5).这是一个可能的原因吗?

I'm using two different versions of Git (1.7 on the remote and 1.5 on the local machine). Is that a possible reason?

推荐答案

错误消息 error: refusing to update checked out branch: refs/heads/master 由远程存储库发出,这意味着您正在尝试将代码推送到远程非裸存储库,该存储库当前在工作目录中检出了不同的代码.避免此问题的最佳方法是仅推送到裸存储库 - 裸存储库永远不会发生此问题.

The error message error: refusing to update checked out branch: refs/heads/master is emitted by the remote repository and it means you're trying to push code to remote non-bare repository that has different code currently checked out in the working directory. The best way to avoid this problem is to push to bare repositories only - this problem cannot ever happen with a bare repository.

您可以简单地将远程存储库转换为裸存储库(裸存储库中没有工作副本 - 该文件夹仅包含实际存储库数据).

You can simply convert your remote repository to bare repository (there is no working copy in the bare repository - the folder contains only the actual repository data).

在你的远程仓库文件夹中执行以下命令:

Execute the following command in your remote repository folder:

git config --bool core.bare true

然后删除该文件夹中除.git 之外的所有文件.然后你就可以执行 git push 到远程仓库而不会出现任何错误.

Then delete all the files except .git in that folder. And then you will be able to perform git push to the remote repository without any errors.

这篇关于Git 推送错误 '[远程拒绝] master ->master(分支当前已检出)'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆