拉取期间不从git repo下载特定文件

拉取期间不从git repo下载特定文件,git,github,Git,Github,我有一个项目的git repo,我想使用git更新服务器上的文件(有时我在做了几天的工作后忘记复制所有更新的文件) 使用“pull”,我可以确保所有更新的文件都将下载到服务器中。但这也有不利的一面 生产版本和实时版本之间的连接字符串不同,因此在拉取更改时不应更新服务器上的web.config文件 我尝试了gitignore,但看起来它只适用于提交。如何保持web.config在服务器上的原样 我的repo在github上,服务器是windows2008,我使用git扩展 谢谢您不应该将特定于环境

我有一个项目的git repo,我想使用git更新服务器上的文件(有时我在做了几天的工作后忘记复制所有更新的文件)

使用“pull”,我可以确保所有更新的文件都将下载到服务器中。但这也有不利的一面

生产版本和实时版本之间的连接字符串不同,因此在拉取更改时不应更新服务器上的web.config文件

我尝试了gitignore,但看起来它只适用于提交。如何保持web.config在服务器上的原样

我的repo在github上,服务器是windows2008,我使用git扩展

谢谢

您不应该将特定于环境的配置文件签入版本控制,而应该手动将它们放在服务器上。这种方法具有以下优点:

  • 将应用程序部署到不同环境(开发、测试、生产)时,麻烦更少
  • 提高敏感数据的安全性。可能任何开发人员都可以访问版本控制,但可能他们不应该访问密码等敏感数据。引入获取密码的更改的提交是可检测的,并且会被检测到,仅仅登录到数据库可能不会
  • 此外,恶意软件获取这些信息要困难得多,因为它需要进入服务器,而不是开发人员的机器

您是否考虑过不将配置文件签入版本控制,而是手动将其放在服务器上?特定于机器的配置不应在源代码管理中,也不应随意使用。影响代码行为的配置没有问题。sql的连接字符串是特定于机器/环境的-请将其从web.config中删除,因为您希望web.config用于@TimWolla所说的其他特定于代码的设置。如果不是这样,要么就这样,要么就这样。答案比我想象的要简单得多,谢谢各位。@dvdnhm我把这些评论整理成了一个答案,并添加了一些额外的信息。