草庐IT

程序员必备技巧:.gitignore文件怎么写和最佳实践

robot_learner 2023-11-26 原文

当你在Git仓库上工作时,创建一个.gitignore文件告诉Git在提交更改时忽略哪些文件和目录是很重要的。这可以帮助保持仓库的干净并防止不必要的文件被提交。在这篇博客中,我们将介绍一些创建.gitignore文件的最佳实践,并提供一个推荐的.gitignore文件,供您作为起点使用。

1. 忽略生成的文件

许多编程语言和工具在构建过程中自动生成文件。这些文件不需要提交到您的Git仓库中,而且通常会非常大。生成的文件包括.class、.jar、.o和.pyc等。通过忽略生成的文件,您可以使您的仓库保持精简,并避免将不必要的文件弄乱。

2. 忽略敏感信息

避免将密码、API密钥和访问令牌等敏感信息存储在Git仓库中。如果您意外提交此类信息,它可能会被其他人看到,从而导致安全问题。要忽略的文件包括.key、.pem、.env和.config等。

3. 忽略用户特定文件

您应该避免提交特定于您本地环境或个人设置的文件。这些文件可能因用户而异,如果提交到仓库中可能会引起冲突。用户特定文件的示例包括.log、.swp、.DS_Store和Thumbs.db。

4. 忽略构建产物和输出

除了生成的文件之外,您还可以忽略构建产物和输出文件。这些文件通常是运行代码的结果,但在版本控制中跟踪它们并不必要。要忽略的文件和目录的示例包括/bin、/build、/dist和/target等。

5. 忽略第三方库和依赖项

如果您使用包管理器来管理依赖项,您应该避免将实际的包提交到您的Git仓库中。而是提交一个列出依赖项的文件,例如requirements.txt或package.json文件。要忽略的目录示例包括/node_modules、/vendor、/.venv和/.gradle等。

推荐的.gitignore文件

以下是一个推荐的.gitignore文件,它包括我们上面讨论的最佳实践:

# 忽略生成的文件
*.class
*.jar
*.o
*.pyc
*.dll

# 忽略敏感信息
*.key
*.pem
*.env
*.config

# 忽略用户特定文件
*.log
*.swp
*.DS_Store
Thumbs.db

# 忽略构建产物和输出
/bin
/build
/dist
/target

# 忽略第三方库和依

通过使用这个 .gitignore 文件,您可以确保您的 Git 仓库保持干净有序,并避免将不必要的文件提交到您的仓库中。

创建 .gitignore 文件

要创建 .gitignore 文件,您可以使用任何文本编辑器或代码编辑器。只需打开一个新文件,将我们提供的推荐 .gitignore 文件内容添加到其中,或根据您的需要进行自定义。

将文件保存为 .gitignore,并保存在您的仓库根目录下。

提交和推送 .gitignore 文件
一旦您创建了 .gitignore 文件,就需要将其提交和推送到您的 Github 仓库中。

git add .gitignore
git commit -m "Add ignore rule for files starting with dot"
git push 

您不需要将 .gitignore 文件推送到 Github,但如果您这样做,其他人就可以查看它,并按照与您相同的原则进行操作。

英文链接

来读一下英文版

AI好书推荐

AI日新月异,但是万丈高楼拔地起,离不开良好的基础。您是否有兴趣了解人工智能的原理和实践? 不要再观望! 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写,这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者,本书都能满足您的需求。 那为什么还要等呢?

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

有关程序员必备技巧:.gitignore文件怎么写和最佳实践的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  3. ruby - 其他文件中的 Rake 任务 - 2

    我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时

  4. ruby-on-rails - 在 Rails 中将文件大小字符串转换为等效千字节 - 2

    我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,

  5. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  6. ruby-on-rails - Rails 3 中的多个路由文件 - 2

    Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题

  7. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  10. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

随机推荐