这是场景。我有两台机器,“台式机”和“笔记本电脑”。
在桌面上我这样做:
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 repo 看起来像我笔记本电脑上的 git repo。在笔记本电脑上,我发出以下命令: 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 具有我想要的功能,但由于某种原因,它似乎是一个更高级的工作流程。我曾经听到有人说您无法推送到您当前所在的分支,有人可以详细说明一下作为可能的解决方案吗?我对这种性质的解决方案没有任何问题,即,我可以在我的笔记本电脑上的某个分支上工作,在我的桌面上的另一个分支上工作,然后以某种方式同步它们,这样它们就相同了。
请注意以下事项!
出于几个原因,我不想使用像 github 这样的集中式存储库。首先是安全性。二是简单。第三是由于情况我不会进入这里,我不能指望有互联网连接到某个远程服务器,我只是通过局域网连接了我的两台机器。最后,我想学习如何按照我在这里要求的方式做事,以获得特定的知识。
我也不想使用裸仓库,因为裸仓库在根目录中有一堆杂物。这是丑陋和混乱的。我从 subversion 迁移到 git 的全部原因是 git 看起来像一个更清洁、去中心化的解决方案。另外,我有一些非技术人员将在桌面的根目录中操作,他们会被杂乱无章的东西弄糊涂。git 的美妙之处在于(我认为)所有内容都隐藏在 .git 文件夹中。编辑:显然我对这一点还不够清楚。想象一下,我有一个“文档”文件夹,其中包含以下子文件夹:mydata1 和 mydata2。这不是一个人为的例子,这正是我要处理的问题。mydata1 应仅包含“test.img”和该文件,但它现在具有:
分支配置描述 HEAD hooks info objects refs
我希望能够直接 cd 进入 mydata1 并开始编辑文件,但我必须尝试通过分支 cd,或者甚至只是为了完成工作。并且为“文档”中的每个子文件夹都拥有这种目录结构是行不通的。拜托,请不要告诉我这样做。请只回答问题。谢谢。
这两点是我在这里发布这个问题的全部原因。请仅在您对此问题有答案的情况下回复。:) 谢谢!!