[{"data":1,"prerenderedAt":845},["ShallowReactive",2],{"NoscriptNav_XrRK2e2e8meJ0jKVGkb5ULGQDVi3UiFQ9nupAr7Yns":3,"\u002Freports\u002Fgit-magic-files":8},["Island",4],{"key":5,"result":6},"NoscriptNav_XrRK2e2e8meJ0jKVGkb5ULGQDVi3UiFQ9nupAr7Yns",{"head":7},{},{"id":9,"title":10,"authors":11,"body":13,"canonicalUrl":831,"canonicalWebsiteName":832,"category":833,"date":834,"description":835,"extension":836,"featured":837,"fullWidthLayout":837,"image":838,"imageAlt":838,"location":838,"meta":839,"metaImage":838,"navigation":840,"path":841,"seo":842,"stem":843,"venue":838,"venueUrl":838,"__hash__":844},"reports\u002Freports\u002Fgit-magic-files.md","Git's Magic Files",[12],"andrew",{"type":14,"value":15,"toc":816},"minimark",[16,31,41,46,49,59,88,107,130,145,149,152,158,172,190,203,217,221,224,230,236,253,261,265,275,281,284,299,306,309,323,327,341,347,354,370,373,388,392,398,404,417,423,436,440,447,453,472,484,489,508,511,527,538,542,555,565,579,591,597,608,619,625,631,663,667,670,676,682,691,707,713,719,725,741,747,753,757,760,785,799,802],[17,18,19,20,25,26,30],"p",{},"A follow-up to my post on ",[21,22,24],"a",{"href":23},"\u002Freports\u002Fextending-git-functionality","extending git functionality",". Git looks for several special files in your repository that control its behavior. These aren't configuration files in ",[27,28,29],"code",{},".git\u002F",", they're committed files that travel with your code and affect how git treats your files.",[17,32,33,34,40],{},"If you're building a tool that works with git repositories, like ",[21,35,39],{"href":36,"rel":37},"https:\u002F\u002Fgithub.com\u002Fgit-pkgs\u002Fgit-pkgs",[38],"nofollow","git-pkgs",", you'll want to ensure you respect these configs.",[42,43,45],"h3",{"id":44},"gitignore",".gitignore",[17,47,48],{},"Patterns of files git should never track. One pattern per line, supports wildcards and directory markers.",[50,51,56],"pre",{"className":52,"code":54,"language":55},[53],"language-text","node_modules\u002F\n*.log\n.env\ndist\u002F\n","text",[27,57,54],{"__ignoreMap":58},"",[17,60,61,62,64,65,68,69,72,73,76,77,80,81,84,85,87],{},"Git checks multiple ignore files in order: ",[27,63,45],{}," in each directory, ",[27,66,67],{},".git\u002Finfo\u002Fexclude"," for local-only ignores, and the global ignore file at ",[27,70,71],{},"~\u002F.config\u002Fgit\u002Fignore"," or wherever ",[27,74,75],{},"core.excludesFile"," points. Global ignores are good for OS-specific files like ",[27,78,79],{},".DS_Store"," or ",[27,82,83],{},"Thumbs.db"," that shouldn't clutter every project's ",[27,86,45],{},".",[17,89,90,91,94,95,98,99,102,103,106],{},"The pattern matching supports wildcards (",[27,92,93],{},"*.log","), directory markers (",[27,96,97],{},"dist\u002F","), negation (",[27,100,101],{},"!important.log","), and character ranges. The ",[27,104,105],{},"**"," pattern matches nested directories.",[17,108,109,111,112,114,115,118,119,122,123,122,126,129],{},[27,110,45],{}," only affects untracked files. Files that were already tracked before being added to ",[27,113,45],{}," stay in the repository and show up in every forge's web UI as normal (",[27,116,117],{},"git rm --cached"," removes them from tracking). GitHub, GitLab, Forgejo, and Gitea's web editors will also let you create a file matching an ignored pattern and commit it without any warning. Package managers often ship with their own ignore patterns (",[27,120,121],{},"node_modules\u002F",", ",[27,124,125],{},"vendor\u002F",[27,127,128],{},"target\u002F",") that you're expected to add to your ignore file.",[17,131,132,133,138,139,144],{},"See the ",[21,134,137],{"href":135,"rel":136},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgitignore",[38],"gitignore docs"," for the full pattern syntax. GitHub maintains ",[21,140,143],{"href":141,"rel":142},"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgitignore",[38],"a collection of .gitignore templates"," for different languages and frameworks.",[42,146,148],{"id":147},"gitattributes",".gitattributes",[17,150,151],{},"Tells git how to handle specific files. This is where you configure filters, diff drivers, merge drivers, line ending normalization, and language detection overrides.",[50,153,156],{"className":154,"code":155,"language":55},[53],"# Clean\u002Fsmudge filters\n*.psd filter=lfs diff=lfs merge=lfs\n\n# Line ending normalization\n*.sh text eol=lf\n*.bat text eol=crlf\n\n# Treat as binary\n*.png binary\n\n# Custom diff driver\n*.json diff=json\n\n# Merge strategy\npackage-lock.json merge=ours\n\n# Language detection override for GitHub Linguist\nvendor\u002F* linguist-vendored\n*.gen.go linguist-generated\ndocs\u002F* linguist-documentation\n",[27,157,155],{"__ignoreMap":58},[17,159,160,161,163,164,167,168,171],{},"The ",[27,162,55],{}," attribute tells git to normalize line endings. The ",[27,165,166],{},"binary"," attribute tells git not to diff or merge, just pick one version. The ",[27,169,170],{},"merge=ours"," strategy always keeps your version during merge conflicts.",[17,173,174,175,177,178,181,182,185,186,189],{},"GitHub Linguist reads ",[27,176,148],{}," to override its language detection. Mark vendored code with ",[27,179,180],{},"linguist-vendored"," to exclude it from language statistics. Mark generated files with ",[27,183,184],{},"linguist-generated"," to collapse them in diffs. Mark documentation with ",[27,187,188],{},"linguist-documentation"," to exclude it from stats.",[17,191,192,193,195,196,198,199,202],{},"Like ",[27,194,45],{},", git checks ",[27,197,148],{}," files in each directory and ",[27,200,201],{},".git\u002Finfo\u002Fattributes"," for local-only attributes.",[17,204,160,205,210,211,216],{},[21,206,209],{"href":207,"rel":208},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgitattributes",[38],"gitattributes docs"," cover all attributes. The ",[21,212,215],{"href":213,"rel":214},"https:\u002F\u002Fgithub.com\u002Fgithub-linguist\u002Flinguist\u002Fblob\u002Fmain\u002Fdocs\u002Foverrides.md",[38],"GitHub Linguist docs"," list its specific attributes.",[42,218,220],{"id":219},"lfsconfig",".lfsconfig",[17,222,223],{},"Git LFS configuration that travels with the repository. Uses git config format to set the LFS endpoint URL, transfer settings, and other LFS options.",[50,225,228],{"className":226,"code":227,"language":55},[53],"[lfs]\n    url = https:\u002F\u002Flfs.example.com\u002Frepo\n[lfs \"transfer\"]\n    maxretries = 3\n",[27,229,227],{"__ignoreMap":58},[17,231,232,233,235],{},"Git LFS reads ",[27,234,220],{}," automatically when you run LFS commands. This lets you commit LFS configuration so everyone working on the repo uses the same settings. Without it, developers need to manually configure their local LFS setup.",[17,237,238,239,241,242,245,246,248,249,252],{},"LFS also uses ",[27,240,148],{}," to mark which files should be handled by LFS (the ",[27,243,244],{},"*.psd filter=lfs diff=lfs merge=lfs"," pattern shown above). The ",[27,247,220],{}," file handles the LFS-specific settings like where to find the LFS server. If you add file patterns to LFS after files are already committed, you need to run ",[27,250,251],{},"git lfs migrate"," to rewrite history and move those files into LFS.",[17,254,132,255,260],{},[21,256,259],{"href":257,"rel":258},"https:\u002F\u002Fgithub.com\u002Fgit-lfs\u002Fgit-lfs\u002Fblob\u002Fmain\u002Fdocs\u002Fman\u002Fgit-lfs-config.adoc",[38],"Git LFS config docs"," for all available options.",[42,262,264],{"id":263},"gitmodules",".gitmodules",[17,266,267,268,271,272,87],{},"Configuration for git submodules. Git writes this file when you run ",[27,269,270],{},"git submodule add"," and reads it when you run ",[27,273,274],{},"git submodule update",[50,276,279],{"className":277,"code":278,"language":55},[53],"[submodule \"vendor\u002Flib\"]\n    path = vendor\u002Flib\n    url = https:\u002F\u002Fgithub.com\u002Fexample\u002Flib.git\n    branch = main\n",[27,280,278],{"__ignoreMap":58},[17,282,283],{},"Each submodule gets an entry with its path, URL, and optionally the branch to track. The file lives at the root of your repository.",[17,285,286,287,290,291,294,295,298],{},"Submodules let you embed other git repositories as dependencies. Running ",[27,288,289],{},"git clone"," doesn't fetch submodule content automatically, you need ",[27,292,293],{},"git submodule update --init --recursive"," or pass ",[27,296,297],{},"--recurse-submodules"," to clone.",[17,300,301,302,305],{},"They don't handle versioning well (you track a specific commit, not a version range), they create nested ",[27,303,304],{},".git"," directories, and forgetting to update them creates confusing states.",[17,307,308],{},"But submodules work fine for vendoring code you control or for monorepo structures where you want to check out only part of the tree.",[17,310,160,311,316,317,322],{},[21,312,315],{"href":313,"rel":314},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-submodule",[38],"git submodules docs"," explain the full workflow. The ",[21,318,321],{"href":319,"rel":320},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgitmodules",[38],"gitmodules docs"," cover the file format.",[42,324,326],{"id":325},"mailmap",".mailmap",[17,328,329,330,122,333,336,337,340],{},"Maps author names and email addresses to canonical identities. Git uses this for ",[27,331,332],{},"git log",[27,334,335],{},"git shortlog",", and ",[27,338,339],{},"git blame"," output.",[50,342,345],{"className":343,"code":344,"language":55},[53],"# Map old email to new email\nJane Developer \u003Cjane@company.com> \u003Cjane@oldcompany.com>\n\n# Standardize name spelling\nJane Developer \u003Cjane@company.com> Jane Dev \u003Cjane@company.com>\n\n# Fix both\nJane Developer \u003Cjane@company.com> \u003Cjaned@personal.com>\nJane Developer \u003Cjane@company.com> J Developer \u003Cjaned@personal.com>\n",[27,346,344],{"__ignoreMap":58},[17,348,349,350,353],{},"The format is ",[27,351,352],{},"Proper Name \u003Cproper@email.com> Commit Name \u003Ccommit@email.com>",". Git looks for entries matching the commit author and rewrites the output.",[17,355,356,122,359,336,361,363,364,369],{},[27,357,358],{},"git shortlog -sn",[27,360,332],{},[27,362,339],{}," all use mailmap to aggregate commits under canonical identities. GitHub's contributor graphs ",[21,365,368],{"href":366,"rel":367},"https:\u002F\u002Fgithub.com\u002Forgs\u002Fcommunity\u002Fdiscussions\u002F22518",[38],"do not",", which means duplicate entries persist on the web even when your mailmap is correct.",[17,371,372],{},"Without mailmap, contributors who changed email addresses or fixed typos in their names show up as multiple people. With it, all their commits aggregate under one identity.",[17,374,160,375,380,381,383,384,387],{},[21,376,379],{"href":377,"rel":378},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgitmailmap",[38],"gitmailmap docs"," cover the file format. You can put mailmap at ",[27,382,326],{}," in the repo root or configure ",[27,385,386],{},"mailmap.file"," to point elsewhere.",[42,389,391],{"id":390},"git-blame-ignore-revs",".git-blame-ignore-revs",[17,393,394,395,397],{},"Lists commits that ",[27,396,339],{}," should skip. Put the commit SHA of bulk formatting changes, linting passes, or other noise commits in this file and blame will look through them to find the meaningful change.",[50,399,402],{"className":400,"code":401,"language":55},[53],"# .git-blame-ignore-revs\n# Ran prettier on entire codebase\na1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0\n\n# Migrated to ESLint flat config\nb2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1\n",[27,403,401],{"__ignoreMap":58},[17,405,406,407,410,411,413,414,416],{},"Configure git to use it with ",[27,408,409],{},"git config blame.ignoreRevsFile .git-blame-ignore-revs",". GitHub, GitLab (15.4+), and Gitea all read this file automatically without configuration. If you set this in your global git config, ",[27,412,339],{}," will fail in any repository that doesn't have the file, so you either need per-repo config or an empty ",[27,415,391],{}," in every repo you work in.",[17,418,419,420,422],{},"This solves the problem where running a formatter on the entire codebase makes ",[27,421,339],{}," useless. With this file, blame skips those commits and shows the actual author of the logic.",[17,424,425,426,429,430,435],{},"The file format is simple: one commit SHA per line, with ",[27,427,428],{},"#"," for comments. See the ",[21,431,434],{"href":432,"rel":433},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-blame#Documentation\u002Fgit-blame.txt---ignore-revs-fileltfilegt",[38],"git blame docs"," for details.",[42,437,439],{"id":438},"gitmessage",".gitmessage",[17,441,442,443,446],{},"A template for commit messages. You configure this with ",[27,444,445],{},"git config commit.template .gitmessage"," and git will pre-fill the commit message editor with this content.",[50,448,451],{"className":449,"code":450,"language":55},[53],"# .gitmessage\n# \u003Ctype>: \u003Csubject>\n#\n# \u003Cbody>\n#\n# \u003Cfooter>\n#\n# Types: feat, fix, docs, style, refactor, test, chore\n",[27,452,450],{"__ignoreMap":58},[17,454,455,456,458,459,461,462,467,468,471],{},"Unlike the other files in this post, ",[27,457,439],{}," requires manual configuration per clone. Each developer needs to run ",[27,460,445],{}," after cloning. Some teams automate this with a setup script or use tools like ",[21,463,466],{"href":464,"rel":465},"https:\u002F\u002Fgithub.com\u002Ftypicode\u002Fhusky",[38],"husky"," to set local configs during installation. This extra step is why most projects prefer ",[27,469,470],{},"commit-msg"," hooks to validate format rather than templates to guide writing.",[17,473,160,474,479,480,483],{},[21,475,478],{"href":476,"rel":477},"https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-commit#_discussion",[38],"git commit docs"," mention template files. The ",[27,481,482],{},"prepare-commit-msg"," hook is an alternative that can generate dynamic templates.",[485,486,488],"h2",{"id":487},"forge-specific-folders","Forge-Specific Folders",[17,490,491,492,122,495,122,498,122,501,122,504,507],{},"Git forges extend repositories with their own magic folders: ",[27,493,494],{},".github\u002F",[27,496,497],{},".gitlab\u002F",[27,499,500],{},".gitea\u002F",[27,502,503],{},".forgejo\u002F",[27,505,506],{},".bitbucket\u002F",". These aren't git features, but they follow the same pattern: configuration that travels with your code.",[17,509,510],{},"Inside these folders you'll find CI\u002FCD workflows, issue and PR templates, CODEOWNERS files mapping paths to required reviewers, and other forge-specific configuration. The folders let forges add features without polluting the repository root.",[17,512,513,514,516,517,516,519,521,522,516,524,526],{},"Forgejo and Gitea have fallback chains. Forgejo checks ",[27,515,503],{}," → ",[27,518,500],{},[27,520,494],{},". Gitea checks ",[27,523,500],{},[27,525,494],{},". This lets you override GitHub-specific config when hosting on multiple platforms.",[17,528,529,530,533,534,537],{},"SourceHut uses ",[27,531,532],{},".build.yml"," at the root or ",[27,535,536],{},".builds\u002F*.yml"," for CI, without a dedicated folder namespace.",[485,539,541],{"id":540},"other-conventions","Other Conventions",[17,543,544,548,549,551,552,554],{},[545,546,547],"strong",{},".gitkeep"," is a convention, not a git feature. Git doesn't track empty directories. If you want an empty directory in your repository, you put a ",[27,550,547],{}," file in it so git has something to track. The filename ",[27,553,547],{}," is arbitrary, it could be anything.",[17,556,557,560,561,564],{},[545,558,559],{},".gitconfig"," files sometimes appear in repositories as suggested configuration. Git won't load these automatically (security reasons), but projects include them with instructions to run ",[27,562,563],{},"git config include.path ..\u002F.gitconfig"," or manually copy settings. Common in monorepos or projects with specific git settings they want to standardize.",[17,566,567,570,571,574,575,578],{},[545,568,569],{},".gitsigners"," or similar files track GPG\u002FSSH signing keys for trusted contributors. Not a native git feature, but used by some projects (notably the Linux kernel) as part of their signing workflow. Git's ",[27,572,573],{},"gpg.ssh.allowedSignersFile"," config can point to a file of trusted SSH keys that ",[27,576,577],{},"git log --show-signature"," uses for verification.",[17,580,581,584,585,590],{},[545,582,583],{},".gitreview"," configures ",[21,586,589],{"href":587,"rel":588},"https:\u002F\u002Fwww.gerritcodereview.com\u002F",[38],"Gerrit"," code review integration. Used by projects hosted on Gerrit (OpenStack, Android, Eclipse) to specify which Gerrit server and project to push to.",[50,592,595],{"className":593,"code":594,"language":55},[53],"[gerrit]\nhost=review.opendev.org\nport=29418\nproject=openstack\u002Fnova.git\ndefaultbranch=master\n",[27,596,594],{"__ignoreMap":58},[17,598,599,600,607],{},"Running ",[21,601,604],{"href":602,"rel":603},"https:\u002F\u002Fdocs.opendev.org\u002Fopendev\u002Fgit-review\u002Flatest\u002F",[38],[27,605,606],{},"git review"," reads this file and pushes commits to Gerrit for review instead of directly to the branch. It's a canonical example of a tool extending git's workflow through a committed config file.",[17,609,610,584,613,618],{},[545,611,612],{},".gitlint",[21,614,617],{"href":615,"rel":616},"https:\u002F\u002Fjorisroovers.com\u002Fgitlint\u002F",[38],"gitlint"," for commit message linting. Follows the same pattern: commit the config, everyone gets the same rules.",[50,620,623],{"className":621,"code":622,"language":55},[53],"[general]\nignore=body-is-missing\n\n[title-max-length]\nline-length=72\n",[27,624,622],{"__ignoreMap":58},[17,626,627,628,630],{},"Gitlint reads this to validate commit message format. Similar to using a ",[27,629,470],{}," hook but with the configuration traveling with the repository.",[17,632,633,636,637,642,643,645,646,649,650,652,653,655,656,122,658,122,660,662],{},[545,634,635],{},".jj\u002F"," is ",[21,638,641],{"href":639,"rel":640},"https:\u002F\u002Fgithub.com\u002Fjj-vcs\u002Fjj",[38],"Jujutsu","'s working copy state directory. Jujutsu is a git-compatible VCS that stores its own metadata in ",[27,644,635],{}," while respecting all of git's magic files. If you use ",[27,647,648],{},"jj",", you'll have both ",[27,651,29],{}," and ",[27,654,635],{}," in your repository, and ",[27,657,45],{},[27,659,148],{},[27,661,326],{}," all work the same way.",[485,664,666],{"id":665},"beyond-git","Beyond Git",[17,668,669],{},"The pattern extends beyond git. Other tools follow the same approach: drop a dotfile in your repository, tools detect it automatically, behavior changes.",[17,671,672,675],{},[545,673,674],{},".editorconfig"," standardizes editor behavior across teams. Put it at the root of your repo and editors read it to configure indent style, line endings, trailing whitespace, and character encoding.",[50,677,680],{"className":678,"code":679,"language":55},[53],"root = true\n\n[*]\nindent_style = space\nindent_size = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n",[27,681,679],{"__ignoreMap":58},[17,683,684,685,690],{},"VS Code, Vim, Emacs, Sublime, and most other editors either support it natively or have plugins. See ",[21,686,689],{"href":687,"rel":688},"https:\u002F\u002Feditorconfig.org\u002F",[38],"editorconfig.org"," for the full spec.",[17,692,693,122,696,122,699,702,703,706],{},[545,694,695],{},".ruby-version",[545,697,698],{},".node-version",[545,700,701],{},".python-version"," tell version managers which language version to use. Tools like rbenv, nodenv, pyenv, nvm, and asdf read these files when you ",[27,704,705],{},"cd"," into the directory and automatically switch versions.",[50,708,711],{"className":709,"code":710,"language":55},[53],"# .ruby-version\n3.3.0\n\n# .node-version\n20.11.0\n",[27,712,710],{"__ignoreMap":58},[17,714,715,718],{},[545,716,717],{},".tool-versions"," is asdf's multi-language version file. One file for all languages.",[50,720,723],{"className":721,"code":722,"language":55},[53],"ruby 3.3.0\nnodejs 20.11.0\npython 3.12.0\n",[27,724,722],{"__ignoreMap":58},[17,726,727,730,731,733,734,737,738,740],{},[545,728,729],{},".dockerignore"," works like ",[27,732,45],{}," but for Docker build context. When you run ",[27,735,736],{},"docker build",", Docker sends files to the daemon. List patterns in ",[27,739,729],{}," and Docker won't send them.",[50,742,745],{"className":743,"code":744,"language":55},[53],".git\nnode_modules\n*.log\n.env\n",[27,746,744],{"__ignoreMap":58},[17,748,749,750,752],{},"This speeds up builds and keeps secrets out of images. The syntax matches ",[27,751,45],{},": wildcards, negation, directory markers.",[485,754,756],{"id":755},"supporting-these-files","Supporting These Files",[17,758,759],{},"If you're building tools that interact with git repositories, you probably want to respect these files:",[761,762,763,770,775,780],"ul",{},[764,765,766,767,769],"li",{},"Read ",[27,768,45],{}," when walking the repository tree",[764,771,766,772,774],{},[27,773,148],{}," to know which files are binary, vendored, or generated",[764,776,766,777,779],{},[27,778,326],{}," when displaying author information",[764,781,766,782,784],{},[27,783,264],{}," if you need to handle submodules",[17,786,787,788,790,791,794,795,798],{},"The git config format (used by ",[27,789,264],{}," and various other files) is ",[27,792,793],{},"[section \"subsection\"] key = value",". Git ships a ",[27,796,797],{},"git config"," command that reads and writes these files correctly. Most languages have git config parsers in their git libraries.",[800,801],"hr",{},[17,803,804,805,810,811,87],{},"If you know of other git magic files or have corrections, reach out on ",[21,806,809],{"href":807,"rel":808},"https:\u002F\u002Fmastodon.social\u002F@andrewnez",[38],"Mastodon"," or submit a pull request on ",[21,812,815],{"href":813,"rel":814},"https:\u002F\u002Fgithub.com\u002Fandrew\u002Fnesbitt.io",[38],"GitHub",{"title":58,"searchDepth":817,"depth":817,"links":818},2,[819,821,822,823,824,825,826,827,828,829,830],{"id":44,"depth":820,"text":45},3,{"id":147,"depth":820,"text":148},{"id":219,"depth":820,"text":220},{"id":263,"depth":820,"text":264},{"id":325,"depth":820,"text":326},{"id":390,"depth":820,"text":391},{"id":438,"depth":820,"text":439},{"id":487,"depth":817,"text":488},{"id":540,"depth":817,"text":541},{"id":665,"depth":817,"text":666},{"id":755,"depth":817,"text":756},"https:\u002F\u002Fnesbitt.io\u002F2026\u002F02\u002F05\u002Fgit-magic-files","nesbitt.io","tooling","2026-02-05","Magic files and where to find them: .gitignore, .gitattributes, .mailmap, .git-blame-ignore-revs, .lfsconfig, and more.","md",false,null,{},true,"\u002Freports\u002Fgit-magic-files",{"title":10,"description":835},"reports\u002Fgit-magic-files","YAALhVpaRvPVWxCKUMoOWoKehLLM7yjM0iBR6j23eFc",1780596103418]