開發者必知:.gitignore 文件的魔法,助你管理項目文件如虎添翼!

前言:

在軟件開發的世界中,版本控制是一個至關重要的環節。而 Git 作為目前最流行的分布式版本控制系統之一,已經成為開發者不可或缺的工具。然而,在日常的開發過程中,有些文件是不適合被納入版本控制的,比如編譯產生的臨時文件、IDE生成的配置文件等。為了更好地管理版本庫,我們需要介紹并深入理解 .gitignore 文件,它能夠幫助我們過濾掉那些不應被跟蹤的文件。
在這里插入圖片描述

內容:

視頻教程地址:https://www.bilibili.com/video/BV1fp4y1u7aK/

什么是 .gitignore 文件?

.gitignore 文件是一個文本文件,用于指示 Git 哪些文件或目錄應該被忽略,不納入版本控制。在項目的根目錄下創建一個名為 .gitignore 的文件,并在其中列出你希望排除的文件、文件夾或者通配符模式。

基本語法和規則

● 使用 ‘#’ 開頭的行被視為注釋,可以在文件中添加說明。
● 每一行描述一個需要忽略的模式,可以是文件、文件夾或者通配符。
● 以 ‘/’ 開頭表示從項目根目錄開始匹配,否則會在項目內所有目錄中搜索。
● 以 ‘/’ 結尾表示匹配文件夾,而不是同名文件。
● 通過 ‘!’ 取消忽略,即使之前有忽略規則。

常見用法示例

  1. 忽略特定文件:例如, ‘*.log’ 將忽略所有以 .log 結尾的文件。
  2. 忽略文件夾:例如, ‘node_modules/’ 將忽略整個 node_modules 文件夾。
  3. 使用通配符: ‘build/*.exe’ 將忽略 build 文件夾下所有的 .exe 文件。
  4. 排除特定文件: ‘!config.ini’ 將取消對 config.ini 文件的忽略。

其他示例

如果在 .gitignore 文件中寫了test,那么會忽略哪些文件

如果你在 .gitignore 文件中寫入了 “test” 這個模式,它將會忽略所有文件名為 “test” 的文件。這包括項目中任何位置的 “test” 文件,無論是文件擴展名是什么,還是它們位于項目的哪個子目錄。

例如,如果你的項目結構如下:

- project_folder/- test.txt- src/- test.js- assets/- image_test.png

如果你在 .gitignore 文件中添加了一行 “test”,那么以上這些文件都會被忽略,不會被納入版本控制。

請注意,.gitignore 文件的匹配是基于字符串的,而不是正則表達式。所以,“test” 將匹配任何包含 “test” 的文件名。如果你只想忽略特定位置或者特定擴展名的文件,需要使用更詳細的規則,比如 “/test/” 來匹配文件夾,或者 “*.txt” 來匹配所有的 .txt 文件。

如果二級文件夾下面依舊有.gitignore文件呢

如果你的二級文件夾下面也有一個名為 .gitignore 的文件,那么 Git 會對每個文件夾中的 .gitignore 文件分別進行處理。.gitignore 文件的規則將會根據文件所在的文件夾逐級應用,從而影響文件的版本控制狀態。

具體來說,如果你在一個子文件夾中有一個 .gitignore 文件,它會覆蓋父文件夾中的規則,并且只會影響該子文件夾及其子目錄中的文件。這就意味著你可以在不同的子目錄中使用不同的規則來控制版本控制狀態。

例如,考慮以下項目結構:

- project/- .gitignore (規則 A)- src/- .gitignore (規則 B)- file1.js- assets/- .gitignore (規則 C)- image.png

● project/.gitignore 中的規則 A 將會影響整個項目根目錄。
● project/src/.gitignore 中的規則 B 將會影響 src 文件夾及其子目錄。
● project/assets/.gitignore 中的規則 C 將會影響 assets 文件夾及其子目錄。

這種分級的 .gitignore 文件允許你在不同層級上定義特定的忽略規則,從而更細粒度地控制文件的版本控制狀態。

高級用法與細節

● 你可以在 .gitignore 文件中使用 shell 通配符,如 ‘*’、‘?’、‘[]’ 等。
● 通過 ‘/.gitignore’ 將 .gitignore 文件自身納入版本控制。
● 在團隊協作中,建議將共享的 .gitignore 規則添加到項目中,以確保所有開發者都遵循相同的規范。

總結:

.gitignore 文件在版本控制中扮演著關鍵的角色,它使得開發者能夠更加靈活地管理項目中的文件。通過簡單的語法規則,我們可以過濾掉無關的文件,保持版本庫的整潔。無論是個人項目還是團隊協作,深入理解 .gitignore 文件的使用方法,都能夠為項目的開發與維護帶來便利與效率。讓我們在日常開發中充分利用這一工具,創造更優秀的代碼庫。

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

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

相關文章

leetcode242. 有效的字母異位詞

題目:leetcode242. 有效的字母異位詞 描述: 給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意:若 s 和 t 中每個字符出現的次數都相同,則稱 s 和 t 互為字母異位詞。 示例 1: 輸入: s “…

【React | 前端】在React的前端頁面中,判斷某個變量值是否被定義?根據是否定義顯示不同的內容?

問題描述 在React的前端頁面中,判斷某個變量值是否被定義?根據是否定義顯示不同的內容? 問題場景 假如,現在有一個需求是設計一個新功能,新功能中要求新增一個之前沒有的變量,假設是計算某一個數組的長度…

基于Java+SpringBoot+Vue的數碼論壇系統設計與實現(源碼+LW+部署文檔等)

博主介紹: 大家好,我是一名在Java圈混跡十余年的程序員,精通Java編程語言,同時也熟練掌握微信小程序、Python和Android等技術,能夠為大家提供全方位的技術支持和交流。 我擅長在JavaWeb、SSH、SSM、SpringBoot等框架…

【C語言】深度剖析數據在內存中的存儲

一、數據類型詳細介紹 1、數據類型介紹 (1)基本的內置類型 //內置類型就是C語言自帶的類型char //字符數據類型 short //短整型 int //整形 long //長整型 long long //更長的整形 float //單精度浮點數 double …

微信小程序使用rich-text解析富文本字符串的時候,遇到image標簽圖片很大超過屏幕

場景: 使用uniapp開發微信小程序,解析富文本文章需求 用到的組件: u-view2.0的u-parse uniapp提供的rich-text 以上兩種組件都是解析富文本的作用,一般用于富文本解析場景,比如解析文章內容,商品詳情&am…

桶排序-1184:明明的隨機數

【題目描述】 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了N個1到1000之間的隨機整數(N≤100),對于其中重復的數字,只保留一個,把其余相同的數去掉&#x…

安防監控視頻匯聚平臺EasyCVR分發的FLV視頻流在VLC中無法播放是什么原因?

眾所周知,TSINGSEE青犀視頻匯聚平臺EasyCVR可支持多協議方式接入,包括主流標準協議國標GB28181、RTSP/Onvif、RTMP等,以及廠家私有協議與SDK接入,包括海康Ehome、海大宇等設備的SDK等。在視頻流的處理與分發上,視頻監控…

【jvm】jvm的生命周期

目錄 一、啟動二、執行三、退出 一、啟動 1.java虛擬機的啟動是通過引導類加載器bootstrap class loader創建一個初始類(initial class)來完成的,這個類是由虛擬機的具體實現指定的(根據具體虛擬機的類型) 二、執行 1.一個運行中的java虛擬機…

ORACLE行轉列、列轉行實現方式及案例

ORACLE行轉列、列轉行實現方式及案例 行轉列案例方式1.PIVOT方式2.MAX和DECODE方式3.CASE WHEN和GROUP BY 列轉行案例方式1.UNPIVOT方式2.UNION ALL 行轉列 案例 假設我們有一個名為sales的表,其中包含了產品銷售數據。表中有三列:product(…

FPGA實踐 ——Verilog基本實驗步驟演示

0x00 回顧:AND/OR/NOT 邏輯的特性 AND:與門可以具有兩個或更多的輸入,并返回一個輸出。當所有輸入值都為 1 時,輸出值為 1。如果輸入值中有任何一個為 0,則輸出值為 0。 OR:或門可以具有兩個或更多的輸入…

【python】-【】

文章目錄 轉義字符和原字符二進制與字符編碼標識符和保留字變量的定義和使用變量字符串列表for 一、print會輸出①數字②字符串(必須加引號)③含有運算符的表達式(例如 31 其中3,1是操作數,是運算符)&#…

vector的模擬實現

什么是vector vector是一個封裝了動態大小數組的順序容器跟任意其它類型容器一樣,它能夠存放各種類型的對象。 模擬實現 實現前的準備 在實現vector之前,為了和庫里的區分開需要將實現的vector放在一個自定義的命名空間里。而且vector需要實現成模版…

論文閱讀 - Neutral bots probe political bias on social media

論文鏈接:Neutral bots probe political bias on social media | EndNote Click 試圖遏制濫用行為和錯誤信息的社交媒體平臺被指責存在政治偏見。我們部署中立的社交機器人,它們開始關注 Twitter 上的不同新聞源,并跟蹤它們以探究平臺機制與用…

超導熱催生meme,換湯不換藥的投機輪回

文/章魚哥 出品/陀螺財經 幣圈對炒作meme概念的熱情從未消亡過。 隨著一種名為LK-99的物質被發現,圍繞超導的興奮不僅激發了科學界,加密貨幣相關概念也與之沸騰。不出所料,與此前圍繞元宇宙、AI大肆炒作一樣,許多meme代幣已經出現…

關于MySQL中的binlog

介紹 undo log 和 redo log是由Inno DB存儲引擎生成的。 在MySQL服務器架構中,分為三層:連接層、服務層(server層)、執行層(存儲引擎層) bin log 是 binary log的縮寫,即二進制日志。 MySQL…

android開發之Android 自定義滑動解鎖View

自定義滑動解鎖View 需求如下: 近期需要做一個類似屏幕滑動解鎖的功能,右劃開始,左劃暫停。 需求效果圖如下 實現效果展示 自定義view如下 /** Desc 自定義滑動解鎖View Author ZY Mail sunnyfor98gmail.com Date 2021/5/17 11:52 *…

數據結構——線性表

文章目錄 線性表的定義和基本操作順序表線性表的鏈式表示 線性表的定義和基本操作 線性表是具有相同數據類型的(n≥0)個數據元素的有限序列,其中n為表長,當n0時線性表是一個空表。若用L命名線性表,則其中一般表示為:L(a1,a2,a3, …

.NET實現解析字符串表達式

一、引子功能需求 我們創建了一個 School 對象&#xff0c;其中包含了教師列表和學生列表。現在&#xff0c;我們需要計算教師平均年齡和學生平均年齡。 //創建對象 School school new School() {Name "小菜學園",Teachers new List<Teacher>(){new Teach…

CCLINK轉MODBUS-TCP網關cclink通訊接線圖 終端電阻

大家好&#xff0c;今天我們要聊的是生產管理系統中的CCLINK和MODBUS-TCP協議&#xff0c;它們的不同使得數據互通比較困難&#xff0c;但捷米JM-CCLK-TCP網關的出現改變了這一切。 1捷米JM-CCLK-TCP是一款自主研發的CCLINK從站功能的通訊網關&#xff0c;它的主要功能是將各種…

后端開發5.Redis的搭建

使用docker安裝 Redis【redis】(6379) 拉取Redis鏡像 docker pull redis:6.2.6 啟動Redis容器 docker run -di --name=redis -p 6379:6379 redis:6.2.6 啟動Redis容器并設置密碼 docker run -di --name=redis -p 6379:6379 redis:6.2.6 --requirepass "密碼" 測…