文档章节

Git推送错误“ [[远程拒绝]主机->主机(分支当前已签出)”)

j
 javail
发布于 2019/12/15 10:27
字数 1359
阅读 19
收藏 0
Git

昨天,我发布了一个有关如何将Git存储库从我的一台计算机克隆到另一台计算机的问题如何从另一台计算机“ git clone”?

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

但是,当我对文件, git commit -a -m "test"git push ,我在目的地(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)。 那可能是原因吗?


#1楼

使用Git同步Android手机和笔记本电脑上的存储库时,我遇到了同样的问题。 对我来说,解决方案是执行拉动,而不是像@CharlesBailey建议的那样进行推动。

Android存储库上的git push origin master对于我失败,并显示与@ hap497相同的错误消息,这是由于推送到存储库+工作副本的裸机检出。

笔记本电脑存储库上的git pull droid master和work-copy对我有用。 当然,您之前需要运行git remote add droid /media/KINGSTON4GB/notes_repo/


#2楼

您可以通过以下测试来查看bare服务器的工作方式:

想象一下,您有一个工作站和一个托管有实时站点的服务器,并且您想不时更新此站点(这也适用于两个开发人员通过一个裸露的中间人来回发送其工作的情况)。

初始化

在本地计算机上创建一些目录并cd进入该目录,然后执行以下命令:

# initialization
git init --bare server/.git
git clone server content
git clone server local
  1. 首先,您创建一个裸server目录(请注意最后的.git)。 该目录仅用作存储库文件的容器。
  2. 然后将服务器存储库克隆到新创建的content目录。 这是您的现场/生产目录,将由您的服务器软件提供服务。
  3. 前两个目录位于服务器上,第三个目录是工作站上的本地目录。

工作流程

现在这是基本的工作流程:

  1. 输入local目录,创建一些文件并提交。 最后将它们推送到服务器:

    # create crazy stuff git commit -av git push origin master
  2. 现在进入content目录并更新服务器的内容:

    git pull
  3. 重复1-2。 这里的content可能是另一个也可以推送到服务器的开发人员,也可能是local开发人员,您可以从他那里获取。


#3楼

最好的方法是:

mkdir ..../remote
cd ..../remote
git clone --bare .../currentrepo/

这将克隆存储库,但不会在.../remote创建任何工作副本。 如果查看远程目录,将会看到一个创建的目录,名为currentrepo.git ,这可能是您想要的。

然后从您本地的Git存储库中:

git remote add remoterepo ..../remote/currentrepo.git

进行更改后,您可以:

git push remoterepo master

#4楼

我不得不在现有的裸仓库中重新运行git --init ,这已经在裸仓库树中创建了一个.git目录-我意识到在那里输入git status后。 我删除了,一切都很好:)

(所有这些答案都是不错的,但就我而言,这是完全不同的(据我所知),如前所述。)


#5楼

通过一些设置步骤,您可以使用单线轻松将更改部署到您的网站

git push production

这很简单,而且您不必登录到远程服务器即可执行拉取或其他任何操作。 请注意,如果您不将生产结帐用作工作分支,这将最有效! (OP在稍微不同的上下文中工作,我认为@Robert Gould的解决方案很好地解决了该问题。此解决方案更适合于部署到远程服务器。)

首先,您需要在Webroot之外的服务器上的某个地方建立一个裸仓库。

mkdir mywebsite.git
cd mywebsite.git
git init --bare

然后创建文件hooks/post-receive

#!/bin/sh
GIT_WORK_TREE=/path/to/webroot/of/mywebsite git checkout -f

并使文件可执行:

chmod +x hooks/post-receive

在您的本地计算机上,

git remote add production git@myserver.com:mywebsite.git
git push production +master:refs/heads/master

可以了,好了! 现在,将来您可以使用git push production来部署您的更改!

此解决方案的信誉归功于http://sebduggan.com/blog/deploy-your-website-changes-using-git/ 。 在此处查找有关发生的情况的更详细说明。

本文转载自:https://ja.sofbug.com/question/BofJ

j
粉丝 3
博文 764
码字总数 0
作品 0
深圳
私信 提问
Git远程操作详解

Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Git远程操作。 git clone git remote git fetch git pull git pu...

lilinji
2014/10/31
0
0
【git命令】git远程操作相关命令(remote 、push、fetch 、pull)

git系统图 git remote 为了便于管理,Git要求每个远程主机都必须指定一个主机名。为了便于管理,Git要求每个远程主机都必须指定一个主机名。 git remote【查看创库名】 在我们clone了刚才的项...

echojson
2019/03/24
26
0
git远程操作详解

Git远程操作主要有如下5个命令: git clone git remote git fetch git pull git push 掌握了以上命令,Git的远程操作基本上已经全部掌握了。因为这五个命令基本上涵盖了所有远程操作。 一、g...

VincentGu
2017/05/21
0
0
Git远程操作详解

Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能。 Git有很多优势,其中之一就是远程操作非常简便。本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全...

阮一峰
2014/06/12
0
0
git push origin与git push -u origin master的区别

$ git push origin 上面命令表示,将当前分支推送到origin主机的对应分支。 如果当前分支只有一个追踪分支,那么主机名都可以省略。 $ git push 如果当前分支与多个主机存在追踪关系,那么这...

clin003
2018/11/13
36
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是专用字节,虚拟字节,工作集?

我试图使用perfmon Windows实用程序来调试进程中的内存泄漏。 这就是perfmon解释这些术语的方式: Working Set是此过程的工作集的当前大小(以字节为单位)。 工作集是过程中线程最近触及的一...

技术盛宴
30分钟前
52
0
创建重复N次的单个项目的列表

我想创建一系列长度不一的列表。 每个列表将包含相同的元件e ,重复n次(其中n列表=长度)。 如何创建列表,而不为每个列表使用列表[e for number in xrange(n)] ? #1楼 在Python中创建重复...

javail
46分钟前
64
0
为什么图片反复压缩后普遍会变绿,而不是其他颜色?

作者:Lion Yang 链接:https://www.zhihu.com/question/29355920/answer/119088684 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 业余版概要:安卓的...

shzwork
今天
47
0
每天AC系列(二):最接近的三数之和

1 题目 leetcode第16题,给定一个数组与一个目标数,找出数组中其中的三个数,这三个数的和要与目标数最接近。 2 暴力 按惯例先来一次O(n3)的暴力: int temp = nums[0]+nums[1]+nums[2];fo...

Blueeeeeee
今天
46
0
EFK教程(5) - ES集群开启用户认证

基于ES内置及自定义用户实现kibana和filebeat的认证 作者:“发颠的小狼”,欢迎转载 目录 ▪ 用途 ▪ 关闭服务 ▪ elasticsearch-修改elasticsearch.yml配置 ▪ elasticsearch-开启服务 ▪ ...

小慢哥
今天
58
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部