我正在与Visual Studio Community 2015中的其他几个人一起开展C ++项目,我们希望使用VS2015的内置git功能来管理我们的项目。我们希望每个用户在他们的笔记本电脑上都有一个本地git存储库,然后将远程存储库放在我们推/拉的网络驱动器上。我想知道使用VS2015的内置git功能进行此特定设置的正确工作流程。我们不想使用VS online或Team Foundation Version控件或git的命令行版本(由于我们的工作性质,我们无法访问Internet,我们无法访问命令行提示符。)
我已经尝试了几件事来让这个没有任何运气。
首先,我在VS2015中打开解决方案,然后单击文件 - >添加到源代码管理 - > git,它创建一个本地存储库。然后我将我的文件提交到本地存储库。到目前为止没有任何问题。
接下来我想在网络驱动器上创建一个远程存储库。在项目的团队资源管理器中,我单击同步,它会询问空git仓库的URL。我输入了我希望它使用的网络驱动器上的文件夹,但是我收到错误,说它无法找到存储库,可能是因为该文件夹是空的。也许我错过了它,但似乎没有办法在VS2015中创建一个空的git repo。
因此,为了尝试创建一个空的git repo,我导航到File->新建 - >存储库,我在网络驱动器上的文件夹中创建git存储库。我想把它输入同步 - > URL和我得到一个不同的错误。此错误表示本地推送尚不支持推送到非裸回购。在VS2015中创建新存储库似乎不会创建空存储库。
接下来,我尝试将我的本地存储库位置克隆到网络驱动器文件夹位置,该位置正常。然后我转到我的本地存储库设置,并将远程存储库添加到远程存储库,现在显示在分支浏览器窗口上。然后我对我的代码进行了更改,转到更改,然后选择Commit and Push。这次我得到另一个错误:“无法推送,因为当前分支不跟踪远程分支,将更改发布到远程。”当我右键单击本地主分支时,发布选项显示为灰色,因此我无法发布它。
对于解决方法,我右键单击远程/主分支,然后选择新的本地分支,并选择“跟踪远程分支(配置为使用远程/主站进行推拉)”选项。我将此分支命名为local_master,现在是已发布的分支。我假设我在上面选择的选项允许我现在将更改从我新发布的local_master分支推送到远程/主分支。当我对local_master进行更改时,提交,然后尝试按I而不是出现此错误:“本地推送(还)支持推送到非裸存储库。”然后我右键单击远程/主分支并尝试从我的local_master合并到远程/主服务器,它说它运行成功,但我的代码更改不在远程/主服务器中。
我花了将近8个小时试图让这个工作并研究其他解决方案并且没有成功,而且我的目的就在于我的智慧。有人知道如何在网络驱动器上创建远程存储库,然后使用VS2015中的内置git控件从本地存储库推送/拉到远程存储库吗?
答案 0 :(得分:3)
这是我目前的工作流程:
YourProjectName.git
YourProjectName.git\config
(我推荐使用Notepad ++,因为它没有关于保存没有扩展名的文件的疑虑,这是必需的。此文件不能保存为config.txt )config
中:
删除第logallrefupdates = true
行
将行bare = false
更改为bare = true
将文件另存为config
(没有文件扩展名!!)YourProjectName.git
目录复制到您希望主存储库生效的文件共享。cd C:\Users\YourUsername\Documents\Projects
。git clone //repo-server/c/CompanyRepos/YourProjectName.git
显然,其中许多步骤可能略有不同或无序,但重要的概念是在网络共享上初始化裸存储库,然后在本地将其克隆为完整存储库。
您从网络共享中删除现有存储库并克隆的原因是为了确保所有遥控器都已正确配置。
上面推荐的config
编辑只是将现有完整存储库转换为裸存储库的一种方法。或者,如果您从头开始创建新存储库,则只需在命令窗口中键入“git init --bare”即可。但是,值得注意的是“git init”和VS 2015的“Create new Git repository”并不完全相同;因为Visual Studio在初始化repo后添加了一些其他设置。这些设置并不重要,但我认为值得注意的是差异。