【问题标题】:Visual Studio 2015 git Push to Network DriveVisual Studio 2015 git 推送到网络驱动器
【发布时间】:2015-12-29 17:08:28
【问题描述】:

我正在与 Visual Studio Community 2015 中的其他几个人一起开发 C++ 项目,我们希望使用 VS2015 的内置 git 功能来管理我们的项目。我们希望每个用户在他们的笔记本电脑上都有一个本地 git 存储库,然后将一个远程存储库放在我们推/拉到/从的网络驱动器上。我想知道使用 VS2015 的内置 git 功能进行此特定设置的正确工作流程。我们不想使用 VS online 或 Team Foundation 版本控制或 git 的命令行版本(由于我们的工作性质,我们将无法访问 Internet,也无法访问命令行提示符)。

我已经尝试了几种方法来让它工作,但没有任何运气。

首先我在VS2015中打开解决方案,然后点击file -> add to source control -> git,创建一个本地仓库。然后我将我的文件提交到本地存储库。到目前为止没有问题。

接下来我想在网络驱动器上创建一个远程存储库。在项目的团队资源管理器中,我单击同步,它会询问空 git 存储库的 URL。我在网络驱动器上输入了我希望它使用的文件夹,但我收到一条错误消息,提示它找不到存储库,可能是因为该文件夹为空。也许我错过了它,但似乎没有办法在 VS2015 中创建一个空的 git repo。

所以要尝试创建一个空的 git 存储库,我导航到 File-> new-> Repository,然后在网络驱动器上的文件夹中创建 git 存储库。我认为将其输入到 Synchronization -> URL 中,我得到一个不同的错误。此错误表示本地推送尚不支持推送到非裸仓库。在 VS2015 中创建新的仓库似乎不会创建一个空的仓库。

接下来,我尝试将本地存储库位置克隆到网络驱动器文件夹位置,这很有效。然后我转到我的本地存储库设置,并将远程存储库添加到 remotes,它现在显示在分支资源管理器窗口中。然后我对我的代码进行更改,转到更改,然后选择 Commit and Push。这次我得到另一个错误:“无法推送,因为当前分支没有跟踪远程分支,将更改发布到远程。”右键本地master分支,发布选项灰显,无法发布。

为了解决这个问题,我右键单击远程/主分支,然后选择新的本地分支,并选择“跟踪远程分支(使用远程/主配置进行推送和拉取)”选项。我将此分支命名为 local_master,它现在是一个已发布的分支。我假设我上面选择的选项现在允许我从新发布的 local_master 分支推送和拉取更改到远程/主分支。当我对 local_master 进行更改,提交,然后尝试推送时,我得到了这个错误:“本地推送不(还)支持推送到非裸仓库。”然后我右击remote/master分支并尝试从我的local_master合并到remote/master,这说明它工作成功,但是我的代码更改不在remote/master中。

我花了将近 8 个小时试图让它发挥作用并研究其他解决方案,但没有成功,我已经无计可施了。有人知道如何在网络驱动器上创建远程存储库,然后使用 VS2015 中的内置 git 控件从本地存储库推/拉到远程存储库吗?

【问题讨论】:

  • 这很罗嗦。也许一些图片会有所帮助?
  • 我个人使用命令提示符...所以只是一个问题。当您执行“ File-> new-> Repository”时,有没有办法制作一个裸仓库 - 因为这是一个反复出现的错误消息。
  • 另外,如果您的雇主不让您使用命令行,并且如果您愿意花一整天时间无法使版本控制正常工作,请告诉他们是谁。
  • @doctorlove:他们给你的唯一选择是选择新 git 存储库的目的地。我不确定它在做什么。我查看了以这种方式创建的新 git 存储库的 a 文件夹,它具有以下内容:1)一个 .git 文件夹 2)一个 .gitattributes 文件,3)一个 .gitignore 文件。一个空的 repo 文件夹会是什么样子?我也一直在自己的时间研究这个,因为我放假了。

标签: c++ git git-push visual-studio-2015


【解决方案1】:

这是我目前的工作流程:

  1. 在 Visual Studio 中创建项目并选中“创建新的 Git 存储库”。
  2. 使用“初始提交”或类似的提交消息进行本地提交。
  3. 打开项目目录,找到.git子目录。该目录默认是隐藏的,需要在资源管理器中开启“显示隐藏的文件和文件夹”才能看到。
  4. 右键单击.git,属性->取消选中“隐藏”,单击应用。
  5. 将目录重命名为YourProjectName.git
  6. 在文本编辑器中编辑YourProjectName.git\config(我推荐Notepad++,因为它对保存没有扩展名的文件毫无疑问,这是必需的。这个文件不能保存为config.txt)
  7. config: 删除行logallrefupdates = true 将行 bare = false 更改为 bare = true 将文件另存为config(没有文件扩展名!!)
  8. 将整个 YourProjectName.git 目录复制到您希望主存储库所在的文件共享中。
  9. 删除存储库的本地副本。
  10. 打开 Git Bash(或操作 -> 在 VS 2015 团队资源管理器中打开命令提示符)并 cd 到您希望项目目录所在的任何位置。例如cd C:\Users\YourUsername\Documents\Projects
  11. 从其网络路径克隆存储库: git clone //repo-server/c/CompanyRepos/YourProjectName.git

显然,这些步骤中的许多步骤可以稍有不同或乱序执行,但重要的概念是在网络共享上初始化一个裸存储库,然后将其克隆为本地完整存储库。

您删除现有存储库并从网络共享中克隆的原因是为了确保您的所有遥控器都已正确配置。

上面推荐的config 编辑只是将现有完整存储库转换为裸存储库的一种方法。或者,如果你从头开始创建一个新的存储库,你可以在命令窗口中输入“git init --bare”。但是,值得注意的是“git init”和 VS 2015 的“创建新的 Git 存储库”并不完全相同;因为 Visual Studio 在初始化存储库后添加了一些额外的设置。这些设置并不重要,但我认为值得注意的是差异。

【讨论】:

    猜你喜欢
    • 2012-07-23
    • 2016-08-03
    • 2019-12-26
    • 2013-03-15
    • 2015-11-07
    • 2015-10-28
    • 2019-01-20
    • 2022-10-25
    • 2011-04-04
    相关资源
    最近更新 更多