Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在单独的Git存储库中维护基本代码?_C#_Git_Visual Studio 2015_Azure Devops - Fatal编程技术网

C# 如何在单独的Git存储库中维护基本代码?

C# 如何在单独的Git存储库中维护基本代码?,c#,git,visual-studio-2015,azure-devops,C#,Git,Visual Studio 2015,Azure Devops,首先,我对VSTS和Git还不熟悉,所以如果我的术语弄糊涂了,我深表歉意 问题 我的情况是,我有一个VS/C#项目(称为“PluginBase”),本质上就是插件的“起始模板”代码。历史上,每当我想为特定客户创建新的“定制/衍生”构建时,我都会复制PluginBase项目代码 我希望能够做到的是,当bug修复得到解决并将功能添加到PluginBase项目时,我希望能够选择将这些更改迁移到一个或多个“定制/衍生”版本。同样,如果这个bug是在开发“定制/派生”构建时发现的,我想将它迁移回Plugi

首先,我对VSTS和Git还不熟悉,所以如果我的术语弄糊涂了,我深表歉意

问题 我的情况是,我有一个VS/C#项目(称为“PluginBase”),本质上就是插件的“起始模板”代码。历史上,每当我想为特定客户创建新的“定制/衍生”构建时,我都会复制PluginBase项目代码

我希望能够做到的是,当bug修复得到解决并将功能添加到PluginBase项目时,我希望能够选择将这些更改迁移到一个或多个“定制/衍生”版本。同样,如果这个bug是在开发“定制/派生”构建时发现的,我想将它迁移回PluginBase插件

思想 从我的研究中,我发现了一些实现目标的“可能”方法,但我不确定这些方法中哪种(如果有的话)是合适的

  • 分支机构
    • 似乎是常用的方法,也许是“最好的”,但是
    • 意味着所有代码必须在同一个存储库中?(否则就不能“樱桃采摘”——我宁愿避免,因为这可能并不总是可能的
  • Git子模块
    • 当项目共享一个公共的“库”(不是从同一个代码库派生)时,似乎更适合
    • 还不确定Visual Studio是否完全支持此功能
  • 樱桃采摘
    • 从一个存储库到另一个存储库似乎不可能这样做
  • Git补丁
    • Visual Studio似乎还不支持此功能
因此,如果有人对我可以(或应该)使用的方法有任何建议、指导或新建议,我将非常感谢您的意见


非常感谢!:)

Git分支绝对是一条必由之路。代码确实必须在同一个存储库中,git存储更改集,为了应用更改集,git必须知道代码路径分裂后发生了什么,否则它无法替换正确的代码行


为每一次向客户推出一个版本创建一个分支,然后您就可以在不同的分支之间进行挑选。

Git分支无疑是一条必经之路。代码确实必须在同一个存储库中,git存储更改集,为了应用更改集,git必须知道代码路径分裂后发生了什么,否则它无法替换正确的代码行


为每次向客户推出一个版本创建一个分支,然后您可以在不同的分支之间进行挑选。

为什么要避免将所有代码都放在同一个存储库中?正如@prof1990所说。我曾经在不同的存储库中定制过相同代码的版本,但这并不好。当它们是同一存储库的分支时,生活就简单多了。“同一存储库的分支”在git中不是一个东西。也许你是说叉子?至少还有一种方法。您可以有多个远程存储库。示例:您有一个基本模块“SRC”;将存储库转移到“A”并下载它。“A”的本地副本中可以有多个源。之后,将'SRC'添加到'A'作为辅助存储库。更改“SRC”时,请在“a”中使用“fetch all”。现在,您可以将任何分支从“SRC”合并到“A”。在这种情况下,即使是樱桃采摘应该工作,但我没有测试它。唯一的问题是,您需要使用GIT服务器。@谢谢您的建议。我希望避免将所有代码放在一个地方的原因是,我可以将“特定于客户”的代码放在一个存储库中,而将核心代码放在另一个存储库中。但看起来我可能不得不重新考虑这个问题。另外,我最初认为我应该对每个客户项目从基础项目中“分叉”(比如Github),并使用拉请求来来回推送提交。然后我意识到“Fork”是GitHub的一个特性,目前在VST中不存在。为什么要避免所有代码都在同一个存储库中?@prof1990是怎么说的。我曾经在不同的存储库中定制过相同代码的版本,但这并不好。当它们是同一存储库的分支时,生活就简单多了。“同一存储库的分支”在git中不是一个东西。也许你是说叉子?至少还有一种方法。您可以有多个远程存储库。示例:您有一个基本模块“SRC”;将存储库转移到“A”并下载它。“A”的本地副本中可以有多个源。之后,将'SRC'添加到'A'作为辅助存储库。更改“SRC”时,请在“a”中使用“fetch all”。现在,您可以将任何分支从“SRC”合并到“A”。在这种情况下,即使是樱桃采摘应该工作,但我没有测试它。唯一的问题是,您需要使用GIT服务器。@谢谢您的建议。我希望避免将所有代码放在一个地方的原因是,我可以将“特定于客户”的代码放在一个存储库中,而将核心代码放在另一个存储库中。但看起来我可能不得不重新考虑这个问题。另外,我最初认为我应该对每个客户项目从基础项目中“分叉”(比如Github),并使用拉请求来来回推送提交。然后我意识到“Fork”是GitHub的一个特性,目前还没有出现在VST中。似乎大家都一致认为这是推荐的方法(而且可以减少麻烦!)。再次感谢大家的建议!:)似乎大家都一致认为这是推荐的方法(而且可以减少麻烦!)。再次感谢大家的建议!:)