@fredlackey/devutils 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,907 @@
1
+ # Installing Git
2
+
3
+ ## Overview
4
+
5
+ Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Originally created by Linus Torvalds in 2005 for Linux kernel development, Git has become the most widely used version control system in the world.
6
+
7
+ Git enables developers to:
8
+
9
+ - Track changes in source code during software development
10
+ - Coordinate work among multiple developers
11
+ - Maintain a complete history of all changes
12
+ - Branch and merge code with minimal friction
13
+ - Work offline and sync changes when connected
14
+
15
+ This guide documents Git installation procedures for all platforms supported by DevUtils CLI.
16
+
17
+ ## Dependencies
18
+
19
+ ### macOS (Homebrew)
20
+ - **Required:**
21
+ - `homebrew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
22
+ - **Optional:** None
23
+ - **Auto-installed:** None
24
+
25
+ ### Ubuntu (APT/Snap)
26
+ - **Required:** None (APT package manager is pre-installed on Ubuntu)
27
+ - **Optional:**
28
+ - `software-properties-common` - Install via `sudo apt-get install -y software-properties-common` (required only if using the Git Core PPA for the latest version)
29
+ - **Auto-installed:** Git runtime dependencies are automatically installed by APT
30
+
31
+ ### Raspberry Pi OS (APT/Snap)
32
+ - **Required:** None (APT package manager is pre-installed on Raspberry Pi OS)
33
+ - **Optional:**
34
+ - `software-properties-common` - Install via `sudo apt-get install -y software-properties-common` (required only if using the Git Core PPA for the latest version)
35
+ - **Auto-installed:** Git runtime dependencies are automatically installed by APT
36
+
37
+ ### Amazon Linux (DNF/YUM)
38
+ - **Required:** None (DNF/YUM package manager is pre-installed on Amazon Linux)
39
+ - **Optional:** None
40
+ - **Auto-installed:** Git runtime dependencies are automatically installed by DNF/YUM
41
+
42
+ ### Windows (Chocolatey/winget)
43
+ - **Required:**
44
+ - `chocolatey` - Install via PowerShell (Administrator): `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))` or run `dev install chocolatey`
45
+ - **Optional:** None
46
+ - **Auto-installed:**
47
+ - Git Bash (Bash emulation environment)
48
+ - Git GUI (graphical interface)
49
+ - Git Credential Manager (credential storage helper)
50
+
51
+ ### Git Bash (Manual/Portable)
52
+ - **Required:**
53
+ - `git` - Git for Windows must be installed (Git Bash is bundled with it). Download from https://git-scm.com/download/win or install via `choco install git -y`
54
+ - **Optional:** None
55
+ - **Auto-installed:** None
56
+
57
+ ## Prerequisites
58
+
59
+ Before installing Git on any platform, ensure:
60
+
61
+ 1. **Internet connectivity** - Required to download Git packages
62
+ 2. **Administrative privileges** - Required for system-wide installation (sudo on Linux/macOS, Administrator on Windows)
63
+ 3. **Terminal access** - Required to run installation commands
64
+ 4. **Platform-specific package manager** - See Dependencies section above for required package managers
65
+
66
+ ## Platform-Specific Installation
67
+
68
+ ### macOS (Homebrew)
69
+
70
+ #### Prerequisites
71
+
72
+ - macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
73
+ - Homebrew package manager installed
74
+ - Command line access via Terminal.app or iTerm2
75
+
76
+ macOS may include a pre-installed version of Git via Xcode Command Line Tools. However, Homebrew typically provides a more recent version. This guide documents the Homebrew installation method.
77
+
78
+ If Homebrew is not installed, install it first:
79
+
80
+ ```bash
81
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
82
+ ```
83
+
84
+ #### Installation Steps
85
+
86
+ Run the following command to install Git:
87
+
88
+ ```bash
89
+ brew install --quiet git
90
+ ```
91
+
92
+ The `--quiet` flag suppresses non-essential output, making the installation suitable for automation and scripts.
93
+
94
+ #### Verification
95
+
96
+ Confirm the installation succeeded:
97
+
98
+ ```bash
99
+ git --version
100
+ ```
101
+
102
+ Expected output (version numbers may vary):
103
+
104
+ ```
105
+ git version 2.52.0
106
+ ```
107
+
108
+ Verify the Homebrew version is being used (not the system version):
109
+
110
+ ```bash
111
+ which git
112
+ ```
113
+
114
+ Expected output for Apple Silicon Macs:
115
+
116
+ ```
117
+ /opt/homebrew/bin/git
118
+ ```
119
+
120
+ Expected output for Intel Macs:
121
+
122
+ ```
123
+ /usr/local/bin/git
124
+ ```
125
+
126
+ #### Troubleshooting
127
+
128
+ **Problem**: `git --version` shows an older version after installation
129
+
130
+ **Solution**: The system version of Git (from Xcode Command Line Tools) may be taking precedence. Ensure Homebrew's bin directory is in your PATH before `/usr/bin`:
131
+
132
+ ```bash
133
+ echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
134
+ source ~/.zshrc
135
+ ```
136
+
137
+ For Intel Macs, use `/usr/local/bin` instead of `/opt/homebrew/bin`.
138
+
139
+ **Problem**: `brew: command not found`
140
+
141
+ **Solution**: Homebrew is not installed or not in PATH. Install Homebrew first, then add it to your PATH:
142
+
143
+ ```bash
144
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
145
+ ```
146
+
147
+ **Problem**: Permission errors during installation
148
+
149
+ **Solution**: Homebrew should not require sudo. If you encounter permission errors, fix Homebrew permissions:
150
+
151
+ ```bash
152
+ sudo chown -R $(whoami) /opt/homebrew
153
+ ```
154
+
155
+ ---
156
+
157
+ ### Ubuntu/Debian (APT)
158
+
159
+ #### Prerequisites
160
+
161
+ - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
162
+ - sudo privileges
163
+ - Internet connectivity
164
+
165
+ Ubuntu and Debian include Git in their default repositories. For the latest stable version, use the Git Core PPA (Ubuntu) or the default repository (Debian).
166
+
167
+ #### Installation Steps
168
+
169
+ **Step 1: Update package lists and install Git**
170
+
171
+ ```bash
172
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
173
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
174
+ ```
175
+
176
+ The `DEBIAN_FRONTEND=noninteractive` environment variable ensures no interactive prompts appear during installation, making this suitable for scripts and automation.
177
+
178
+ **Step 2 (Optional): Install the latest stable version via PPA (Ubuntu only)**
179
+
180
+ The default Ubuntu repositories may contain an older version of Git. To install the latest stable version:
181
+
182
+ ```bash
183
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
184
+ sudo add-apt-repository -y ppa:git-core/ppa
185
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
186
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
187
+ ```
188
+
189
+ #### Verification
190
+
191
+ Confirm the installation succeeded:
192
+
193
+ ```bash
194
+ git --version
195
+ ```
196
+
197
+ Expected output (version numbers may vary):
198
+
199
+ ```
200
+ git version 2.52.0
201
+ ```
202
+
203
+ Verify the installation location:
204
+
205
+ ```bash
206
+ which git
207
+ ```
208
+
209
+ Expected output:
210
+
211
+ ```
212
+ /usr/bin/git
213
+ ```
214
+
215
+ #### Troubleshooting
216
+
217
+ **Problem**: `E: Unable to locate package git`
218
+
219
+ **Solution**: Update your package lists:
220
+
221
+ ```bash
222
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
223
+ ```
224
+
225
+ **Problem**: PPA installation fails on Debian
226
+
227
+ **Solution**: PPAs are Ubuntu-specific. On Debian, use the default repository or compile from source. The default repository version is typically sufficient for most use cases.
228
+
229
+ **Problem**: `add-apt-repository: command not found`
230
+
231
+ **Solution**: Install the software-properties-common package:
232
+
233
+ ```bash
234
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
235
+ ```
236
+
237
+ **Problem**: Old version of Git despite using PPA
238
+
239
+ **Solution**: Ensure the PPA is active and update:
240
+
241
+ ```bash
242
+ sudo add-apt-repository -y ppa:git-core/ppa
243
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
244
+ sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y git
245
+ ```
246
+
247
+ ---
248
+
249
+ ### Raspberry Pi OS (APT)
250
+
251
+ #### Prerequisites
252
+
253
+ - Raspberry Pi OS (Bookworm or Bullseye recommended)
254
+ - Raspberry Pi 3B+ or later (any model supported by Raspberry Pi OS)
255
+ - sudo privileges
256
+ - Internet connectivity
257
+
258
+ Raspberry Pi OS is based on Debian, so Git installation follows the Debian/APT method. Git is available in the default repositories and works on both 32-bit (armhf) and 64-bit (arm64) architectures.
259
+
260
+ #### Installation Steps
261
+
262
+ First, verify your architecture:
263
+
264
+ ```bash
265
+ uname -m
266
+ ```
267
+
268
+ - `aarch64` = 64-bit ARM
269
+ - `armv7l` = 32-bit ARM
270
+
271
+ Install Git using APT:
272
+
273
+ ```bash
274
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
275
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
276
+ ```
277
+
278
+ The installation command is identical for both 32-bit and 64-bit Raspberry Pi OS.
279
+
280
+ #### Verification
281
+
282
+ Confirm the installation succeeded:
283
+
284
+ ```bash
285
+ git --version
286
+ ```
287
+
288
+ Expected output (version numbers may vary):
289
+
290
+ ```
291
+ git version 2.39.2
292
+ ```
293
+
294
+ Note: Raspberry Pi OS repositories may contain a slightly older version than Ubuntu PPA or Homebrew. This is expected and the version provided is fully functional.
295
+
296
+ Verify the installation location:
297
+
298
+ ```bash
299
+ which git
300
+ ```
301
+
302
+ Expected output:
303
+
304
+ ```
305
+ /usr/bin/git
306
+ ```
307
+
308
+ #### Troubleshooting
309
+
310
+ **Problem**: Installation is slow
311
+
312
+ **Solution**: Raspberry Pi SD cards can be slow. Use a high-quality SD card (Class 10 or A1/A2 rated) or boot from USB/SSD for better performance.
313
+
314
+ **Problem**: `E: Unable to fetch some archives`
315
+
316
+ **Solution**: Network connectivity issues. Check your internet connection and retry:
317
+
318
+ ```bash
319
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
320
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
321
+ ```
322
+
323
+ **Problem**: Package conflicts or broken dependencies
324
+
325
+ **Solution**: Fix broken packages before installing:
326
+
327
+ ```bash
328
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -f
329
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
330
+ ```
331
+
332
+ **Problem**: Git version is very old
333
+
334
+ **Solution**: Ensure your Raspberry Pi OS is up to date:
335
+
336
+ ```bash
337
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
338
+ sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
339
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
340
+ ```
341
+
342
+ ---
343
+
344
+ ### Amazon Linux (DNF/YUM)
345
+
346
+ #### Prerequisites
347
+
348
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
349
+ - sudo privileges
350
+ - EC2 instance or compatible environment
351
+
352
+ Amazon Linux 2023 uses DNF as the default package manager. Amazon Linux 2 uses YUM. Git is included in the default Amazon Linux repositories.
353
+
354
+ **Important**: Amazon Linux 2 reaches end of support on June 30, 2026. Migrate to Amazon Linux 2023 for long-term support.
355
+
356
+ #### Installation Steps
357
+
358
+ **For Amazon Linux 2023 (AL2023):**
359
+
360
+ ```bash
361
+ sudo dnf install -y git
362
+ ```
363
+
364
+ **For Amazon Linux 2 (AL2):**
365
+
366
+ ```bash
367
+ sudo yum install -y git
368
+ ```
369
+
370
+ The `-y` flag automatically confirms installation, enabling non-interactive execution.
371
+
372
+ #### Verification
373
+
374
+ Confirm the installation succeeded:
375
+
376
+ ```bash
377
+ git --version
378
+ ```
379
+
380
+ Expected output (version numbers may vary):
381
+
382
+ ```
383
+ git version 2.40.1
384
+ ```
385
+
386
+ Verify the installation location:
387
+
388
+ ```bash
389
+ which git
390
+ ```
391
+
392
+ Expected output:
393
+
394
+ ```
395
+ /usr/bin/git
396
+ ```
397
+
398
+ #### Troubleshooting
399
+
400
+ **Problem**: `No match for argument: git` on Amazon Linux 2
401
+
402
+ **Solution**: Update the yum cache and retry:
403
+
404
+ ```bash
405
+ sudo yum makecache
406
+ sudo yum install -y git
407
+ ```
408
+
409
+ **Problem**: Git version is older than expected
410
+
411
+ **Solution**: Amazon's repositories prioritize stability over bleeding-edge versions. The version provided is tested and compatible with Amazon Linux. If you require a newer version, compile from source.
412
+
413
+ **Problem**: `Cannot find a valid baseurl for repo`
414
+
415
+ **Solution**: Network or repository configuration issue. Check connectivity and repository settings:
416
+
417
+ ```bash
418
+ # For AL2023
419
+ sudo dnf check-update
420
+
421
+ # For AL2
422
+ sudo yum check-update
423
+ ```
424
+
425
+ **Problem**: Permission denied errors
426
+
427
+ **Solution**: Ensure you are using sudo:
428
+
429
+ ```bash
430
+ sudo dnf install -y git
431
+ ```
432
+
433
+ ---
434
+
435
+ ### Windows (Chocolatey)
436
+
437
+ #### Prerequisites
438
+
439
+ - Windows 10 version 1903 or higher (64-bit), or Windows 11
440
+ - Administrator PowerShell or Command Prompt
441
+ - Chocolatey package manager installed
442
+
443
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
444
+
445
+ ```powershell
446
+ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
447
+ ```
448
+
449
+ #### Installation Steps
450
+
451
+ Run the following command in an Administrator PowerShell or Command Prompt:
452
+
453
+ ```powershell
454
+ choco install git -y
455
+ ```
456
+
457
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation suitable for automation and scripts.
458
+
459
+ **Optional**: Install Git with additional Unix tools in PATH:
460
+
461
+ ```powershell
462
+ choco install git -y --params "'/GitAndUnixToolsOnPath'"
463
+ ```
464
+
465
+ This adds common Unix utilities (like `ls`, `cat`, `grep`) to your Windows PATH alongside Git.
466
+
467
+ After installation, close and reopen your terminal to ensure PATH changes take effect.
468
+
469
+ #### Verification
470
+
471
+ Open a new Command Prompt or PowerShell window, then run:
472
+
473
+ ```powershell
474
+ git --version
475
+ ```
476
+
477
+ Expected output (version numbers may vary):
478
+
479
+ ```
480
+ git version 2.52.0.windows.1
481
+ ```
482
+
483
+ Verify the installation location:
484
+
485
+ ```powershell
486
+ where git
487
+ ```
488
+
489
+ Expected output:
490
+
491
+ ```
492
+ C:\Program Files\Git\cmd\git.exe
493
+ ```
494
+
495
+ #### Troubleshooting
496
+
497
+ **Problem**: `git: command not found` or `'git' is not recognized`
498
+
499
+ **Solution**: Close and reopen your terminal window. If the problem persists, verify Git is in your PATH:
500
+
501
+ ```powershell
502
+ $env:PATH -split ';' | Select-String -Pattern 'Git'
503
+ ```
504
+
505
+ If Git is not listed, add it manually:
506
+
507
+ ```powershell
508
+ $env:PATH += ";C:\Program Files\Git\cmd"
509
+ ```
510
+
511
+ To make this permanent, add the path via System Properties > Environment Variables.
512
+
513
+ **Problem**: Chocolatey installation fails
514
+
515
+ **Solution**: Ensure you are running PowerShell as Administrator. Right-click PowerShell and select "Run as administrator".
516
+
517
+ **Problem**: SSL/TLS errors during installation
518
+
519
+ **Solution**: Update your security protocols:
520
+
521
+ ```powershell
522
+ [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
523
+ choco install git -y
524
+ ```
525
+
526
+ **Problem**: Git installed but Git Bash not working
527
+
528
+ **Solution**: Git Bash is installed with Git. Access it from the Start Menu or run:
529
+
530
+ ```powershell
531
+ "C:\Program Files\Git\bin\bash.exe"
532
+ ```
533
+
534
+ ---
535
+
536
+ ### WSL (Ubuntu)
537
+
538
+ #### Prerequisites
539
+
540
+ - Windows 10 version 2004 or higher, or Windows 11
541
+ - WSL 2 enabled with Ubuntu distribution installed
542
+ - sudo privileges within WSL
543
+
544
+ WSL runs Ubuntu (or another Linux distribution) within Windows. Git must be installed separately within WSL, as it does not share binaries with Windows Git.
545
+
546
+ #### Installation Steps
547
+
548
+ Open your WSL Ubuntu terminal and run:
549
+
550
+ ```bash
551
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
552
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
553
+ ```
554
+
555
+ **Optional**: Install the latest stable version via PPA:
556
+
557
+ ```bash
558
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
559
+ sudo add-apt-repository -y ppa:git-core/ppa
560
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
561
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
562
+ ```
563
+
564
+ #### Verification
565
+
566
+ Confirm the installation succeeded:
567
+
568
+ ```bash
569
+ git --version
570
+ ```
571
+
572
+ Expected output (version numbers may vary):
573
+
574
+ ```
575
+ git version 2.52.0
576
+ ```
577
+
578
+ Verify the installation location:
579
+
580
+ ```bash
581
+ which git
582
+ ```
583
+
584
+ Expected output:
585
+
586
+ ```
587
+ /usr/bin/git
588
+ ```
589
+
590
+ #### Troubleshooting
591
+
592
+ **Problem**: Git version differs between WSL and Windows
593
+
594
+ **Solution**: This is expected behavior. WSL and Windows maintain separate Git installations. Use the appropriate Git for each environment:
595
+
596
+ - Inside WSL terminal: Use Linux Git (`/usr/bin/git`)
597
+ - In Windows PowerShell/CMD: Use Windows Git (`C:\Program Files\Git\cmd\git.exe`)
598
+
599
+ **Problem**: Git Credential Manager issues between WSL and Windows
600
+
601
+ **Solution**: Configure Git to use Windows Git Credential Manager from within WSL:
602
+
603
+ ```bash
604
+ git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"
605
+ ```
606
+
607
+ **Problem**: Line ending issues (CRLF vs LF)
608
+
609
+ **Solution**: Configure Git to handle line endings appropriately for WSL:
610
+
611
+ ```bash
612
+ git config --global core.autocrlf input
613
+ ```
614
+
615
+ **Problem**: Permission errors in WSL
616
+
617
+ **Solution**: Ensure you are using sudo for installation:
618
+
619
+ ```bash
620
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
621
+ ```
622
+
623
+ ---
624
+
625
+ ### Git Bash (Windows Installation)
626
+
627
+ #### Prerequisites
628
+
629
+ - Windows 10 or Windows 11 (64-bit or ARM64)
630
+ - Administrator access for installation
631
+ - Internet connectivity
632
+
633
+ Git Bash is a terminal emulator for Windows that provides a Bash shell environment along with Git. It is included with Git for Windows and does not require a separate installation.
634
+
635
+ **Note**: Git Bash is automatically installed when you install Git on Windows via Chocolatey or the official installer. This section documents the Chocolatey method for consistency with other Windows installations.
636
+
637
+ #### Installation Steps
638
+
639
+ Run the following command in an Administrator PowerShell or Command Prompt:
640
+
641
+ ```powershell
642
+ choco install git -y
643
+ ```
644
+
645
+ This installs:
646
+
647
+ - Git command-line tools
648
+ - Git Bash (Bash emulation environment)
649
+ - Git GUI (graphical interface)
650
+ - Git Credential Manager
651
+
652
+ After installation, close and reopen your terminal to ensure PATH changes take effect.
653
+
654
+ **Launching Git Bash**:
655
+
656
+ - From Start Menu: Search for "Git Bash"
657
+ - From Command Prompt: Run `"C:\Program Files\Git\bin\bash.exe"`
658
+ - From File Explorer: Right-click in a folder and select "Git Bash Here" (if context menu integration was enabled)
659
+
660
+ #### Verification
661
+
662
+ Open Git Bash from the Start Menu, then run:
663
+
664
+ ```bash
665
+ git --version
666
+ ```
667
+
668
+ Expected output (version numbers may vary):
669
+
670
+ ```
671
+ git version 2.52.0.windows.1
672
+ ```
673
+
674
+ Verify Bash is working:
675
+
676
+ ```bash
677
+ echo $BASH_VERSION
678
+ ```
679
+
680
+ Expected output (version numbers may vary):
681
+
682
+ ```
683
+ 5.2.26(1)-release
684
+ ```
685
+
686
+ #### Troubleshooting
687
+
688
+ **Problem**: "Git Bash Here" context menu option is missing
689
+
690
+ **Solution**: This option is only available if enabled during installation. To add it retroactively, reinstall Git with the context menu option:
691
+
692
+ ```powershell
693
+ choco uninstall git -y
694
+ choco install git -y --params "'/GitAndUnixToolsOnPath /WindowsTerminal'"
695
+ ```
696
+
697
+ **Problem**: `the input device is not a TTY` error when running interactive commands
698
+
699
+ **Solution**: Git Bash's mintty terminal has TTY compatibility issues with some commands. Use the `winpty` prefix:
700
+
701
+ ```bash
702
+ winpty docker run -it ubuntu bash
703
+ ```
704
+
705
+ Or add an alias to your `~/.bashrc`:
706
+
707
+ ```bash
708
+ echo 'alias docker="winpty docker"' >> ~/.bashrc
709
+ source ~/.bashrc
710
+ ```
711
+
712
+ **Problem**: Path conversion issues (forward slashes being converted)
713
+
714
+ **Solution**: Git Bash automatically converts Unix-style paths to Windows paths. To prevent this, use double leading slashes or set `MSYS_NO_PATHCONV`:
715
+
716
+ ```bash
717
+ # Use double leading slash
718
+ /c/Users/username/project
719
+
720
+ # Or disable path conversion for a command
721
+ MSYS_NO_PATHCONV=1 some-command /path/to/file
722
+ ```
723
+
724
+ **Problem**: Git Bash is slow to start
725
+
726
+ **Solution**: Disable Git status in the prompt by editing `~/.bashrc`:
727
+
728
+ ```bash
729
+ export GIT_PS1_SHOWDIRTYSTATE=
730
+ export GIT_PS1_SHOWUNTRACKEDFILES=
731
+ ```
732
+
733
+ ---
734
+
735
+ ## Post-Installation Configuration
736
+
737
+ After installing Git on any platform, configure your identity. This information is included in every commit you create.
738
+
739
+ ### Configure User Identity
740
+
741
+ Set your name and email address:
742
+
743
+ ```bash
744
+ git config --global user.name "Your Name"
745
+ git config --global user.email "your.email@example.com"
746
+ ```
747
+
748
+ Verify your configuration:
749
+
750
+ ```bash
751
+ git config --global --list
752
+ ```
753
+
754
+ ### Configure Default Branch Name
755
+
756
+ Set the default branch name for new repositories (recommended: `main`):
757
+
758
+ ```bash
759
+ git config --global init.defaultBranch main
760
+ ```
761
+
762
+ ### Configure Line Endings
763
+
764
+ Configure how Git handles line endings:
765
+
766
+ **On macOS and Linux:**
767
+
768
+ ```bash
769
+ git config --global core.autocrlf input
770
+ ```
771
+
772
+ **On Windows:**
773
+
774
+ ```bash
775
+ git config --global core.autocrlf true
776
+ ```
777
+
778
+ ### Configure Default Editor
779
+
780
+ Set your preferred text editor for commit messages:
781
+
782
+ ```bash
783
+ # For VS Code
784
+ git config --global core.editor "code --wait"
785
+
786
+ # For Vim
787
+ git config --global core.editor "vim"
788
+
789
+ # For Nano
790
+ git config --global core.editor "nano"
791
+ ```
792
+
793
+ ### Configure Credential Storage
794
+
795
+ Enable credential caching to avoid re-entering passwords:
796
+
797
+ **On macOS:**
798
+
799
+ ```bash
800
+ git config --global credential.helper osxkeychain
801
+ ```
802
+
803
+ **On Linux:**
804
+
805
+ ```bash
806
+ git config --global credential.helper cache
807
+ ```
808
+
809
+ **On Windows:**
810
+
811
+ Git Credential Manager is installed automatically with Git for Windows and is the default credential helper.
812
+
813
+ ---
814
+
815
+ ## Common Issues
816
+
817
+ ### Issue: "Please tell me who you are" Error
818
+
819
+ **Symptoms**: Git refuses to commit with the message "Please tell me who you are"
820
+
821
+ **Solution**: Configure your user identity:
822
+
823
+ ```bash
824
+ git config --global user.name "Your Name"
825
+ git config --global user.email "your.email@example.com"
826
+ ```
827
+
828
+ ### Issue: SSL Certificate Errors
829
+
830
+ **Symptoms**: `SSL certificate problem: unable to get local issuer certificate`
831
+
832
+ **Solution**: This often occurs in corporate environments with proxy servers. Configure Git to use the system certificate store:
833
+
834
+ ```bash
835
+ git config --global http.sslBackend schannel # Windows
836
+ git config --global http.sslBackend openssl # macOS/Linux
837
+ ```
838
+
839
+ **Warning**: Do not disable SSL verification (`http.sslVerify false`) as this creates security vulnerabilities.
840
+
841
+ ### Issue: Permission Denied (publickey) When Cloning
842
+
843
+ **Symptoms**: `Permission denied (publickey)` when cloning from GitHub/GitLab
844
+
845
+ **Solution**: SSH keys are not configured. Generate an SSH key and add it to your Git hosting service:
846
+
847
+ ```bash
848
+ ssh-keygen -t ed25519 -C "your.email@example.com"
849
+ eval "$(ssh-agent -s)"
850
+ ssh-add ~/.ssh/id_ed25519
851
+ ```
852
+
853
+ Then copy the public key to your Git hosting service:
854
+
855
+ ```bash
856
+ cat ~/.ssh/id_ed25519.pub
857
+ ```
858
+
859
+ ### Issue: Git Commands Are Slow
860
+
861
+ **Symptoms**: Git operations (status, diff, log) are slow
862
+
863
+ **Solutions**:
864
+
865
+ - **Large repositories**: Enable Git's filesystem monitor:
866
+
867
+ ```bash
868
+ git config --global core.fsmonitor true
869
+ ```
870
+
871
+ - **Many files**: Enable Git's untracked cache:
872
+
873
+ ```bash
874
+ git config --global core.untrackedCache true
875
+ ```
876
+
877
+ - **Windows/WSL**: Store repositories on the native filesystem (Windows filesystem for Windows Git, Linux filesystem for WSL Git)
878
+
879
+ ### Issue: "fatal: not a git repository"
880
+
881
+ **Symptoms**: Git commands fail with "fatal: not a git repository"
882
+
883
+ **Solution**: You are not in a Git repository directory. Either navigate to a repository or initialize one:
884
+
885
+ ```bash
886
+ # Initialize a new repository
887
+ git init
888
+
889
+ # Or clone an existing repository
890
+ git clone https://github.com/user/repo.git
891
+ ```
892
+
893
+ ---
894
+
895
+ ## References
896
+
897
+ - [Git Official Website](https://git-scm.com/)
898
+ - [Git Official Documentation](https://git-scm.com/doc)
899
+ - [Git Installation for macOS](https://git-scm.com/download/mac)
900
+ - [Git Installation for Windows](https://git-scm.com/download/win)
901
+ - [Git Installation for Linux](https://git-scm.com/download/linux)
902
+ - [Git for Windows Project](https://gitforwindows.org/)
903
+ - [Homebrew Git Formula](https://formulae.brew.sh/formula/git)
904
+ - [Chocolatey Git Package](https://community.chocolatey.org/packages/git)
905
+ - [Ubuntu Git PPA](https://launchpad.net/~git-core/+archive/ubuntu/ppa)
906
+ - [Microsoft Learn: Git on WSL](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-git)
907
+ - [Amazon Linux Documentation](https://docs.aws.amazon.com/linux/)