我已经在我的两台计算机上使用bzr一段时间了,并使用Dropbox同步存储库。到目前为止,我对以下工作流程没有任何问题:
(我知道它更像svn工作流程,使用Dropbox作为中央存储库,但是在台式机和笔记本电脑上设置svn服务器以便能够使用同步的Dropbox文件夹作为主存储库并不吸引我所有。)
依此类推。
但是现在我正在学习Rails,而Rails就是关于git的。我试图使用类似的工作流程,并陷入悲痛之中。
我已经完成了一些阅读,看起来克隆不是首先使用的正确命令,我还应该使用推送? 'git remote -v'告诉我:
origin /home/karpie/Dropbox/Sites/Rails (fetch)
origin /home/karpie/Dropbox/Sites/Rails (push)
但推动仍然无效......
Counting objects: 214, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (182/182), done.
Writing objects: 100% (192/192), 725.23 KiB, done.
Total 192 (delta 31), 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'.
To /home/karpie/Dropbox/Sites/Rails
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to '/home/karpie/Dropbox/Sites/Rails'
我...真的不知道这意味着什么,而且非常令人生畏。
那么......如果我的方式真的不是'git方式',我怎样才能掌握适当的工作流程?如何解决当前的问题?我真的不介意在我的Dropbox和笔记本电脑上查看存储库,只要我不丢失桌面上的内容。
PS。虽然我有一个github帐户,但我不想在当前公开我的网站开发代码,所以我试图改用Dropbox。
欢呼声,
Karpie
编辑:我认为像Giggle这样的GUI可能会帮助我掌握“为一切而分支”的概念,除非有人有更好的方法来掌握它,
答案 0 :(得分:6)
Git具有裸存储库和非裸存储库的概念。不同之处在于非裸存储库包含工作空间,即您签出的文件。这是您在笔记本电脑和台式机上创建和使用的存储库。裸存储库不包含任何签出文件,并且通常作为中央存储库存在于服务器上。你得到的错误中git抱怨的是,它不喜欢推送到非裸存储库,因为这会改变任何用户可能使用该存储库的“脚下”。
mkdir Repo; cd Repo; git init --bare
答案 1 :(得分:1)
创建Dropbox repo时,请使用git init --bare
使其裸露。然后你可以推动它。该错误解释了为什么您不想推送到非裸露的回购(即带有签出副本的回购)