.gitignore使用指南

.gitignore使用指南

目錄

  • 什么是.gitignore
  • 為什么需要.gitignore
  • 如何創建.gitignore文件
  • .gitignore文件的語法規則
    • 忽略單個文件
    • 忽略目錄
    • 忽略特定類型的文件
    • 不忽略特定文件或目錄
    • 遞歸匹配
  • 示例.gitignore文件
  • 注意事項
  • 更多特殊場景匹配規則
    • 忽略多個特定后綴的文件
    • 忽略特定目錄下的所有隱藏文件
  • 跨平臺使用差異
    • 路徑分隔符差異
    • 大小寫敏感性差異
    • 忽略特定前綴的文件
    • 忽略特定后綴的文件
  • 與其他工具集成
    • 與IDE集成
    • 與持續集成工具集成
  • 更復雜的匹配規則
    • 忽略特定目錄下的特定文件
    • 忽略特定目錄下的所有文件
  • 不同項目類型的最佳實踐
    • Python項目
    • Java項目
    • JavaScript項目
    • Go項目
    • C++項目
    • 更復雜的匹配規則
      • 忽略特定目錄下特定后綴的文件
      • 忽略特定目錄下特定前綴的文件
      • 忽略特定目錄下特定后綴和前綴的文件

什么是.gitignore

.gitignore 是一個文本文件,用于告訴Git哪些文件或目錄在版本控制中應該被忽略。當你執行 git add 命令時,Git會參考 .gitignore 文件的內容,不會將其中指定的文件添加到暫存區。

為什么需要.gitignore

在項目開發過程中,有些文件是不需要進行版本控制的,例如:

  • 編譯生成的文件:如 .class.pyc 等。
  • 日志文件:如 .log 文件。
  • 臨時文件:如 .tmp 文件。
  • 依賴文件:如 node_modules 目錄。

使用 .gitignore 可以避免將這些文件添加到版本庫中,減少版本庫的大小,同時也可以避免不必要的文件沖突。

如何創建.gitignore文件

在項目根目錄下創建一個名為 .gitignore 的文件,可以使用以下命令:

 touch .gitignore

.gitignore文件的語法規則

忽略單個文件

要忽略單個文件,只需在 .gitignore 文件中寫入該文件的名稱,例如:

 test.txt

這將忽略項目根目錄下的 test.txt 文件。

忽略目錄

要忽略整個目錄,在目錄名稱后面加上斜杠 /,例如:

 logs/

這將忽略項目根目錄下的 logs 目錄及其所有子目錄和文件。

忽略特定類型的文件

可以使用通配符 * 來忽略特定類型的文件,例如:

 *.log

這將忽略所有以 .log 結尾的文件。

不忽略特定文件或目錄

如果你想在忽略某個目錄的同時,不忽略其中的某個文件或子目錄,可以使用 ! 符號,例如:

 logs/
!logs/important.log

這將忽略 logs 目錄下的所有文件,但不忽略 logs/important.log 文件。

遞歸匹配

使用 ** 可以進行遞歸匹配,例如:

 **/*.log

這將忽略項目中所有目錄下的 .log 文件。

示例 .gitignore 文件

以下是一個常見的 .gitignore 文件示例,適用于Python項目:

 # Byte-compiled / optimized / DLL files__pycache__/*.pyc*.pyo*.pyd# C extensions*.so# Distribution / packagingdist/build/*.egg-info/# Logs and databases*.log*.sql*.sqlite# IDEs and editors.idea/.vscode/*.iml

注意事項

  • .gitignore 文件只對未被跟蹤的文件有效:如果一個文件已經被Git跟蹤,即使在 .gitignore 文件中添加了該文件,Git仍然會繼續跟蹤它。如果你想忽略已經被跟蹤的文件,可以使用 git rm --cached 命令將其從版本庫中移除。
  • .gitignore 文件的位置.gitignore 文件通常放在項目根目錄下,但也可以在子目錄中創建 .gitignore 文件,子目錄中的 .gitignore 文件只對該子目錄及其子目錄有效。
  • .gitignore 文件的優先級:子目錄中的 .gitignore 文件會覆蓋父目錄中的 .gitignore 文件。

更多特殊場景匹配規則

忽略多個特定后綴的文件

可以使用 | 結合正則表達式來忽略多個特定后綴的文件,需要在 .gitignore 文件中使用正則表達式模式,同時要確保 Git 支持正則表達式模式匹配。例如:

*.(log|tmp|bak)

這將忽略所有以 .log.tmp.bak 結尾的文件。

忽略特定目錄下的所有隱藏文件

可以使用 / 結合特定目錄和隱藏文件的前綴 . 來忽略特定目錄下的所有隱藏文件,例如:

/logs/.*

這將忽略 logs 目錄下的所有隱藏文件。

跨平臺使用差異

路徑分隔符差異

在 Windows 系統中,路徑分隔符是反斜杠 \,而在 Linux 和 macOS 系統中,路徑分隔符是正斜杠 /。在 .gitignore 文件中,應該始終使用正斜杠 / 作為路徑分隔符,因為 Git 會自動處理不同系統的路徑分隔符差異。例如:

logs/

無論是在 Windows、Linux 還是 macOS 系統中,這個規則都會正確忽略 logs 目錄。

大小寫敏感性差異

在 Windows 和 macOS 系統中,文件系統默認是大小寫不敏感的,而在 Linux 系統中,文件系統默認是大小寫敏感的。這意味著在 .gitignore 文件中,大小寫的匹配規則可能會有所不同。例如:

Test.txt

在 Windows 和 macOS 系統中,這個規則會忽略 Test.txttest.txt 等文件,而在 Linux 系統中,只會忽略 Test.txt 文件。如果需要在不同系統中保持一致的匹配規則,建議在 .gitignore 文件中使用一致的大小寫。

忽略特定前綴的文件

可以使用 * 結合特定前綴來忽略以特定字符串開頭的文件,例如:

prefix_*

這將忽略所有以 prefix_ 開頭的文件。

忽略特定后綴的文件

除了使用 * 忽略特定后綴的文件,還可以使用 ? 來匹配單個字符,例如:

*.log?

這將忽略所有以 .log 開頭,后面跟一個任意字符的文件。

與其他工具集成

與IDE集成

許多集成開發環境(IDE)可以自動識別 .gitignore 文件,并在文件瀏覽和搜索中排除被忽略的文件。例如,在IntelliJ IDEA中,被 .gitignore 文件忽略的文件會以灰色顯示,并且不會出現在項目搜索結果中。

與持續集成工具集成

在持續集成(CI)環境中,.gitignore 文件可以幫助排除不必要的文件,減少構建時間和資源消耗。例如,在Jenkins或GitLab CI/CD中,構建過程會自動遵循 .gitignore 文件的規則,只處理需要的文件。

更復雜的匹配規則

忽略特定目錄下的特定文件

可以使用 / 結合特定目錄和文件名來忽略特定目錄下的特定文件,例如:

/logs/*.log

這將忽略 logs 目錄下的所有 .log 文件。

忽略特定目錄下的所有文件

可以使用 / 結合特定目錄來忽略特定目錄下的所有文件,例如:

/logs/

這將忽略 logs 目錄下的所有文件。

不同項目類型的最佳實踐

Python項目

# Byte-compiled / optimized / DLL files
__pycache__/
*.pyc
*.pyo
*.pyd# C extensions
*.so# Distribution / packaging
/dist/
/build/
*.egg-info/# Logs and databases
*.log
*.sql
*.sqlite# IDEs and editors
.idea/
.vscode/
*.iml

Java項目

# Compiled class file
*.class# Log file
*.log# BlueJ files
*.ctxt# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

JavaScript項目

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
nyan-debug.log*# Runtime data
pids
*.pid
*.seed
*.pid.lock# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov# Coverage directory used by tools like istanbul
coverage# nyc test coverage
.nyc_output# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt# Bower dependency directory (https://bower.io/)
bower_components# node-waf configuration
.lock-wscript# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release# Dependency directories
node_modules/
jspm_packages/# TypeScript v1 declaration files
typings/# TypeScript cache
.tscache

Go項目

# Binaries for programs and plugins
*.exe
*.exe~ 
*.dll
*.so
*.dylib# Test binary, built with "go test -c"
*.test# Output of the go coverage tool, specifically when used with LiteIDE
*.out

C++項目

# Compiled Object files
*.slo
*.lo
*.o
*.obj# Precompiled Headers
*.gch
*.pch# Compiled Dynamic libraries
*.so
*.dylib
*.dll# Fortran module files
*.mod
*.smod# Executables
* 

更復雜的匹配規則

忽略特定目錄下特定后綴的文件

可以使用 / 結合特定目錄和后綴來忽略特定目錄下特定后綴的文件,例如:

/logs/*.log

這將忽略 logs 目錄下的所有 .log 文件。

忽略特定目錄下特定前綴的文件

可以使用 / 結合特定目錄和前綴來忽略特定目錄下特定前綴的文件,例如:

/logs/prefix_*

這將忽略 logs 目錄下所有以 prefix_ 開頭的文件。

忽略特定目錄下特定后綴和前綴的文件

可以使用 / 結合特定目錄、前綴和后綴來忽略特定目錄下特定后綴和前綴的文件,例如:

/logs/prefix_*.log

這將忽略 logs 目錄下所有以 prefix_ 開頭且以 .log 結尾的文件。

以上就是 .gitignore 文件的基本使用指南以及更多特殊匹配規則和不同項目類型的最佳實踐等內容,希望對你有所幫助。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/898818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/898818.shtml
英文地址,請注明出處:http://en.pswp.cn/news/898818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV旋轉估計(3)幫助構建一個最大生成樹(Maximum Spanning Tree)函數findMaxSpanningTree()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 cv::detail::findMaxSpanningTree 是 OpenCV 中用于圖像拼接工作流的一個函數,它幫助構建一個最大生成樹(Maximum Spanni…

Android在kts中簡單使用AIDL

Android在kts中簡單使用AIDL AIDL相信做Android都有所了解,跨進程通信會經常使用,這里就不展開講解原理跨進程通信的方式了,最近項目換成kts的方式,于是把aidl也換成了統一的方式,其中遇到了很多問題,這里…

論文閱讀:2024-NAACL Semstamp、2024-ACL (Findings) k-SemStamp

總目錄 大模型安全相關研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Semstamp: A semantic watermark with paraphrastic robustness for text generation https://aclanthology.org/2024.naacl-long.226/ k-SemStamp: A Clustering-Based Semantic Wate…

物化視圖詳解:數據庫性能優化的利器

物化視圖(Materialized View)作為數據庫性能優化的核心手段,通過預計算和存儲查詢結果,顯著提升了復雜查詢的效率。本文將深入剖析物化視圖的工作原理、應用場景及最佳實踐,幫助企業在合適的場景中充分發揮其性能優勢。…

快速入手:Nacos融合SpringCloud成為注冊配置中心

快速入手:Nacos融合SpringCloud成為注冊配置中心 前言安裝Nacos項目搭建添加配置啟動類添加注解運行項目服務調用RestTemplate 模式FeignClient 模式 Gateway 網關 前言 Spring Cloud是一系列框架的集合,提供了微服務架構下的各種解決方案,如…

2025年2月-3月后端go開發找工作感悟

整體感悟 目標 找工作首先要有一個目標,這個目標盡可能的明確,比如我要字節、拼多多之類的公司,還是要去百度、滴滴這樣的,或者目標是創業公司。但是這個目標是會動態調整的,有可能我們的心態發生了變化,一…

Python | 如何在Pandas中刪除常量列

在數據分析中,經常會遇到數據集中始終具有常量值的列(即,該列中的所有行包含相同的值)。這樣的常量列不提供有意義的信息,可以安全地刪除而不影響分析。 如: 在本文中,我們將探索如何使用Pyth…

5.高頻加熱的原理與常用集成電路介紹

一、高頻加熱的類型 利用高頻電源加熱通常由兩種方法:電介質加熱(被加熱物體絕緣)與感應加熱(被加熱物體導電),詳細解釋如下: 電介質加熱(利用高頻電壓的高頻電場導致物體自身分子摩…

串口通信與Modbus通信的區別和聯系

一、定義與定位 1?、串口通信? 是物理層的硬件接口標準,用于實現設備間的?串行數據傳輸?,常見類型包括RS-232、RS-485和RS-422?35。其功能是完成并行數據與串行信號的轉換,并定義電氣特性(如電平、傳輸速率)?。…

Linux生產者消費者模型

Linux生產者消費者模型 Linux生產者消費者模型詳解生產者消費者模型生產者消費者模型的概念生產者消費者模型的特點生產者消費者模型優點 基于BlockingQueue的生產者消費者模型基于阻塞隊列的生產者消費者模型模擬實現基于阻塞隊列的生產消費模型基礎實現生產者消費者步調調整條…

【中文翻譯】第9章-The Algorithmic Foundations of Differential Privacy

由于GitHub項目僅翻譯到前5章,我們從第6章開始通過大語言模型翻譯,并導出markdown格式。 大模型難免存在錯漏,請讀者指正。 教材原文地址:https://www.cis.upenn.edu/~aaroth/Papers/privacybook.pdf 9 差分隱私與計算復雜度 到目…

【AI大模型】搭建本地大模型GPT-NeoX:詳細步驟及常見問題處理

搭建本地大模型GPT-NeoX:詳細步驟及常見問題處理 GPT-NeoX是一個開源的大型語言模型框架,由EleutherAI開發,可用于訓練和部署類似GPT-3的大型語言模型。本指南將詳細介紹如何在本地環境中搭建GPT-NeoX,并解決過程中可能遇到的常見問題。 1. 系統要求 1.1 硬件要求 1.2 軟…

Unity跨平臺構建快速回顧

知識點來源:人間自有韜哥在,豆包 目錄 一、發布應用程序1. 修改發布必備設置1.1 打開設置面板1.2 修改公司名、游戲項目名、版本號和默認圖標1.3 修改 Package Name 和 Minimum API Level 2. 發布應用程序2.1 配置 Build Settings2.2 選擇發布選項2.3 構…

低配電腦暢玩《怪物獵人:荒野》,ToDesk云電腦優化從30幀到144幀?

《怪物獵人:荒野(Monster Hunter Wilds)》自2025年正式發售以來已取得相當亮眼的成績,僅用三天時間便輕松突破800萬銷量,目前順利蟬聯周榜冠軍;憑借著開放世界的宏大場景和豐富的狩獵玩法,該游戲…

Flink基礎簡介和安裝部署

文章目錄 一、Flink基礎簡介1、什么是Flink2、Flink流處理特性3、Flink四大基石4、Flink中的角色 二、Flink集群搭建1、Local模式①上傳Flink安裝包②啟動交互窗口③提交任務測試④訪問WebUI頁面查看④退出停止集群 一、Flink基礎簡介 1、什么是Flink Flink是?個分布式&#…

【2025】基于ssm+jsp的二手商城系統設計與實現(源碼、萬字文檔、圖文修改、調試答疑)

基于SSMJSP的二手商城系統設計與實現系統功能結構圖: 課題背景 隨著經濟的發展和人們生活水平的提高,二手交易市場日益活躍。人們對于閑置物品的處理方式逐漸從傳統的廢品回收轉變為通過二手交易平臺進行再利用。這種交易模式不僅能夠幫助用戶節省開支&a…

幻影星空亮相CAAPA北京展 引領文旅產業升級轉型

3月19日,中國游藝機游樂園協會(CAAPA)主辦的2025中國(北京)國際游樂設施設備博覽會及2025北京國際旅游休閑娛樂產業博覽會在北京盛大啟幕。在這場行業盛會上,廣州卓遠旗下的“幻影星空”品牌以創新性的虛擬…

銀河麒麟桌面版包管理器(二)

以下內容摘自《銀河麒麟操作系統進階應用》一書 APT包管理器 APT是Debian及其派生系統的包管理器,構建在dpkg之上,以其強大的依賴性處理能力和豐富的軟件倉庫而聞名。APT具有自動解決依賴關系、提供易于使用的命令行工具(如apt-get、apt-ca…

【STM32實物】基于STM32的掃地機器人/小車控制系統設計

基于STM32的掃地機器人/小車控制系統設計 演示視頻: 基于STM32的掃地機器人小車控制系統設計 簡介:掃地機器人系統采用分層結構設計,主要包括底層硬件控制層、中間數據處理層和上層用戶交互層。底層硬件控制層負責對各個硬件模塊進行控制和數據采集,中間數據處理層負責對采…

STM32收發數據包中間件——ProtoFlow,更方便的打包解包助手

引言 在嵌入式開發中,數據包封裝是不可或缺的一環。手動編寫協議不僅耗時,還容易出錯。ProtoFlow 的出現,就是為了讓數據包封裝變得簡單、高效、可靠。它不僅占用資源少,還能適配多種場景,是你項目的理想助手。 項目地…