我想在我们的服务器上创建一个主存储库,我可以从中将本地版本克隆到我的计算机上。
我正在使用 R Studio v0.98.994。
到目前为止,这就是我尝试做的事情:
创建一个用于存放主存储库的文件夹。我使用 R studio 中的“新项目”来执行此操作,并告诉它创建一个 git 存储库。
然后,我可以打开位于 C 驱动器上的另一个新项目,并使用 R studio 进行克隆,方法是告诉它打开现有项目并将 URL 设置为主项目的位置。
但是,当我进行更改并提交到本地存储库(工作正常)时,我无法推送到主存储库,我收到一个与此问题中描述的错误完全一样的错误: git push失败:`拒绝更新签出分支:refs /头/主人`
那么看来 R Studio 创建了非裸存储库?
现在我想,好吧,我将使用 git bash 初始化存储库,然后在 R studio 中连接到该存储库。
我这样做了,但无法找到在 R Studio 中使用该存储库的方法。
我对 Git 很陌生,所以这很可能是那些“阅读说明”问题之一,在这种情况下我非常抱歉 - 有人可以为我指出一些针对这种情况的指导吗?我花了大半天的时间在谷歌上搜索这个错误,但还没有设法将各个部分整合在一起:(我也表示歉意;这感觉不是一个非常可重现的问题。
听起来您正在使用 Windows Git,并在本地 Windows 计算机(C: 驱动器)和某种类型的服务器(安装为 S: 驱动器)上进行设置。执行此操作时您应该注意一些事项。
如果您打算让多人共享同一个存储库,则需要启动共享存储库。有关更多详细信息,请参阅git-init中的 --shared 选项。请注意,我不确定将存储库放在 Windows 计算机上如何影响共享选项。如果您只是想将存储库保存在两个地方,那么事情就会变得容易得多。
与共享的讨论分开的是裸存储库的讨论。如果您不打算使用服务器中的文件(即,它只是一个推送更改的地方,以便安全地存储它们),您可以初始化一个裸存储库。裸存储库包含 Git 的数据库结构,但目录中没有实际文件。
标准 Git 存储库是一个目录,其中包含一个名为.git. 该.git文件夹包含 Git 用于跟踪更改的所有各种数据结构。裸存储库本质上是一个仅包含.git.
裸存储库的好处是没有人可以在存储库本身中工作(因为没有工作目录,只有数据库)。这意味着没有人可以登录 S: 并自行编辑存储库。相反,他们必须克隆存储库,然后将更改推送回源。GitGuys有一篇很好的文章解释了为什么这是理想的。
请注意,共享存储库和裸存储库并不依赖或相互排斥。作为一般实践,如果您有一个“服务器存储库”,可以从中拉取并推送到该“服务器存储库”,则无论该项目是否共享,都应该将其保留为裸露的。
由于不清楚你是否共享,并且你处于 Windows 环境中,从共享的角度我不知道,所以我将给你一个简单的例子。使用 git-bash,您应该能够将目录更改为 S 上的任何位置:您拥有存储库。然后,使用git init上面链接所述的裸选项来初始化裸存储库。导航到您希望存储库位于 C: 上的位置,然后执行git clone获取工作副本的操作。
添加 README 文件或其他文件,以便您可以进行初始提交,然后提交并执行git push origin master将更改推送到 S: 存储库。完成所有这些后,初始化 RStudio Git 项目。RStudio 应该遵循您现有的配置,并且希望一切正常。