昨天,我发布了一个关于如何从我的一台机器克隆Git存储库到另一台机器的问题,我如何从另一台机器“克隆Git”?

现在我可以成功地将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版本)。这是一个可能的原因吗?


当前回答

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

git在Android存储库上推送origin master失败,与@hap497得到的错误消息相同,因为推送到存储库+工作副本的非裸签出。

Git在笔记本存储库上拉droid master,并为我工作复制。当然,你需要先运行git remote add droid /media/KINGSTON4GB/notes_repo/。

其他回答

事实上,将远程设置为一个未签出的分支就足够了。当您在不同的分支签出您的遥控器后,您可以按。

您可以重新创建服务器存储库,并从本地分支主服务器推送到服务器主服务器。

在远程服务器上:

mkdir myrepo.git
cd myrepo.git
git init --bare

好的,从你当地的分公司:

git push origin master:master

当我在NAS上克隆了一个回购,然后将该回购克隆到我的机器上时,我遇到了这个问题。

设置是这样的:

原始(github):

克隆到我的私人家庭网络中的网络存储(我的家庭网络) 签出的分支:DEVELOPMENT 克隆到其他机器(笔记本电脑、我办公室的小型数据中心服务器等) 签出的分支:DEVELOPMENT

当我试图从笔记本电脑提交到NAS服务器时,出现的错误是

! [remote rejected]   development -> development (branch is currently checked out)

根本原因是在NAS服务器上签出了DEVELOPMENT分支。我的解决方案是在NAS存储库上切换到任何其他分支。这让我可以提交我的更改。

我相信大多数看到这个问题的人会止步于前两个重要的答案,但我仍然想提供我的解决方案。

当遇到描述的错误时,我有一个Eclipse + EGit web项目设置。帮助我的是使用GitHub应用程序,它似乎神奇地解决了这个问题。虽然EGit总是拒绝推送,但GitHub桌面应用程序只会耸耸肩,推送我的更改。也许它能更优雅地处理多次登录的情况。

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

git在Android存储库上推送origin master失败,与@hap497得到的错误消息相同,因为推送到存储库+工作副本的非裸签出。

Git在笔记本存储库上拉droid master,并为我工作复制。当然,你需要先运行git remote add droid /media/KINGSTON4GB/notes_repo/。