C#开发者的Git工作流:从混乱到有序

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C#开发者的Git工作流:如何不再害怕合并并开始高效工作



您是否曾经花费半天时间来弄清楚是谁以及何时重写了您心爱的CalculateOrderTotal()方法?或者,您是否曾将“紧急修复”直接推送到master,然后生产环境因NullReferenceException错误而崩溃?熟悉吗?欢迎加入那些在没有清晰工作流的Git混乱中挣扎求生的C#开发者俱乐部。



如果您认为Git只是git add .和git push,那您就错过了重点。正确的Git工作流不是宗教争论,而是一个节省神经、时间和金钱的工具。尤其是在C#的世界里,我们有解决方案文件(.sln)、项目文件(.csproj)和大量容易冲突的NuGet包。



在本文中,我将向您展示实用的分支策略、C#的真实代码示例,并告诉您如何自动化日常任务。我们开始吧!



为什么C#项目需要特殊的Git处理方法?



当您使用C#时,您处理的不仅仅是文本文件。您会遇到:



  • 解决方案文件 (.sln) — 一个引用所有项目的文件。如果两个开发者同时添加新项目,合并冲突是必然的。
  • .csproj 文件 — 添加NuGet包或更改目标框架时会更新的XML文件。手动合并这些文件很痛苦。
  • appsettings.json 和 web.config — 通常包含连接字符串的配置文件。它们不应该被提交,但每个人都会忘记。
  • bin/ 和 obj/ 文件夹 — 如果您提交一次,同事们会永远诅咒您。


因此,您的C# Git工作流必须经过深思熟虑。而这一切都始于正确的.gitignore。



步骤 1:为C#配置 .gitignore



标准的C# .gitignore可以从GitHub/gitignore下载,但我会添加一些经常被遗漏的重要行:



# 包含机密的配置文件(不要提交!)appsettings.Development.jsonappsettings.Local.jsonsecrets.json

# ReSharper 或 Rider 生成的文件*.DotSettings.user*.DotSettings

# NuGet 包(缓存)packages/*.nupkg

# 测试结果TestResults/*.trx

# Visual Studio 文件夹.vs/*.suo*.user*.sln.docstates


为什么这很重要?想象一下,您提交了包含本地数据库连接字符串的appsettings.Development.json。同事拉取后,他的应用程序崩溃了,因为他没有那个数据库。这看起来像一个小疏忽,但却浪费了一个小时的工作时间。



为C#团队选择分支策略



有几种流行的Git工作流。对于C#项目,我推荐两种主要策略:Git Flow 和 Trunk-Based Development。让我们通过示例来了解它们。



选项 1:Git Flow(大型项目的经典选择)



Git Flow之于Git就像SOLID原则之于编程。当您有明确的版本发布(例如版本2.1.0、2.2.0)时,它是理想的选择。分支看起来像这样:



  • main — 仅包含稳定代码。
  • develop — 集成分支。
  • feature/XXX-123-add-new-api — 从develop分支出的功能分支。
  • release/2.1.0 — 发布准备分支。
  • hotfix/2.0.1-critical-bug — 从main分支出的紧急修复分支。


C#示例:您正在开发一个新功能“按促销码计算折扣”。



# 从develop创建功能分支git checkout developgit pullgit checkout -b feature/ABC-42-add-promo-discount

# 编写C#代码// DiscountService.cspublic class DiscountService{ public decima

博客

书籍推荐