Skip to content

Commit 9bbc746

Browse files
committed
Initial commit
1 parent 41d6cdf commit 9bbc746

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
---
2+
title: "Understanding gitignore: A Simple Guide"
3+
author: "rajwanur"
4+
date: "2025-09-04"
5+
categories: [git, tools, version-control]
6+
toc: TRUE
7+
toc-title: "Table of contents"
8+
toc-depth: 5
9+
---
10+
11+
# Understanding gitignore: A Simple Guide
12+
13+
If you are working with Git but find yourself dealing with unnecessary files cluttering your repository, **.gitignore** is a tool that can help. Let's explore what it does in plain terms.
14+
15+
## What is gitignore?
16+
17+
.gitignore is simply a text file that tells **Git** which files or folders to ignore in your project. It works like an instruction list for version control - when Git sees something mentioned in this file, it pretends that file doesn't exist and will not include it in tracking changes.
18+
19+
Think of it as creating a "do not pack" list before the travel. .gitignore helps programmers avoid committing files they don't want to track. It also helps programmers exclude the files that don't need to be versioned.
20+
21+
## The Problem It Solves
22+
23+
When working with code - especially languages like SAS, R, or Python - we often generate temporary files:
24+
25+
- Log files showing execution results
26+
- Temporary output files
27+
- Large datasets created during processing
28+
- Configuration files specific to the local machine
29+
- Compiled binaries and dependencies
30+
31+
These files can clutter the repository, making it harder to see actual code changes. They also unnecessarily increase repository size, which can slow down operations.
32+
33+
![Cluttered vs Clean Repository](cluttered-vs-clean.png)
34+
35+
.gitignore solves this by automatically excluding these unwanted files from version control without someone having to manually specify each time.
36+
37+
## How It Works
38+
39+
The .gitignore file uses simple patterns to match filenames:
40+
41+
- `*.log` - ignores all files ending with .log
42+
- `temp/` - ignores any folder named temp
43+
- `/build/` - ignores a build folder in the root directory
44+
- `*.tmp` - ignores all temporary files with extension `.tmp`
45+
- `!*.sas` - **do not ignore** all files ending with .sas
46+
- `# This is a comment` - Anything after a # is a comment and is ignored
47+
48+
```{mermaid}
49+
flowchart TD
50+
A[File in Project] --> B{.gitignore Pattern Match?}
51+
B -->|Yes| C[File Ignored]
52+
B -->|No| D[File Tracked by Git]
53+
C --> E[Clean Repository]
54+
D --> F[Repository with Unwanted Files]
55+
```
56+
57+
These rules are applied whenever Git checks for changes, so you only see relevant modifications.
58+
59+
## Different Ways to Use gitignore
60+
61+
### Basic Setup
62+
63+
For most projects, create a .gitignore file in your project's root directory with patterns specific to your language or tools:
64+
65+
```
66+
# Ignore log files
67+
*.log
68+
*.tmp
69+
70+
# Ignore compiled output
71+
/bin/
72+
/dist/
73+
74+
# Ignore IDE configuration files
75+
.idea/
76+
.vscode/
77+
```
78+
79+
### Project-Specific Rules
80+
81+
Different programming languages often have different temporary files:
82+
83+
- For SAS programs:
84+
```
85+
# To exclude SAS log, lst, and sas7bdat files
86+
*.log
87+
*.lst
88+
*.sas7bdat
89+
```
90+
91+
- For R projects:
92+
```
93+
# To exclude R temporary files
94+
.RData
95+
.Rhistory
96+
.Rproj.user
97+
*.Rproj
98+
```
99+
100+
- For Python projects:
101+
```
102+
__pycache__/
103+
*.pyc
104+
.env
105+
.pytest_cache
106+
.venv/
107+
```
108+
109+
### Global Ignore Patterns
110+
111+
We can set up global ignore patterns that apply to all our repositories:
112+
113+
```
114+
git config --global core.excludesfile ~/.gitignore_global
115+
```
116+
117+
Then add common patterns in .gitignore_global file located at ~/ (home directory) that should be ignored across all projects.
118+
119+
## Best Practices
120+
121+
1. **Create early**: Add .gitignore at the beginning of a project
122+
2. **Commit it**: Make sure .gitignore itself is version controlled
123+
3. **Share with team**: Everyone working on a project should use the same rules
124+
4. **Review occasionally**: As your project evolves, update your ignore patterns
125+
5. **Exclude all/include some**: To avoid new file types from being tracked, exclude all and include what is expected
126+
127+
## Resources
128+
129+
- [.gitignore syntax](https://git-scm.com/docs/gitignore)
130+
- [Understanding .gitignore](https://www.atlassian.com/git/tutorials/saving-changes/gitignore)
131+
- [Automatically Generate gitignore Files](https://www.gitignore.io/)
132+
133+
134+
## Conclusion
135+
136+
.gitignore is a simple but powerful tool that helps maintain clean repositories by excluding unnecessary files. It's not magical - just practical configuration that saves time and reduces clutter in version control systems.
137+
138+
If you haven't used .gitignore before, give it a try on your next project. You'll likely find yourself wondering how you ever worked without it!

0 commit comments

Comments
 (0)