@fredlackey/devutils 0.0.18 → 0.1.0

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 (447) hide show
  1. package/README.md +214 -141
  2. package/package.json +8 -83
  3. package/src/api/loader.js +229 -0
  4. package/src/api/registry.json +62 -0
  5. package/src/cli.js +293 -60
  6. package/src/commands/ai/index.js +16 -0
  7. package/src/commands/ai/launch.js +112 -0
  8. package/src/commands/ai/list.js +54 -0
  9. package/src/commands/ai/resume.js +70 -0
  10. package/src/commands/ai/sessions.js +121 -0
  11. package/src/commands/ai/set.js +131 -0
  12. package/src/commands/ai/show.js +74 -0
  13. package/src/commands/ai/tools.js +46 -0
  14. package/src/commands/alias/add.js +93 -0
  15. package/src/commands/alias/helpers.js +107 -0
  16. package/src/commands/alias/index.js +14 -0
  17. package/src/commands/alias/list.js +55 -0
  18. package/src/commands/alias/remove.js +62 -0
  19. package/src/commands/alias/sync.js +109 -0
  20. package/src/commands/api/disable.js +73 -0
  21. package/src/commands/api/enable.js +148 -0
  22. package/src/commands/api/index.js +15 -0
  23. package/src/commands/api/list.js +66 -0
  24. package/src/commands/api/update.js +87 -0
  25. package/src/commands/auth/index.js +15 -0
  26. package/src/commands/auth/list.js +49 -0
  27. package/src/commands/auth/login.js +384 -0
  28. package/src/commands/auth/logout.js +111 -0
  29. package/src/commands/auth/refresh.js +184 -0
  30. package/src/commands/auth/services.js +169 -0
  31. package/src/commands/auth/status.js +104 -0
  32. package/src/commands/config/export.js +224 -0
  33. package/src/commands/config/get.js +52 -0
  34. package/src/commands/config/import.js +308 -0
  35. package/src/commands/config/index.js +17 -0
  36. package/src/commands/config/init.js +143 -0
  37. package/src/commands/config/reset.js +57 -0
  38. package/src/commands/config/set.js +93 -0
  39. package/src/commands/config/show.js +35 -0
  40. package/src/commands/help.js +338 -0
  41. package/src/commands/identity/add.js +133 -0
  42. package/src/commands/identity/index.js +17 -0
  43. package/src/commands/identity/link.js +76 -0
  44. package/src/commands/identity/list.js +48 -0
  45. package/src/commands/identity/remove.js +72 -0
  46. package/src/commands/identity/show.js +65 -0
  47. package/src/commands/identity/sync.js +172 -0
  48. package/src/commands/identity/unlink.js +57 -0
  49. package/src/commands/ignore/add.js +165 -0
  50. package/src/commands/ignore/index.js +14 -0
  51. package/src/commands/ignore/list.js +89 -0
  52. package/src/commands/ignore/markers.js +43 -0
  53. package/src/commands/ignore/remove.js +164 -0
  54. package/src/commands/ignore/show.js +169 -0
  55. package/src/commands/machine/detect.js +122 -0
  56. package/src/commands/machine/index.js +14 -0
  57. package/src/commands/machine/list.js +74 -0
  58. package/src/commands/machine/set.js +106 -0
  59. package/src/commands/machine/show.js +35 -0
  60. package/src/commands/schema.js +152 -0
  61. package/src/commands/search/collections.js +134 -0
  62. package/src/commands/search/get.js +71 -0
  63. package/src/commands/search/index-cmd.js +54 -0
  64. package/src/commands/search/index.js +21 -0
  65. package/src/commands/search/keyword.js +60 -0
  66. package/src/commands/search/qmd.js +70 -0
  67. package/src/commands/search/query.js +64 -0
  68. package/src/commands/search/semantic.js +62 -0
  69. package/src/commands/search/status.js +46 -0
  70. package/src/commands/status.js +224 -171
  71. package/src/commands/tools/check.js +79 -0
  72. package/src/commands/tools/index.js +14 -0
  73. package/src/commands/tools/install.js +110 -0
  74. package/src/commands/tools/list.js +91 -0
  75. package/src/commands/tools/search.js +60 -0
  76. package/src/commands/update.js +83 -112
  77. package/src/commands/util/add.js +151 -0
  78. package/src/commands/util/index.js +15 -0
  79. package/src/commands/util/list.js +97 -0
  80. package/src/commands/util/remove.js +76 -0
  81. package/src/commands/util/run.js +79 -0
  82. package/src/commands/util/show.js +67 -0
  83. package/src/commands/version.js +21 -88
  84. package/src/installers/_template.js +104 -0
  85. package/src/installers/git.js +150 -0
  86. package/src/installers/homebrew.js +190 -0
  87. package/src/installers/node.js +223 -0
  88. package/src/installers/registry.json +29 -0
  89. package/src/lib/config.js +125 -0
  90. package/src/lib/detect.js +74 -0
  91. package/src/lib/errors.js +114 -0
  92. package/src/lib/github.js +315 -0
  93. package/src/lib/installer.js +225 -0
  94. package/src/lib/output.js +239 -0
  95. package/src/lib/platform.js +112 -0
  96. package/src/lib/platforms/amazon-linux.js +41 -0
  97. package/src/lib/platforms/gitbash.js +46 -0
  98. package/src/lib/platforms/macos.js +45 -0
  99. package/src/lib/platforms/raspbian.js +41 -0
  100. package/src/lib/platforms/ubuntu.js +39 -0
  101. package/src/lib/platforms/windows.js +45 -0
  102. package/src/lib/prompt.js +161 -0
  103. package/src/lib/schema.js +211 -0
  104. package/src/lib/shell.js +75 -0
  105. package/src/patterns/gitignore/claude-code.txt +25 -0
  106. package/src/patterns/gitignore/docker.txt +15 -0
  107. package/src/patterns/gitignore/go.txt +24 -0
  108. package/src/patterns/gitignore/java.txt +38 -0
  109. package/src/patterns/gitignore/jetbrains.txt +26 -0
  110. package/src/patterns/gitignore/linux.txt +18 -0
  111. package/src/patterns/gitignore/macos.txt +27 -0
  112. package/src/patterns/gitignore/node.txt +51 -0
  113. package/src/patterns/gitignore/python.txt +55 -0
  114. package/src/patterns/gitignore/rust.txt +14 -0
  115. package/src/patterns/gitignore/terraform.txt +30 -0
  116. package/src/patterns/gitignore/vscode.txt +15 -0
  117. package/src/patterns/gitignore/windows.txt +25 -0
  118. package/src/utils/clone/index.js +165 -0
  119. package/src/utils/git-push/index.js +230 -0
  120. package/src/utils/git-status/index.js +116 -0
  121. package/src/utils/git-status/unix.sh +75 -0
  122. package/src/utils/registry.json +41 -0
  123. package/bin/dev.js +0 -16
  124. package/files/README.md +0 -0
  125. package/files/claude/.claude/commands/setup-context.md +0 -3
  126. package/files/monorepos/_archive/README.md +0 -36
  127. package/files/monorepos/_legacy/README.md +0 -36
  128. package/files/monorepos/ai-docs/README.md +0 -33
  129. package/files/monorepos/apps/README.md +0 -24
  130. package/files/monorepos/docs/README.md +0 -40
  131. package/files/monorepos/packages/README.md +0 -25
  132. package/files/monorepos/research/README.md +0 -29
  133. package/files/monorepos/scripts/README.md +0 -24
  134. package/src/commands/README.md +0 -41
  135. package/src/commands/configure.js +0 -199
  136. package/src/commands/identity.js +0 -1630
  137. package/src/commands/ignore.js +0 -247
  138. package/src/commands/install.js +0 -526
  139. package/src/commands/setup.js +0 -246
  140. package/src/completion.js +0 -284
  141. package/src/constants.js +0 -45
  142. package/src/ignore/claude-code.txt +0 -10
  143. package/src/ignore/docker.txt +0 -18
  144. package/src/ignore/linux.txt +0 -23
  145. package/src/ignore/macos.txt +0 -36
  146. package/src/ignore/node.txt +0 -55
  147. package/src/ignore/terraform.txt +0 -37
  148. package/src/ignore/vscode.txt +0 -18
  149. package/src/ignore/windows.txt +0 -35
  150. package/src/index.js +0 -0
  151. package/src/installs/README.md +0 -399
  152. package/src/installs/adobe-creative-cloud.js +0 -546
  153. package/src/installs/adobe-creative-cloud.md +0 -605
  154. package/src/installs/appcleaner.js +0 -321
  155. package/src/installs/appcleaner.md +0 -699
  156. package/src/installs/apt-transport-https.js +0 -390
  157. package/src/installs/apt-transport-https.md +0 -678
  158. package/src/installs/atomicparsley.js +0 -642
  159. package/src/installs/atomicparsley.md +0 -795
  160. package/src/installs/aws-cli.js +0 -797
  161. package/src/installs/aws-cli.md +0 -727
  162. package/src/installs/balena-etcher.js +0 -710
  163. package/src/installs/balena-etcher.md +0 -761
  164. package/src/installs/bambu-studio.js +0 -1143
  165. package/src/installs/bambu-studio.md +0 -780
  166. package/src/installs/bash-completion.js +0 -575
  167. package/src/installs/bash-completion.md +0 -833
  168. package/src/installs/bash.js +0 -417
  169. package/src/installs/bash.md +0 -993
  170. package/src/installs/beyond-compare.js +0 -603
  171. package/src/installs/beyond-compare.md +0 -813
  172. package/src/installs/brave-browser.js +0 -968
  173. package/src/installs/brave-browser.md +0 -650
  174. package/src/installs/build-essential.js +0 -529
  175. package/src/installs/build-essential.md +0 -977
  176. package/src/installs/ca-certificates.js +0 -618
  177. package/src/installs/ca-certificates.md +0 -937
  178. package/src/installs/caffeine.js +0 -508
  179. package/src/installs/caffeine.md +0 -839
  180. package/src/installs/camtasia.js +0 -596
  181. package/src/installs/camtasia.md +0 -762
  182. package/src/installs/chatgpt.js +0 -476
  183. package/src/installs/chatgpt.md +0 -814
  184. package/src/installs/chocolatey.js +0 -456
  185. package/src/installs/chocolatey.md +0 -661
  186. package/src/installs/chrome-canary.js +0 -419
  187. package/src/installs/chrome-canary.md +0 -641
  188. package/src/installs/chromium.js +0 -667
  189. package/src/installs/chromium.md +0 -838
  190. package/src/installs/claude-code.js +0 -576
  191. package/src/installs/claude-code.md +0 -1173
  192. package/src/installs/cloudflare-warp.js +0 -900
  193. package/src/installs/cloudflare-warp.md +0 -1047
  194. package/src/installs/comet-browser.js +0 -588
  195. package/src/installs/comet-browser.md +0 -731
  196. package/src/installs/curl.js +0 -379
  197. package/src/installs/curl.md +0 -714
  198. package/src/installs/cursor.js +0 -579
  199. package/src/installs/cursor.md +0 -970
  200. package/src/installs/dbeaver.js +0 -924
  201. package/src/installs/dbeaver.md +0 -939
  202. package/src/installs/dbschema.js +0 -692
  203. package/src/installs/dbschema.md +0 -925
  204. package/src/installs/dependencies.md +0 -453
  205. package/src/installs/development-tools.js +0 -600
  206. package/src/installs/development-tools.md +0 -977
  207. package/src/installs/docker.js +0 -1029
  208. package/src/installs/docker.md +0 -1109
  209. package/src/installs/drawio.js +0 -1019
  210. package/src/installs/drawio.md +0 -795
  211. package/src/installs/elmedia-player.js +0 -347
  212. package/src/installs/elmedia-player.md +0 -556
  213. package/src/installs/ffmpeg.js +0 -889
  214. package/src/installs/ffmpeg.md +0 -852
  215. package/src/installs/file.js +0 -464
  216. package/src/installs/file.md +0 -987
  217. package/src/installs/gemini-cli.js +0 -811
  218. package/src/installs/gemini-cli.md +0 -1153
  219. package/src/installs/git.js +0 -400
  220. package/src/installs/git.md +0 -907
  221. package/src/installs/gitego.js +0 -949
  222. package/src/installs/gitego.md +0 -1172
  223. package/src/installs/go.js +0 -931
  224. package/src/installs/go.md +0 -958
  225. package/src/installs/google-antigravity.js +0 -913
  226. package/src/installs/google-antigravity.md +0 -1075
  227. package/src/installs/google-chrome.js +0 -833
  228. package/src/installs/google-chrome.md +0 -862
  229. package/src/installs/gpg.js +0 -480
  230. package/src/installs/gpg.md +0 -1056
  231. package/src/installs/homebrew.js +0 -1028
  232. package/src/installs/homebrew.md +0 -988
  233. package/src/installs/imageoptim.js +0 -968
  234. package/src/installs/imageoptim.md +0 -1119
  235. package/src/installs/installers.json +0 -4032
  236. package/src/installs/installers.json.tmp +0 -3953
  237. package/src/installs/jq.js +0 -400
  238. package/src/installs/jq.md +0 -809
  239. package/src/installs/keyboard-maestro.js +0 -719
  240. package/src/installs/keyboard-maestro.md +0 -825
  241. package/src/installs/kiro.js +0 -864
  242. package/src/installs/kiro.md +0 -1015
  243. package/src/installs/latex.js +0 -789
  244. package/src/installs/latex.md +0 -1095
  245. package/src/installs/lftp.js +0 -356
  246. package/src/installs/lftp.md +0 -907
  247. package/src/installs/lsb-release.js +0 -346
  248. package/src/installs/lsb-release.md +0 -814
  249. package/src/installs/messenger.js +0 -847
  250. package/src/installs/messenger.md +0 -900
  251. package/src/installs/microsoft-office.js +0 -568
  252. package/src/installs/microsoft-office.md +0 -760
  253. package/src/installs/microsoft-teams.js +0 -801
  254. package/src/installs/microsoft-teams.md +0 -886
  255. package/src/installs/moom.js +0 -326
  256. package/src/installs/moom.md +0 -570
  257. package/src/installs/node.js +0 -904
  258. package/src/installs/node.md +0 -1153
  259. package/src/installs/nordpass.js +0 -716
  260. package/src/installs/nordpass.md +0 -921
  261. package/src/installs/nordvpn.js +0 -892
  262. package/src/installs/nordvpn.md +0 -1052
  263. package/src/installs/nvm.js +0 -995
  264. package/src/installs/nvm.md +0 -1057
  265. package/src/installs/ohmyzsh.js +0 -529
  266. package/src/installs/ohmyzsh.md +0 -1094
  267. package/src/installs/openssh.js +0 -804
  268. package/src/installs/openssh.md +0 -1056
  269. package/src/installs/pandoc.js +0 -662
  270. package/src/installs/pandoc.md +0 -1036
  271. package/src/installs/parallels-desktop.js +0 -431
  272. package/src/installs/parallels-desktop.md +0 -446
  273. package/src/installs/pinentry.js +0 -510
  274. package/src/installs/pinentry.md +0 -1142
  275. package/src/installs/pngyu.js +0 -869
  276. package/src/installs/pngyu.md +0 -896
  277. package/src/installs/postman.js +0 -799
  278. package/src/installs/postman.md +0 -940
  279. package/src/installs/procps.js +0 -425
  280. package/src/installs/procps.md +0 -851
  281. package/src/installs/safari-tech-preview.js +0 -374
  282. package/src/installs/safari-tech-preview.md +0 -533
  283. package/src/installs/sfnt2woff.js +0 -658
  284. package/src/installs/sfnt2woff.md +0 -795
  285. package/src/installs/shellcheck.js +0 -481
  286. package/src/installs/shellcheck.md +0 -1005
  287. package/src/installs/slack.js +0 -741
  288. package/src/installs/slack.md +0 -865
  289. package/src/installs/snagit.js +0 -585
  290. package/src/installs/snagit.md +0 -844
  291. package/src/installs/software-properties-common.js +0 -372
  292. package/src/installs/software-properties-common.md +0 -805
  293. package/src/installs/spotify.js +0 -877
  294. package/src/installs/spotify.md +0 -901
  295. package/src/installs/studio-3t.js +0 -823
  296. package/src/installs/studio-3t.md +0 -918
  297. package/src/installs/sublime-text.js +0 -804
  298. package/src/installs/sublime-text.md +0 -914
  299. package/src/installs/superwhisper.js +0 -706
  300. package/src/installs/superwhisper.md +0 -630
  301. package/src/installs/tailscale.js +0 -745
  302. package/src/installs/tailscale.md +0 -1100
  303. package/src/installs/tar.js +0 -389
  304. package/src/installs/tar.md +0 -946
  305. package/src/installs/termius.js +0 -798
  306. package/src/installs/termius.md +0 -844
  307. package/src/installs/terraform.js +0 -779
  308. package/src/installs/terraform.md +0 -899
  309. package/src/installs/tfenv.js +0 -778
  310. package/src/installs/tfenv.md +0 -1091
  311. package/src/installs/tidal.js +0 -771
  312. package/src/installs/tidal.md +0 -864
  313. package/src/installs/tmux.js +0 -346
  314. package/src/installs/tmux.md +0 -1030
  315. package/src/installs/tree.js +0 -411
  316. package/src/installs/tree.md +0 -833
  317. package/src/installs/unzip.js +0 -460
  318. package/src/installs/unzip.md +0 -879
  319. package/src/installs/vim.js +0 -421
  320. package/src/installs/vim.md +0 -1040
  321. package/src/installs/vlc.js +0 -821
  322. package/src/installs/vlc.md +0 -927
  323. package/src/installs/vscode.js +0 -843
  324. package/src/installs/vscode.md +0 -1002
  325. package/src/installs/wget.js +0 -420
  326. package/src/installs/wget.md +0 -791
  327. package/src/installs/whatsapp.js +0 -729
  328. package/src/installs/whatsapp.md +0 -854
  329. package/src/installs/winpty.js +0 -352
  330. package/src/installs/winpty.md +0 -620
  331. package/src/installs/woff2.js +0 -553
  332. package/src/installs/woff2.md +0 -977
  333. package/src/installs/wsl.js +0 -572
  334. package/src/installs/wsl.md +0 -699
  335. package/src/installs/xcode-clt.js +0 -520
  336. package/src/installs/xcode-clt.md +0 -351
  337. package/src/installs/xcode.js +0 -560
  338. package/src/installs/xcode.md +0 -573
  339. package/src/installs/yarn.js +0 -824
  340. package/src/installs/yarn.md +0 -1074
  341. package/src/installs/yq.js +0 -654
  342. package/src/installs/yq.md +0 -944
  343. package/src/installs/yt-dlp.js +0 -701
  344. package/src/installs/yt-dlp.md +0 -946
  345. package/src/installs/yum-utils.js +0 -297
  346. package/src/installs/yum-utils.md +0 -648
  347. package/src/installs/zoom.js +0 -759
  348. package/src/installs/zoom.md +0 -884
  349. package/src/installs/zsh.js +0 -455
  350. package/src/installs/zsh.md +0 -1008
  351. package/src/scripts/README.md +0 -617
  352. package/src/scripts/STATUS.md +0 -208
  353. package/src/scripts/afk.js +0 -411
  354. package/src/scripts/backup-all.js +0 -746
  355. package/src/scripts/backup-source.js +0 -727
  356. package/src/scripts/brewd.js +0 -389
  357. package/src/scripts/brewi.js +0 -520
  358. package/src/scripts/brewr.js +0 -527
  359. package/src/scripts/brews.js +0 -477
  360. package/src/scripts/brewu.js +0 -504
  361. package/src/scripts/c.js +0 -201
  362. package/src/scripts/ccurl.js +0 -341
  363. package/src/scripts/certbot-crontab-init.js +0 -504
  364. package/src/scripts/certbot-init.js +0 -657
  365. package/src/scripts/ch.js +0 -355
  366. package/src/scripts/claude-danger.js +0 -268
  367. package/src/scripts/clean-dev.js +0 -435
  368. package/src/scripts/clear-dns-cache.js +0 -541
  369. package/src/scripts/clone.js +0 -435
  370. package/src/scripts/code-all.js +0 -437
  371. package/src/scripts/count-files.js +0 -211
  372. package/src/scripts/count-folders.js +0 -211
  373. package/src/scripts/count.js +0 -264
  374. package/src/scripts/d.js +0 -219
  375. package/src/scripts/datauri.js +0 -389
  376. package/src/scripts/delete-files.js +0 -380
  377. package/src/scripts/docker-clean.js +0 -426
  378. package/src/scripts/dp.js +0 -442
  379. package/src/scripts/e.js +0 -390
  380. package/src/scripts/empty-trash.js +0 -513
  381. package/src/scripts/evm.js +0 -444
  382. package/src/scripts/fetch-github-repos.js +0 -456
  383. package/src/scripts/get-channel.js +0 -345
  384. package/src/scripts/get-course.js +0 -399
  385. package/src/scripts/get-dependencies.js +0 -306
  386. package/src/scripts/get-folder.js +0 -799
  387. package/src/scripts/get-tunes.js +0 -426
  388. package/src/scripts/get-video.js +0 -367
  389. package/src/scripts/git-backup.js +0 -577
  390. package/src/scripts/git-clone.js +0 -493
  391. package/src/scripts/git-pup.js +0 -319
  392. package/src/scripts/git-push.js +0 -396
  393. package/src/scripts/h.js +0 -622
  394. package/src/scripts/hide-desktop-icons.js +0 -499
  395. package/src/scripts/hide-hidden-files.js +0 -538
  396. package/src/scripts/install-dependencies-from.js +0 -456
  397. package/src/scripts/ips.js +0 -663
  398. package/src/scripts/iso.js +0 -370
  399. package/src/scripts/killni.js +0 -577
  400. package/src/scripts/ll.js +0 -467
  401. package/src/scripts/local-ip.js +0 -325
  402. package/src/scripts/m.js +0 -524
  403. package/src/scripts/map.js +0 -309
  404. package/src/scripts/mkd.js +0 -351
  405. package/src/scripts/ncu-update-all.js +0 -457
  406. package/src/scripts/nginx-init.js +0 -718
  407. package/src/scripts/npmi.js +0 -382
  408. package/src/scripts/o.js +0 -511
  409. package/src/scripts/org-by-date.js +0 -338
  410. package/src/scripts/p.js +0 -224
  411. package/src/scripts/packages.js +0 -330
  412. package/src/scripts/path.js +0 -225
  413. package/src/scripts/ports.js +0 -597
  414. package/src/scripts/q.js +0 -305
  415. package/src/scripts/refresh-files.js +0 -394
  416. package/src/scripts/remove-smaller-files.js +0 -516
  417. package/src/scripts/rename-files-with-date.js +0 -533
  418. package/src/scripts/resize-image.js +0 -539
  419. package/src/scripts/rm-safe.js +0 -669
  420. package/src/scripts/s.js +0 -540
  421. package/src/scripts/set-git-public.js +0 -365
  422. package/src/scripts/show-desktop-icons.js +0 -475
  423. package/src/scripts/show-hidden-files.js +0 -472
  424. package/src/scripts/tpa.js +0 -280
  425. package/src/scripts/tpo.js +0 -280
  426. package/src/scripts/u.js +0 -505
  427. package/src/scripts/vpush.js +0 -437
  428. package/src/scripts/y.js +0 -283
  429. package/src/utils/README.md +0 -95
  430. package/src/utils/common/apps.js +0 -143
  431. package/src/utils/common/display.js +0 -157
  432. package/src/utils/common/network.js +0 -185
  433. package/src/utils/common/os.js +0 -294
  434. package/src/utils/common/package-manager.js +0 -301
  435. package/src/utils/common/privileges.js +0 -138
  436. package/src/utils/common/shell.js +0 -261
  437. package/src/utils/macos/apps.js +0 -228
  438. package/src/utils/macos/brew.js +0 -315
  439. package/src/utils/ubuntu/apt.js +0 -307
  440. package/src/utils/ubuntu/desktop.js +0 -292
  441. package/src/utils/ubuntu/snap.js +0 -344
  442. package/src/utils/ubuntu/systemd.js +0 -286
  443. package/src/utils/windows/choco.js +0 -465
  444. package/src/utils/windows/env.js +0 -246
  445. package/src/utils/windows/registry.js +0 -269
  446. package/src/utils/windows/shell.js +0 -240
  447. package/src/utils/windows/winget.js +0 -489
@@ -1,907 +0,0 @@
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/)