在桌面电脑上,我执行以下操作:
mkdir git_test
cd git_test
git init
dd if=/dev/urandom of=test.img bs=1k count=1000
git add test.img
git commit -m "Added first image"
然后在笔记本电脑上执行:
git clone [USER]@desktop:/home/[USER]/git_test
cd git_test
dd if=/dev/urandom of=test2.img bs=1k count=1000
git add test2.img
git commit -m "Added second image"
我希望桌面上的git仓库和笔记本电脑上的git仓库看起来相同。在笔记本电脑上,我执行以下操作:
git push origin master
但是我会得到以下错误信息:
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具有我所需的功能,但出于某些原因,它似乎是一种更高级的工作流。我曾听人说过,不能向当前所在的分支推送,有人可以阐述一下这个可能的解决方案吗?如果以这种方式解决问题,即我可以在我的笔记本电脑上使用某个分支,在我的台式机上使用不同的分支,然后以某种方式将它们同步起来,使它们相同,那就没问题了。
请注意以下几点:
1. 我不想使用像GitHub这样的集中式仓库,有几个原因。第一是安全性。第二是简单性。第三是由于某些情况(我在这里不会详细说明),我不能指望通过某个远程服务器连接到互联网,我只有通过局域网连接的两台机器。最后,我想学习如何按照我在此处请求的方式进行操作,以获得特定的知识。 2. 我也不想使用一个裸仓库,因为裸仓库的根目录中有很多垃圾。这很难看,很乱。我从svn转换到git的整个原因是,git看起来是一个更干净、更分散的解决方案。另外,我有一些非常不懂技术的人会在台式机的根目录下操作,他们将对垃圾感到非常困惑。我认为git的美丽之处在于,所有东西都隐藏在.git文件夹中。 编辑:显然我没有清楚地表达这个观点。 想象一下我有一个“文档”文件夹,其中包含以下子文件夹:mydata1和mydata2。 这不是一个刻意的例子,这正是我试图解决的问题。 mydata1应该只包含“test.img”这个文件,但现在它却有了branches,config,description,HEAD,hooks,info,objects和refs这样的文件。
我希望能够只需进入mydata1并开始编辑文件,而不是必须通过分支等等才能完成工作。每个子文件夹都有这种目录结构就无法工作。 请不要告诉我要按照这种方式处理事情。请直接回答问题。谢谢。
以上两点是我在此发布此问题的全部原因。如果你有这个问题的答案,请回复。 :) 谢谢!!