[{"data":1,"prerenderedAt":1035},["ShallowReactive",2],{"i-feather:search":3,"i-feather:x":8,"i-feather:moon":10,"i-feather:sun":12,"i-fa-brands:youtube":14,"i-fa-brands:twitch":18,"i-fa-brands:github":20,"i-fa-brands:linkedin":23,"i-fa-brands:stack-overflow":26,"i-simple-icons:bluesky":29,"i-fa-brands:mastodon":31,"i-fa-regular:envelope":33,"i-fa-solid:rss":35,"post-\u002Fgitattributes-best-practices\u002F":37,"post-navigation":635,"i-fa-solid:share-alt":1015,"i-fa-brands:facebook":1017,"i-fa-brands:twitter":1019,"i-fa-brands:reddit":1021,"i-fa-brands:patreon":1023,"i-simple-icons:buymeacoffee":1025,"i-fa-brands:paypal":1027,"i-fa-regular:question-circle":1029,"i-feather:arrow-left":1031,"i-feather:arrow-right":1033},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003Cpath d=\"m21 21l-4.35-4.35\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 6L6 18M6 6l12 12\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 12.79A9 9 0 1 1 11.21 3A7 7 0 0 0 21 12.79\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"5\"\u002F>\u003Cpath d=\"M12 1v2m0 18v2M4.22 4.22l1.42 1.42m12.72 12.72l1.42 1.42M1 12h2m18 0h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":15,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":17},576,512,"\u003Cpath fill=\"currentColor\" d=\"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597c-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821c11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305m-317.51 213.508V175.185l142.739 81.205z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M391.17 103.47h-38.63v109.7h38.63ZM285 103h-38.63v109.75H285ZM120.83 0L24.31 91.42v329.16h115.83V512l96.53-91.42h77.25L487.69 256V0Zm328.24 237.75l-77.22 73.12h-77.24l-67.6 64v-64h-86.87V36.58h308.93Z\"\u002F>",{"left":4,"top":4,"width":21,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":22},496,"\u003Cpath fill=\"currentColor\" d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":25},448,"\u003Cpath fill=\"currentColor\" d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3M135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5c0 21.3-17.2 38.5-38.5 38.5m282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7c-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5c67.2 0 79.7 44.3 79.7 101.9z\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":28},384,"\u003Cpath fill=\"currentColor\" d=\"M290.7 311L95 269.7L86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8l153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24l119.3 160.3l32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":30},"\u003Cpath fill=\"currentColor\" d=\"M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037c-.856 3.061-3.978 3.842-6.755 3.37c4.854.826 6.089 3.562 3.422 6.299c-5.065 5.196-7.28-1.304-7.847-2.97c-.104-.305-.152-.448-.153-.327c0-.121-.05.022-.153.327c-.568 1.666-2.782 8.166-7.847 2.97c-2.667-2.737-1.432-5.473 3.422-6.3c-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":32},"\u003Cpath fill=\"currentColor\" d=\"M433 179.11c0-97.2-63.71-125.7-63.71-125.7c-62.52-28.7-228.56-28.4-290.48 0c0 0-63.72 28.5-63.72 125.7c0 115.7-6.6 259.4 105.63 289.1c40.51 10.7 75.32 13 103.33 11.4c50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7c56.12-6.7 105-41.3 111.23-72.9c9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175c25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5l11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1c23.71 27.3 18.4 53 18.4 175z\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":34},"\u003Cpath fill=\"currentColor\" d=\"M464 64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48m0 48v40.805c-22.422 18.259-58.168 46.651-134.587 106.49c-16.841 13.247-50.201 45.072-73.413 44.701c-23.208.375-56.579-31.459-73.413-44.701C106.18 199.465 70.425 171.067 48 152.805V112zM48 400V214.398c22.914 18.251 55.409 43.862 104.938 82.646c21.857 17.205 60.134 55.186 103.062 54.955c42.717.231 80.509-37.199 103.053-54.947c49.528-38.783 82.032-64.401 104.947-82.653V400z\"\u002F>",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":36},"\u003Cpath fill=\"currentColor\" d=\"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041s64.04 28.673 64.04 64.041m175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018c111.832 7.284 201.473 96.702 208.772 208.772c.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79m144.249.288C439.596 229.677 251.465 40.445 16.503 32.01C7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999c191.179 7.839 344.627 161.316 352.465 352.465c.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504\"\u002F>",{"id":38,"title":39,"author":40,"body":41,"comments":367,"date":612,"dateModified":613,"description":614,"extension":615,"headings":616,"heroImage":626,"meta":627,"path":628,"permalink":628,"published":629,"stem":630,"tags":631,"timeToRead":634},"posts\u002Fposts\u002F2019\u002Fgitattributes-best-practices\u002Findex.md",".gitattributes Best Practices","Muhammad Rehan Saeed",{"type":42,"value":43,"toc":364},"minimark",[44,68,99,122,136,149,164,173,176,185,191,197,205,219,227,233,236,243,246,260,263,266,280,286,289,292,307,317,331,337,340,354,360],[45,46,50,56],"div",{"className":47},[48,49],"custom-block","tip",[51,52,55],"p",{"className":53},[54],"custom-block-title","Update (2020-08-04)",[51,57,58,59,63,64,67],{},"Added some more information about CRLF line endings for ",[60,61,62],"code",{},".cmd"," and ",[60,65,66],{},".bat"," files. Also added a section about Git LFS support on GitHub.",[69,70,73,79],"h2",{"id":71,"data-section-heading":72},"gitignore","",[74,75,78],"span",{"className":76},[77],"heading__text",".gitignore",[80,81,84],"anchor-link",{"href":82,"label":83},"#gitignore","Link to this section",[85,86,93],"svg",{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink","0 0 16 16","1.1",22,"true",[94,95],"path",{"fill":96,"fill-rule":97,"d":98},"currentColor","evenodd","M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z",[51,100,101,102,112,113,115,116,121],{},"If you've messed with Git for long enough, you're aware that you can use the .gitignore file to exclude files from being checked into your repository. There is even a whole ",[103,104,111],"a",{"href":105,"rel":106,"target":110},"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgitignore",[107,108,109],"nofollow","noopener","noreferrer","_blank","GitHub repository"," with nothing but pre-made ",[60,114,78],{}," files you can download. If you work with anything vaguely in the Microsoft space with Visual Studio, you probably want the ",[103,117,120],{"href":118,"rel":119,"target":110},"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fgitignore\u002Fblob\u002Fmaster\u002FVisualStudio.gitignore",[107,108,109],"'Visual Studio' .gitignore file",".",[69,123,125,129],{"id":124,"data-section-heading":72},"gitattributes",[74,126,128],{"className":127},[77],".gitattributes",[80,130,132],{"href":131,"label":83},"#gitattributes",[85,133,134],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,135],{"fill":96,"fill-rule":97,"d":98},[51,137,138,139,143,144,148],{},"There is a lesser know ",[103,140,128],{"href":141,"rel":142,"target":110},"https:\u002F\u002Fwww.git-scm.com\u002Fdocs\u002Fgitattributes",[107,108,109]," file that can control a bunch of Git settings that you should consider adding to almost ",[145,146,147],"strong",{},"every"," repository as a matter of course.",[150,151,153,157],"h3",{"id":152,"data-section-heading":72},"line-endings",[74,154,156],{"className":155},[77],"Line Endings",[80,158,160],{"href":159,"label":83},"#line-endings",[85,161,162],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,163],{"fill":96,"fill-rule":97,"d":98},[51,165,166,167,172],{},"If you've studied a little computer science, you'll have seen that operating systems use different characters to represent line feeds in text files. Windows uses a Carriage Return (CR) followed by the Line Feed (LF) character, while Unix based operating systems use the Line Feed (LF) alone. All of this has it's origin in typewriters which is pretty amazing given how antiquated they are. I recommend reading the ",[103,168,171],{"href":169,"rel":170,"target":110},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNewline",[107,108,109],"Newline Wikipedia article"," for more on the subject.",[51,174,175],{},"Newline characters often cause problems in Git when you have developers working on different operating systems (Windows, Mac and Linux). If you've ever seen a phantom file change where there are no visible changes, that could be because the line endings in the file have been changed from CRLF to LF or vice versa.",[51,177,178,179,184],{},"Git can actually be configured to automatically handle line endings using a setting called ",[103,180,183],{"href":181,"rel":182,"target":110},"https:\u002F\u002Fhelp.github.com\u002Fen\u002Farticles\u002Fconfiguring-git-to-handle-line-endings",[107,108,109],"autocrlf",". This automatically changes the line endings in files depending on the operating system. However, you shouldn't rely on people having correctly configured Git installations. If someone with an incorrect configuration checked in a file, it would not be easily visible in a pull request and you'd end up with a repository with inconsistent line endings.",[51,186,187,188,190],{},"The solution to this is to add a ",[60,189,128],{}," file at the root of your repository and set the line endings to be automatically normalised like so:",[192,193],"pre",{"className":194,"language":195,"meta":72,"style":72,"html":196},"language-ini shiki shiki-themes light-plus monokai","ini","\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Set default behavior to automatically normalize line endings.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">* \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">text\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=auto\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Force batch scripts to always use CRLF line endings so that if a repo is accessed\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># in Windows via a file share from Linux, the scripts will work.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.{cmd,[cC][mM][dD]} text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=crlf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.{bat,[bB][aA][tT]} text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=crlf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.{ics,[iI][cC][sS]} text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=crlf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Force bash scripts to always use LF line endings so that if a repo is accessed\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># in Unix via a file share from Windows, the scripts will work.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.sh text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lf\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,198,199,200,121],{},"Only the first line is strictly necessary. It hard codes the line endings for Windows cmd and batch scripts to CRLF and bash scripts to be LF, so that they can be executed via a file share. It's a practice I picked up from the ",[103,201,204],{"href":202,"rel":203,"target":110},"https:\u002F\u002Fgithub.com\u002Fdotnet\u002Fcorefx\u002Fblob\u002Fmaster\u002F.gitattributes",[107,108,109],"corefx repository",[150,206,208,212],{"id":207,"data-section-heading":72},"git-large-file-system-lfs",[74,209,211],{"className":210},[77],"Git Large File System (LFS)",[80,213,215],{"href":214,"label":83},"#git-large-file-system-lfs",[85,216,217],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,218],{"fill":96,"fill-rule":97,"d":98},[51,220,221,222,226],{},"It's pretty common to want to check binary files into your Git repository. Building a website for example, involves images, fonts, maybe some compressed archives too. The problem with these binary files is that they bloat the repository a fair bit. Every time you check-in a change to a binary file, you've now got both files saved in Git's history. Over time this bloats the repository and makes cloning it slow. A much better solution is to use ",[103,223,211],{"href":224,"rel":225,"target":110},"https:\u002F\u002Fgit-lfs.github.com\u002F",[107,108,109],". LFS stores binary files in a separate file system. When you clone a repository, you only download the latest copies of the binary files and not every single changed version of them.",[51,228,229,230,232],{},"LFS is supported by most source control providers like GitHub, Bitbucket and Azure DevOps. It a plugin to Git that has to be separately installed (It's a checkbox in the Git installer) and it even has it's own CLI command 'git lfs' so you can run queries and operations against the files in LFS. You can control which files fall under LFS's remit in the ",[60,231,128],{}," file like so:",[192,234],{"className":194,"language":195,"meta":72,"style":72,"html":235},"\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"> # Archives\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.7z \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.br \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.gz \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.tar \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.zip \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Documents\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.pdf \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Images\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.gif \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.ico \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.jpg \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.png \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.psd \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.webp \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Fonts\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.woff2 \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Other\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.exe \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,237,238,239,242],{},"So here I've added a whole list of file extensions for various file types I want to be controlled by Git LFS. I tell Git that I want to filter, diff and merge using the LFS tool and finally the ",[60,240,241],{},"-text"," argument tells Git that this is not a text file, which is a strange way to tell it that it's a binary file.",[51,244,245],{},"A quick warning about adding LFS to an existing repository with existing binary files checked into it. The existing binary files will be checked into Git and not LFS without rewriting Git history which would be bad and you shouldn't do unless you are the only developer. You will have to add a one off commit to take the latest versions of all binary files and add them to LFS. Everyone who uses the repository will also have to re-clone the repository (I found this out the hard way in a team of 15 people. Many apologies were made over the course of a week). Ideally you add this from day one and educate developers about Git's treatment of binary files, so people don't check-in any binary files not controlled by LFS.",[150,247,249,253],{"id":248,"data-section-heading":72},"github",[74,250,252],{"className":251},[77],"GitHub",[80,254,256],{"href":255,"label":83},"#github",[85,257,258],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,259],{"fill":96,"fill-rule":97,"d":98},[51,261,262],{},"GitHub does technically provide Git LFS for free but they limit the bandwidth to 1GB. If your repository is public and you have any traffic going to your site whatsoever, you will get through that very quickly. GitHub charges $5 per month for a data pack which gives you 50GB of bandwidth per month which I've found is enough for a moderately popular GitHub repository.",[51,264,265],{},"I really don't understand why GitHub charges for Git LFS because people who don't want to pay are just going to check in binary files in Git instead which presumably would cost them more bandwidth. Surely they should be encouraging it's use by making it free?",[150,267,269,273],{"id":268,"data-section-heading":72},"binary-files",[74,270,272],{"className":271},[77],"Binary Files",[80,274,276],{"href":275,"label":83},"#binary-files",[85,277,278],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,279],{"fill":96,"fill-rule":97,"d":98},[51,281,282,283,285],{},"When talking about the ",[60,284,128],{}," file, you will quite often hear some people talk about explicitly listing all binary files instead of relying on Git to auto-detect binary files (yes Git is clever enough to do that) like this:",[192,287],{"className":194,"language":195,"meta":72,"style":72,"html":288},"\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Denote all files that are truly binary and should not be modified.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.png binary\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.jpg binary\n\u003C\u002Fspan>\u003C\u002Fspan>",[51,290,291],{},"As you saw above, we already do this with Git LFS but if you don't use LFS, read on as you may need to explicitly list binary files in certain rare circumstances.",[51,293,294,295,300,301,306],{},"I was interested so I asked a ",[103,296,299],{"href":297,"rel":298,"target":110},"https:\u002F\u002Fstackoverflow.com\u002Fquestions\u002F57030698\u002Fdo-i-really-need-to-specify-all-binary-files-in-gitattributes",[107,108,109],"Stack Overflow question"," and got great answers. If you look at the ",[103,302,305],{"href":303,"rel":304,"target":110},"https:\u002F\u002Fgithub.com\u002Fgit\u002Fgit\u002Fblob\u002F9c9b961d7eb15fb583a2a812088713a68a85f1c0\u002Fxdiff-interface.c#L187-L193",[107,108,109],"Git source code",", it checks first 8,000 bytes of a file to see if it contains a NUL character. If it does, the file is assumed to be binary. However, there are cases where you may need to do it explicitly:",[308,309,310,314],"ul",{},[311,312,313],"li",{},"UTF-16 encoded files could be mis-detected as binary.",[311,315,316],{},"Some image format or file that consists only of printable ASCII bytes. This is pretty weird and sounds unlikely to happen.",[69,318,320,324],{"id":319,"data-section-heading":72},"final-form",[74,321,323],{"className":322},[77],"Final Form",[80,325,327],{"href":326,"label":83},"#final-form",[85,328,329],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,330],{"fill":96,"fill-rule":97,"d":98},[51,332,333,334,336],{},"This is what the final ",[60,335,128],{}," file I copy to most repositories looks like:",[192,338],{"className":194,"language":195,"meta":72,"style":72,"html":339},"\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">###############################\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Git Line Endings            #\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">###############################\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Set default behaviour to automatically normalize line endings.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">* \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">text\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=auto\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Force batch scripts to always use CRLF line endings so that if a repo is accessed\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># in Windows via a file share from Linux, the scripts will work.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.{cmd,[cC][mM][dD]} text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=crlf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.{bat,[bB][aA][tT]} text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=crlf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Force bash scripts to always use LF line endings so that if a repo is accessed\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># in Unix via a file share from Windows, the scripts will work.\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.sh text \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">eol\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lf\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">###############################\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Git Large File System (LFS) #\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\">###############################\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Archives\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.7z \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.br \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.gz \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.tar \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.zip \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Documents\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.pdf \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Images\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.gif \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.ico \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.jpg \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.pdf \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.png \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.psd \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.webp \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Fonts\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.woff2 \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan>\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"s1q82\"># Other\n\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan class=\"sjLUg\">*.exe \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">filter\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">diff\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs \u003C\u002Fspan>\u003Cspan class=\"sJvqV\">merge\u003C\u002Fspan>\u003Cspan class=\"sjLUg\">=lfs -text\n\u003C\u002Fspan>\u003C\u002Fspan>",[69,341,343,347],{"id":342,"data-section-heading":72},"conclusions",[74,344,346],{"className":345},[77],"Conclusions",[80,348,350],{"href":349,"label":83},"#conclusions",[85,351,352],{"xmlns":87,"xmlns:xlink":88,"viewBox":89,"version":90,"width":91,"height":91,"aria-hidden":92},[94,353],{"fill":96,"fill-rule":97,"d":98},[51,355,356,357,359],{},"All of the above are bits and pieces I've put together over time. Are there any other settings that should be considered best practice and added to any ",[60,358,128],{}," file?",[361,362,363],"style",{},"html pre.shiki code .s1q82, html code.shiki .s1q82{--shiki-default:#008000;--shiki-dark:#88846F}html pre.shiki code .sjLUg, html code.shiki .sjLUg{--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sJvqV, html code.shiki .sJvqV{--shiki-default:#0000FF;--shiki-dark:#F92672}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":72,"searchDepth":365,"depth":365,"links":366},2,[],{"issue":368,"comments":372},{"number":369,"title":370,"html_url":371},80,"[Comment] .gitattributes Best Practices","https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80",[373,385,393,401,409,417,425,433,441,450,459,471,479,487,495,508,516,528,539,547,558,569,580,588,596,604],{"id":374,"html_url":375,"body_html":376,"created_at":377,"updated_at":377,"author_association":378,"user":379,"reactions":383},627259424,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259424","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F26e44d68f6f8844747f7f574df98589cc190cb6e8b9b84769e28d9777198b15d\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30613361313832333862643761343062643963366335326539646334373633363f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Hussein Abdl Ghani\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F26e44d68f6f8844747f7f574df98589cc190cb6e8b9b84769e28d9777198b15d\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f30613361313832333862643761343062643963366335326539646334373633363f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Hussein Abdl Ghani\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-23 01:54:24\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Great post Muhammad, I enjoyed every bit of it and became more intrigued about \u003Ccode>.gitattributes\u003C\u002Fcode> and what else it offers. I would love to see you on Medium or dev.to. Keep the good work!\u003C\u002Fp>","2020-05-12T10:35:39Z","OWNER",{"login":380,"avatar_url":381,"html_url":382},"RehanSaeed","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2270364?v=4","https:\u002F\u002Fgithub.com\u002FRehanSaeed",{"url":384,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259424\u002Freactions",{"id":386,"html_url":387,"body_html":388,"created_at":389,"updated_at":389,"author_association":378,"user":390,"reactions":391},627259491,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259491","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-23 09:11:08\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Great post Muhammad, I enjoyed every bit of it and became more intrigued about \u003Ccode>.gitattributes\u003C\u002Fcode> and what else it offers. I would love to see you on Medium or dev.to. Keep the good work!\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I'm not a fan of third party blogging services. I like to own my own words. Thanks for reading!\u003C\u002Fp>","2020-05-12T10:35:47Z",{"login":380,"avatar_url":381,"html_url":382},{"url":392,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259491\u002Freactions",{"id":394,"html_url":395,"body_html":396,"created_at":397,"updated_at":397,"author_association":378,"user":398,"reactions":399},627259552,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259552","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F16e8917f46098ec56bd26dbad3e9647fe36d5d7900b266b92f5291226d7412b9\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34373534356638356564393763363763353631316265353931386461393231353f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Some dude on the internet\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F16e8917f46098ec56bd26dbad3e9647fe36d5d7900b266b92f5291226d7412b9\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f34373534356638356564393763363763353631316265353931386461393231353f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Some dude on the internet\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-23 12:13:59\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Most of the programming editors these days support working with either line ending, regardless of the platform they run on, and \u003Cem>most\u003C\u002Fem> other tools (compilers etc..) are line-ending-agnostic.\u003C\u002Fp>\n\u003Cp>I've found I've had more problems caused by git trying to be helpful and converting my line endings for me, than the other way around. So I'd say best practice is to use \u003Ccode>* -text\u003C\u002Fcode> in the \u003Ccode>.gitattributes\u003C\u002Fcode> and add \u003Ccode>.editorconfig\u003C\u002Fcode> that enforces the projects preferred line endings. An added benefit is that you can also specify file encodings in your \u003Ccode>.editorconfig\u003C\u002Fcode> file.\u003C\u002Fp>","2020-05-12T10:35:54Z",{"login":380,"avatar_url":381,"html_url":382},{"url":400,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259552\u002Freactions",{"id":402,"html_url":403,"body_html":404,"created_at":405,"updated_at":405,"author_association":378,"user":406,"reactions":407},627259609,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259609","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-23 17:00:34\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Most of the programming editors these days support working with either line ending, regardless of the platform they run on, and \u003Cem>most\u003C\u002Fem> other tools (compilers etc..) are line-ending-agnostic.\u003C\u002Fp>\n\u003Cp>I've found I've had more problems caused by git trying to be helpful and converting my line endings for me, than the other way around. So I'd say best practice is to use \u003Ccode>* -text\u003C\u002Fcode> in the \u003Ccode>.gitattributes\u003C\u002Fcode> and add \u003Ccode>.editorconfig\u003C\u002Fcode> that enforces the projects preferred line endings. An added benefit is that you can also specify file encodings in your \u003Ccode>.editorconfig\u003C\u002Fcode> file.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>That's a really great point about the \u003Ccode>.editorconfig\u003C\u002Fcode> file having some overlap. Unfortunately, not all editors (I use Nodepad2 for quick edits sometimes) support it.\u003C\u002Fp>\n\u003Cp>It's a shame I don't know who you are but thanks stranger!\u003C\u002Fp>","2020-05-12T10:36:00Z",{"login":380,"avatar_url":381,"html_url":382},{"url":408,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259609\u002Freactions",{"id":410,"html_url":411,"body_html":412,"created_at":413,"updated_at":413,"author_association":378,"user":414,"reactions":415},627259669,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259669","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff5e05d3442788cd01e991f891c755f377abfc217e2949cfddc9a1c263edcc957\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64343965633862356664363464323939346335313039643032633730313730393f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Filip Å \" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002Ff5e05d3442788cd01e991f891c755f377abfc217e2949cfddc9a1c263edcc957\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f64343965633862356664363464323939346335313039643032633730313730393f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fwww.filips.si\u002F\">Filip Å \u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-24 14:28:05\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hey! Great article. I was planning to reorganize my project's Git files so it was useful for me. There are still a few things and questions I would like to mention here.\u003C\u002Fp>\n\u003Cp>Git supports defining language-aware diffs in \u003Ccode>.gitattributes\u003C\u002Fcode> (like \u003Ccode>*.html  diff=html\u003C\u002Fcode> and \u003Ccode>*.py   diff=python\u003C\u002Fcode>). Is it needed or to manually specify that or will Git automatically detect language and use correct diff for it?\u003C\u002Fp>\n\u003Cp>There is also something that is often useful. This is \u003Ccode>export-ignore\u003C\u002Fcode> which allows you to exclude files from archive. This is useful if you want to exclude tests or other unneeded files from the generated archive.\u003C\u002Fp>","2020-05-12T10:36:07Z",{"login":380,"avatar_url":381,"html_url":382},{"url":416,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259669\u002Freactions",{"id":418,"html_url":419,"body_html":420,"created_at":421,"updated_at":421,"author_association":378,"user":422,"reactions":423},627259726,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259726","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-07-25 09:16:08\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Hey! Great article. I was planning to reorganize my project's Git files so it was useful for me. There are still a few things and questions I would like to mention here.\u003C\u002Fp>\n\u003Cp>Git supports defining language-aware diffs in \u003Ccode>.gitattributes\u003C\u002Fcode> (like \u003Ccode>*.html  diff=html\u003C\u002Fcode> and \u003Ccode>*.py   diff=python\u003C\u002Fcode>). Is it needed or to manually specify that or will Git automatically detect language and use correct diff for it?\u003C\u002Fp>\n\u003Cp>There is also something that is often useful. This is \u003Ccode>export-ignore\u003C\u002Fcode> which allows you to exclude files from archive. This is useful if you want to exclude tests or other unneeded files from the generated archive.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>These are good questions that I haven't explored. To be honest, I don't use the \u003Ccode>git diff\u003C\u002Fcode> tool, I prefer to use Visual Studio\u002FVS Code or I'm currently trying out Semantic Merge (semanticmerge.com) which is interesting.\u003C\u002Fp>","2020-05-12T10:36:13Z",{"login":380,"avatar_url":381,"html_url":382},{"url":424,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259726\u002Freactions",{"id":426,"html_url":427,"body_html":428,"created_at":429,"updated_at":429,"author_association":378,"user":430,"reactions":431},627259776,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259776","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F1eda9fc2375ea56f07c1d2d815ae66eb691e44aaab46336486e80d94c92df0f5\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63656166336535373565623031346239633361346137663166373639643166343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"your bro\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F1eda9fc2375ea56f07c1d2d815ae66eb691e44aaab46336486e80d94c92df0f5\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63656166336535373565623031346239633361346137663166373639643166343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>your bro\u003C\u002Fstrong> commented on \u003Cstrong>2019-11-26 05:44:13\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>\u003Ccode>################################################################################\n\nThis .gitignore file was automatically created by Microsoft(R) Visual Studio.\n\n################################################################################\n\n\u002FSource\u002Fabc\u002Fabc\u002Fabc\u002Fbin\n\u002FSource\u002Fabc\u002Fabc\u002F.vs\u002Fabc\u002Fv15\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>My file look like this what i can do\u003C\u002Fp>","2020-05-12T10:36:20Z",{"login":380,"avatar_url":381,"html_url":382},{"url":432,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259776\u002Freactions",{"id":434,"html_url":435,"body_html":436,"created_at":437,"updated_at":437,"author_association":378,"user":438,"reactions":439},627259821,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259821","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2019-11-29 17:45:07\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cdiv>\u003Cpre>\u003Ccode>################################################################################\n\nThis .gitignore file was automatically created by Microsoft(R) Visual Studio.\n\n################################################################################\n\n\u002FSource\u002Fabc\u002Fabc\u002Fabc\u002Fbin\n\u002FSource\u002Fabc\u002Fabc\u002F.vs\u002Fabc\u002Fv15\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>my file look like this what i can do\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>What do you want to do?\u003C\u002Fp>","2020-05-12T10:36:28Z",{"login":380,"avatar_url":381,"html_url":382},{"url":440,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259821\u002Freactions",{"id":442,"html_url":443,"body_html":444,"created_at":445,"updated_at":446,"author_association":378,"user":447,"reactions":448},627259860,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259860","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ba4788b4e6103ae33b06479c6c342fb8980f73c8847f5b92a2e426ade47477\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63346361616461343463303537303566316233623638623661656365373031303f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Sandburg\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F45ba4788b4e6103ae33b06479c6c342fb8980f73c8847f5b92a2e426ade47477\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f63346361616461343463303537303566316233623638623661656365373031303f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>Sandburg\u003C\u002Fstrong> commented on \u003Cstrong>2020-05-01 13:51:40\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Git has already many rules for binary files. It can already detect it.\u003Cbr \u002F>\nSo, beginning by a normalization \u003Ccode>* text=auto\u003C\u002Fcode> ... I'm not sure it's the better idea. The worth would be to \u003Ccode>* text\u003C\u002Fcode>, ah ah ah.\u003Cbr \u002F>\nOn the other hand, setting \u003Ccode>*.sh text eol=lf\u003C\u002Fcode> and \u003Ccode>*.bat text eol=crlf\u003C\u002Fcode> is mandatory. Because sadly, git can't do that. Or alloweds himself not to do so...\u003Cbr \u002F>\nNowadays, we work so much multi plateform, docker and so on. You clone from one point, you work from another... the line endings on many formats have to be hardcoded, not free.\u003C\u002Fp>","2020-05-12T10:36:34Z","2020-05-12T12:05:55Z",{"login":380,"avatar_url":381,"html_url":382},{"url":449,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259860\u002Freactions",{"id":451,"html_url":452,"body_html":453,"created_at":454,"updated_at":455,"author_association":378,"user":456,"reactions":457},627259935,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-627259935","\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\">\u003Cimg alt=\"Muhammad Rehan Saeed\" height=\"40\" width=\"40\" src=\"https:\u002F\u002Fcamo.githubusercontent.com\u002F8a07049df41b8a3839a3f4342f09ea8e6e7fa0065667687f04beca2d088a1dca\u002F68747470733a2f2f7777772e67726176617461722e636f6d2f6176617461722f32623266393030653361633066353535316462646537323864336262343935343f733d393626643d6d6d26723d67\" \u002F>\u003C\u002Fa> \u003Cstrong>\u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Frehansaeed.com\u002F\">Muhammad Rehan Saeed\u003C\u002Fa>\u003C\u002Fstrong> commented on \u003Cstrong>2020-05-07 12:51:40\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Git has already many rules for binary files. It can already detect it.\u003Cbr \u002F>\nSo, beginning by a normalization \u003Ccode>* text=auto\u003C\u002Fcode> ... I'm not sure it's the better idea. The worth would be to \u003Ccode>* text\u003C\u002Fcode>, ah ah ah.\u003Cbr \u002F>\nOn the other hand, setting \u003Ccode>*.sh text eol=lf\u003C\u002Fcode> and \u003Ccode>*.bat text eol=crlf\u003C\u002Fcode> is mandatory. Because sadly, git can't do that. Or alloweds himself not to do so...\u003Cbr \u002F>\nNowadays, we work so much multi plateform, docker and so on. You clone from one point, you work from another... the line endings on many formats have to be hardcoded, not free.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>There are some heuristics that detect the file type. I spent a lot of time trying to understand how good they are and came to the conclusion that it's better to be explicit.\u003C\u002Fp>","2020-05-12T10:36:42Z","2020-05-12T12:06:18Z",{"login":380,"avatar_url":381,"html_url":382},{"url":458,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F627259935\u002Freactions",{"id":460,"html_url":461,"body_html":462,"created_at":463,"updated_at":463,"author_association":464,"user":465,"reactions":469},699646004,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-699646004","\u003Cdiv>\u003Cpre>\u003Ccode># Documents\n*.pdf filter=lfs diff=lfs merge=lfs -text\n\n# Images\n*.gif filter=lfs diff=lfs merge=lfs -text\n*.ico filter=lfs diff=lfs merge=lfs -text\n*.jpg filter=lfs diff=lfs merge=lfs -text\n*.pdf filter=lfs diff=lfs merge=lfs -text\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>What is the point of having PDF in there twice?\u003C\u002Fp>","2020-09-27T14:59:15Z","CONTRIBUTOR",{"login":466,"avatar_url":467,"html_url":468},"TysonMN","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F34664007?v=4","https:\u002F\u002Fgithub.com\u002FTysonMN",{"url":470,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F699646004\u002Freactions",{"id":472,"html_url":473,"body_html":474,"created_at":475,"updated_at":475,"author_association":378,"user":476,"reactions":477},699935052,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-699935052","\u003Cblockquote>\n\u003Cdiv>\u003Cpre>\u003Ccode># Documents\n*.pdf filter=lfs diff=lfs merge=lfs -text\n\n# Images\n*.gif filter=lfs diff=lfs merge=lfs -text\n*.ico filter=lfs diff=lfs merge=lfs -text\n*.jpg filter=lfs diff=lfs merge=lfs -text\n*.pdf filter=lfs diff=lfs merge=lfs -text\n\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>What is the point of having PDF in there twice?\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Thanks, fixed.\u003C\u002Fp>","2020-09-28T10:57:45Z",{"login":380,"avatar_url":381,"html_url":382},{"url":478,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F699935052\u002Freactions",{"id":480,"html_url":481,"body_html":482,"created_at":483,"updated_at":483,"author_association":464,"user":484,"reactions":485},700000216,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-700000216","\u003Cp>Many of your repositories have \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fsearch?q=user%3ARehanSaeed+%22%2A.pdf+filter%3Dlfs+diff%3Dlfs+merge%3Dlfs+-text%22&amp;type=code\">the same duplication\u003C\u002Fa>.\u003C\u002Fp>","2020-09-28T13:16:58Z",{"login":466,"avatar_url":467,"html_url":468},{"url":486,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F700000216\u002Freactions",{"id":488,"html_url":489,"body_html":490,"created_at":491,"updated_at":491,"author_association":378,"user":492,"reactions":493},700003400,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-700003400","\u003Cblockquote>\n\u003Cp>Many of your repositories have \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fsearch?q=user%3ARehanSaeed+%22%2A.pdf+filter%3Dlfs+diff%3Dlfs+merge%3Dlfs+-text%22&amp;type=code\">the same duplication\u003C\u002Fa>.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Oh my god! Thanks for letting me know.\u003C\u002Fp>","2020-09-28T13:22:45Z",{"login":380,"avatar_url":381,"html_url":382},{"url":494,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F700003400\u002Freactions",{"id":496,"html_url":497,"body_html":498,"created_at":499,"updated_at":500,"author_association":501,"user":502,"reactions":506},1067764272,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1067764272","\u003Cp>Feeling like the biggest party pooper saying this, but my experiences of using \u003Ccode>eol=\u003C\u002Fcode> are all bad. Makes for weird cases where your local copy differs from the remote, but not in a way that will update it on a checkout (since git thinks there is no change). Even more weird when working on the same repository from both Windows and WSL.\u003C\u002Fp>\n\u003Cp>Have much better experiences making sure all developers use proper IDEs that are properly configured. Configuration(s) embedded in the repository. Dealing with the occasional mishap when it happens, updating configurations and workflow recommendations (edit using any configured IDE instead of non-configured text editor).\u003C\u002Fp>\n\u003Cp>Perhaps I'm the weird one.\u003C\u002Fp>","2022-03-15T09:42:51Z","2022-03-15T09:48:04Z","NONE",{"login":503,"avatar_url":504,"html_url":505},"urbasus","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25083765?v=4","https:\u002F\u002Fgithub.com\u002Furbasus",{"url":507,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1067764272\u002Freactions",{"id":509,"html_url":510,"body_html":511,"created_at":512,"updated_at":512,"author_association":378,"user":513,"reactions":514},1067775478,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1067775478","\u003Cp>I pretty much only use it for \u003Ccode>.sh\u003C\u002Fcode>, \u003Ccode>.cmd\u003C\u002Fcode> and \u003Ccode>.bat\u003C\u002Fcode> files. So very limited use case where it makes sense to do so. But agree, that if overused it might be cause for concern.\u003C\u002Fp>\n\u003Cp>The trouble with relying developers to properly configure IDE's is that its not always possible e.g. if you're doing something on GitHub for example.\u003C\u002Fp>","2022-03-15T09:53:36Z",{"login":380,"avatar_url":381,"html_url":382},{"url":515,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1067775478\u002Freactions",{"id":517,"html_url":518,"body_html":519,"created_at":520,"updated_at":520,"author_association":501,"user":521,"reactions":525},1118058923,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1118058923","\u003Cp>Tashakkur Muhammed,\u003Cbr \u002F>\nThis changed my thought and want to used Git LFS now cos of the efficiency in big project. I did notice slowness of Git processes with binary files before and while reading your words, that was very clear. Now I have a custom .gitattributes with also Git LFS support as much as I could add.\u003C\u002Fp>\n\u003Cp>Now I see Git LFS is the future.\u003C\u002Fp>","2022-05-05T00:35:03Z",{"login":522,"avatar_url":523,"html_url":524},"uluQulu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F33269249?v=4","https:\u002F\u002Fgithub.com\u002FuluQulu",{"url":526,"total_count":527,"+1":527,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1118058923\u002Freactions",1,{"id":529,"html_url":530,"body_html":531,"created_at":532,"updated_at":532,"author_association":501,"user":533,"reactions":537},1359255632,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1359255632","\u003Cp>The curly braces pattern matching syntax in the examples does not work. For example:\u003Cbr \u002F>\n\u003Ccode>*.{bat,[bB][aA][tT]} text eol=crlf\u003C\u002Fcode>\u003Cbr \u002F>\nIt works only using this syntax:\u003Cbr \u002F>\n\u003Ccode>*.[bB][aA][tT] text eol=crlf\u003C\u002Fcode>\u003C\u002Fp>","2022-12-20T11:58:49Z",{"login":534,"avatar_url":535,"html_url":536},"bolligerm","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43510923?v=4","https:\u002F\u002Fgithub.com\u002Fbolligerm",{"url":538,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1359255632\u002Freactions",{"id":540,"html_url":541,"body_html":542,"created_at":543,"updated_at":543,"author_association":378,"user":544,"reactions":545},1541500028,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1541500028","\u003Cblockquote>\n\u003Cp>The curly braces pattern matching syntax in the examples does not work.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fbolligerm\">@bolligerm\u003C\u002Fa> Not sure why its not working for you but it works for me.\u003C\u002Fp>","2023-05-10T07:36:19Z",{"login":380,"avatar_url":381,"html_url":382},{"url":546,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1541500028\u002Freactions",{"id":548,"html_url":549,"body_html":550,"created_at":551,"updated_at":551,"author_association":501,"user":552,"reactions":556},1606197056,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1606197056","\u003Cblockquote>\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fbolligerm\">@bolligerm\u003C\u002Fa> Not sure why its not working for you but it works for me.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FRehanSaeed\">@RehanSaeed\u003C\u002Fa> - I was also curious about this syntax with curly brackets as I couldn't find it mentioned in the docs or by looking at \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fgit\u002Fgit\u002Fblob\u002F94486b6763c29144c60932829a65fec0597e17b3\u002Fwildmatch.c#L2\">the code\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>If I run the following in PowerShell on Windows:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>mkdir \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>test-with-curly-bracket\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan>\ncd .\u003Cspan>\\test-with\u003C\u002Fspan>\u003Cspan>-\u003C\u002Fspan>curly\u003Cspan>-\u003C\u002Fspan>bracket\\\ngit init\necho \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>*.{bat,[bB][aA][tT]} text eol=crlf\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan> \u003Cspan>&gt;\u003C\u002Fspan> .gitattributes\ndos2unix .gitattributes\ngit check\u003Cspan>-\u003C\u002Fspan>attr eol \u003Cspan>test.bat\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>I get :\u003Cbr \u002F>\n\u003Ccode>test.bat: eol: unspecified\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>However, with this version:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>mkdir \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>test-without-curly-bracket\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan>\ncd .\u003Cspan>\\test-without\u003C\u002Fspan>\u003Cspan>-\u003C\u002Fspan>curly\u003Cspan>-\u003C\u002Fspan>bracket\\\ngit init\necho \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>*.[bB][aA][tT] text eol=crlf\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan> \u003Cspan>&gt;\u003C\u002Fspan> .gitattributes\ndos2unix .gitattributes\ngit check\u003Cspan>-\u003C\u002Fspan>attr eol \u003Cspan>test.bat\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>I get :\u003Cbr \u002F>\n\u003Ccode>test.bat: eol: crlf\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Based on that, it looks like a file with pathname ending with \u003Ccode>.bat\u003C\u002Fcode> doesn't match with the pattern using curly brackets.\u003C\u002Fp>","2023-06-25T17:55:31Z",{"login":553,"avatar_url":554,"html_url":555},"DecimalTurn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31558169?v=4","https:\u002F\u002Fgithub.com\u002FDecimalTurn",{"url":557,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1606197056\u002Freactions",{"id":559,"html_url":560,"body_html":561,"created_at":562,"updated_at":562,"author_association":501,"user":563,"reactions":567},1660698048,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1660698048","\u003Cp>Thanks for the article but I still dont find much info on how to properly set .gitattributes for teams working on Windows, MacOS, Linux and technologies like Java, Angular\u003Cbr \u002F>\nMind providing more explanation on that?  It seem to be you are working on windows only\u003C\u002Fp>","2023-08-01T16:37:01Z",{"login":564,"avatar_url":565,"html_url":566},"dbnex14","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8755679?v=4","https:\u002F\u002Fgithub.com\u002Fdbnex14",{"url":568,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1660698048\u002Freactions",{"id":570,"html_url":571,"body_html":572,"created_at":573,"updated_at":573,"author_association":501,"user":574,"reactions":578},1667541148,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1667541148","\u003Cp>Very useful indeed! You could add a line for \u003Ccode>.xz\u003C\u002Fcode> files - these are artifacts of the \u003Ccode>xz\u003C\u002Fcode> compression utility.\u003C\u002Fp>","2023-08-07T09:45:41Z",{"login":575,"avatar_url":576,"html_url":577},"christian-schlichtherle","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1545428?v=4","https:\u002F\u002Fgithub.com\u002Fchristian-schlichtherle",{"url":579,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1667541148\u002Freactions",{"id":581,"html_url":582,"body_html":583,"created_at":584,"updated_at":584,"author_association":378,"user":585,"reactions":586},1725663474,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1725663474","\u003Cblockquote>\n\u003Cblockquote>\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fbolligerm\">@bolligerm\u003C\u002Fa> Not sure why its not working for you but it works for me.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002FRehanSaeed\">@RehanSaeed\u003C\u002Fa> - I was also curious about this syntax with curly brackets as I couldn't find it mentioned in the docs or by looking at \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fgit\u002Fgit\u002Fblob\u002F94486b6763c29144c60932829a65fec0597e17b3\u002Fwildmatch.c#L2\">the code\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>If I run the following in PowerShell on Windows:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>mkdir \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>test-with-curly-bracket\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan>\ncd .\u003Cspan>\\test-with\u003C\u002Fspan>\u003Cspan>-\u003C\u002Fspan>curly\u003Cspan>-\u003C\u002Fspan>bracket\\\ngit init\necho \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>*.{bat,[bB][aA][tT]} text eol=crlf\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan> \u003Cspan>&gt;\u003C\u002Fspan> .gitattributes\ndos2unix .gitattributes\ngit check\u003Cspan>-\u003C\u002Fspan>attr eol \u003Cspan>test.bat\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>I get : \u003Ccode>test.bat: eol: unspecified\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>However, with this version:\u003C\u002Fp>\n\u003Cdiv>\u003Cpre>mkdir \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>test-without-curly-bracket\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan>\ncd .\u003Cspan>\\test-without\u003C\u002Fspan>\u003Cspan>-\u003C\u002Fspan>curly\u003Cspan>-\u003C\u002Fspan>bracket\\\ngit init\necho \u003Cspan>\u003Cspan>\"\u003C\u002Fspan>*.[bB][aA][tT] text eol=crlf\u003Cspan>\"\u003C\u002Fspan>\u003C\u002Fspan> \u003Cspan>&gt;\u003C\u002Fspan> .gitattributes\ndos2unix .gitattributes\ngit check\u003Cspan>-\u003C\u002Fspan>attr eol \u003Cspan>test.bat\u003C\u002Fspan>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>I get : \u003Ccode>test.bat: eol: crlf\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Based on that, it looks like a file with pathname ending with \u003Ccode>.bat\u003C\u002Fcode> doesn't match with the pattern using curly brackets.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>This is syntax specific to git.\u003C\u002Fp>","2023-09-19T14:05:46Z",{"login":380,"avatar_url":381,"html_url":382},{"url":587,"total_count":527,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":527,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1725663474\u002Freactions",{"id":589,"html_url":590,"body_html":591,"created_at":592,"updated_at":592,"author_association":378,"user":593,"reactions":594},1725668323,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1725668323","\u003Cblockquote>\n\u003Cp>Thanks for the article but I still dont find much info on how to properly set .gitattributes for teams working on Windows, MacOS, Linux and technologies like Java, Angular Mind providing more explanation on that? It seem to be you are working on windows only\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I work in a Windows and Linux environment and even have some Mac build machines for some open source projects. All working fine.\u003C\u002Fp>","2023-09-19T14:06:25Z",{"login":380,"avatar_url":381,"html_url":382},{"url":595,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1725668323\u002Freactions",{"id":597,"html_url":598,"body_html":599,"created_at":600,"updated_at":600,"author_association":378,"user":601,"reactions":602},1725671766,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-1725671766","\u003Cblockquote>\n\u003Cp>Very useful indeed! You could add a line for \u003Ccode>.xz\u003C\u002Fcode> files - these are artifacts of the \u003Ccode>xz\u003C\u002Fcode> compression utility.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>I've not come across that one. Good to know.\u003C\u002Fp>","2023-09-19T14:06:55Z",{"login":380,"avatar_url":381,"html_url":382},{"url":603,"total_count":527,"+1":527,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F1725671766\u002Freactions",{"id":605,"html_url":606,"body_html":607,"created_at":608,"updated_at":608,"author_association":501,"user":609,"reactions":610},2458182936,"https:\u002F\u002Fgithub.com\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002F80#issuecomment-2458182936","\u003Cp>I've started to notice this template usage on GitHub and it has reached more than \u003Ca target=\"_blank\" rel=\"nofollow noopener noreferrer\" href=\"https:\u002F\u002Fgithub.com\u002Fsearch?q=path%3A.gitattributes+%2F%23+in+Windows+via+a+file+share+from+Linux%2C+the+scripts+will+work.%5Cn%5E%5C*%5C.%5C%7Bcmd%2C%5C%5BcC%5C%5D%5C%5BmM%5C%5D%5C%5BdD%5C%5D%5C%7D+text+eol%3Dcrlf%2F&amp;type=code\">400 instances\u003C\u002Fa>. It's just a shame that the syntax with curly brackets is not supported for \u003Ccode>.gitattributes\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>I think my previous comment demonstrated clearly that it's not supported, but \u003Ca rel=\"nofollow noopener noreferrer\" target=\"_blank\" href=\"https:\u002F\u002Fstackoverflow.com\u002Fa\u002F63731734\u002F5958842\">this Stack Overflow answer\u003C\u002Fa> also confirms it.\u003C\u002Fp>","2024-11-05T21:27:38Z",{"login":553,"avatar_url":554,"html_url":555},{"url":611,"total_count":4,"+1":4,"-1":4,"laugh":4,"hooray":4,"confused":4,"heart":4,"rocket":4,"eyes":4},"https:\u002F\u002Fapi.github.com\u002Frepos\u002FRehanSaeed\u002Frehansaeed.github.io\u002Fissues\u002Fcomments\u002F2458182936\u002Freactions","2019-07-22T00:00:00+00:00","2020-08-04T00:00:00+00:00","Best practices for configuring Git in the .gitattributes file. Configuring CRLF and LF line endings. Configuring Git Large File System (LFS) for binary files.","md",[617,618,619,621,622,623,624,625],{"depth":365,"value":78},{"depth":365,"value":128},{"depth":620,"value":156},3,{"depth":620,"value":211},{"depth":620,"value":252},{"depth":620,"value":272},{"depth":365,"value":323},{"depth":365,"value":346},"\u002Fimages\u002Fhero\u002FGit-1366x768.png",{},"\u002Fgitattributes-best-practices\u002F",true,"posts\u002F2019\u002Fgitattributes-best-practices\u002Findex",[632,633,124,252,71],"Git","Git LFS",7,[636,640,644,648,653,656,659,663,667,671,674,678,683,686,689,693,697,701,704,708,712,716,719,723,728,732,735,738,741,746,750,753,758,762,766,770,773,777,781,785,789,793,797,801,804,808,812,816,820,823,827,831,834,837,841,845,850,854,858,862,866,870,874,877,880,883,887,891,894,898,901,904,907,910,914,918,921,924,928,929,932,935,938,942,946,950,954,957,960,965,968,971,975,978,982,986,989,993,996,999,1003,1007,1011],{"title":637,"permalink":638,"heroImage":639,"timeToRead":527},"Just Start - The First Blog Post","\u002Fjust-start-the-first-blog-post\u002F","\u002Fimages\u002Fhero\u002FJust-Start-1366x768.png",{"title":641,"permalink":642,"heroImage":643,"timeToRead":365},"ConfigureAwait in Task Parallel Library (TPL)","\u002Fconfigureawait-task-parallel-library\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-.NET-1366x768.png",{"title":645,"permalink":646,"heroImage":647,"timeToRead":620},"Stop The Brace Wars, Use StyleCop","\u002Fstop-brace-wars-use-stylecop\u002F","\u002Fimages\u002Fhero\u002FStyleCop-1366x768.png",{"title":649,"permalink":650,"heroImage":651,"timeToRead":652},"Reactive Extensions (Rx) - Part 1 - Replacing C# Events","\u002Freactive-extensions-part1-replacing-events\u002F","\u002Fimages\u002Fhero\u002FReactive-Extensions-1366x768.png",4,{"title":654,"permalink":655,"heroImage":651,"timeToRead":620},"Reactive Extensions (Rx) - Part 2 - Wrapping C# Events","\u002Freactive-extensions-part2-wrapping-events\u002F",{"title":657,"permalink":658,"heroImage":651,"timeToRead":365},"Reactive Extensions (Rx) - Part 3 - Naming Conventions","\u002Freactive-extensions-part3-naming-conventions\u002F",{"title":660,"permalink":661,"heroImage":662,"timeToRead":620},"WPF Metro Part 1 - Modern UI for WPF","\u002Fwpf-metro-part1-modern-ui-for-wpf\u002F","\u002Fimages\u002Fhero\u002FModern-UI-for-WPF-1366x768.png",{"title":664,"permalink":665,"heroImage":666,"timeToRead":620},"WPF Metro Part 2 - MahApps Metro","\u002Fwpf-metro-part2-mahapps-metro\u002F","\u002Fimages\u002Fhero\u002FMahApps-Metro-1366x768.png",{"title":668,"permalink":669,"heroImage":670,"timeToRead":620},"Windows 8.1 TouchScreen Gaming Laptops","\u002Fwindows-8-touchscreen-gaming-laptops\u002F","\u002Fimages\u002Fhero\u002FFry-Shutup-And-Take-My-Money-1366x768.png",{"title":672,"permalink":673,"heroImage":651,"timeToRead":620},"Reactive Extensions (Rx) - Part 4 - Replacing Timers","\u002Freactive-extensions-part4-replacing-timers\u002F",{"title":675,"permalink":676,"heroImage":677,"timeToRead":365},"WPF Metro Part 3 - Elysium","\u002Fwpf-metro-part3-elysium\u002F","\u002Fimages\u002Fhero\u002FElysium-1366x768.png",{"title":679,"permalink":680,"heroImage":681,"timeToRead":682},"WPF Metro Part 4 - Elysium Extra","\u002Fwpf-metro-part4-elysium-extra\u002F","\u002Fimages\u002Fhero\u002FElysium-Extra-1366x768.png",8,{"title":684,"permalink":685,"heroImage":651,"timeToRead":652},"Reactive Extensions (Rx) - Part 5 - Awaiting Observables","\u002Freactive-extensions-part5-awaiting-observables\u002F",{"title":687,"permalink":688,"heroImage":643,"timeToRead":682},"GetHashCode Made Easy","\u002Fgethashcode-made-easy\u002F",{"title":690,"permalink":691,"heroImage":651,"timeToRead":692},"Reactive Extensions (Rx) - Part 6 - Task ToObservable","\u002Freactive-extensions-part6-task-toobservable\u002F",5,{"title":694,"permalink":695,"heroImage":696,"timeToRead":527},"Portable Class Library (PCL) version of NotificationsExtensions NuGet package","\u002Fportable-class-library-version-of-notificationsextensions-nuget-package\u002F","\u002Fimages\u002Fhero\u002FNuGet-1366x768.png",{"title":698,"permalink":699,"heroImage":700,"timeToRead":692},"Model-View-ViewModel (MVVM) - Part 1 - Overview","\u002Fmodel-view-viewmodel-mvvm-part1-overview\u002F","\u002Fimages\u002Fhero\u002FMVVM-1366x768.png",{"title":702,"permalink":703,"heroImage":700,"timeToRead":652},"Model-View-ViewModel (MVVM) - Part 2 - IDisposable","\u002Fmodel-view-viewmodel-mvvm-part2-idisposable\u002F",{"title":705,"permalink":706,"heroImage":700,"timeToRead":707},"Model-View-ViewModel (MVVM) - Part 3 - INotifyPropertyChanged","\u002Fmodel-view-viewmodel-mvvm-part3-inotifypropertychanged\u002F",11,{"title":709,"permalink":710,"heroImage":711,"timeToRead":620},"Naming Conventions","\u002Fnaming-conventions\u002F","\u002Fimages\u002Fhero\u002FNaming-Conventions-1366x768.png",{"title":713,"permalink":714,"heroImage":700,"timeToRead":715},"Model-View-ViewModel (MVVM) - Part 4 - INotifyDataErrorInfo","\u002Fmodel-view-viewmodel-mvvm-part4-inotifydataerrorinfo\u002F",12,{"title":717,"permalink":718,"heroImage":681,"timeToRead":652},"Elysium Extra 1.1 Released","\u002Felysium-extra-1-1-released\u002F",{"title":720,"permalink":721,"heroImage":722,"timeToRead":634},"ASP.NET Core Boilerplate","\u002Fasp-net-mvc-boilerplate\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Boilerplate-1366x768.png",{"title":724,"permalink":725,"heroImage":726,"timeToRead":727},"Internet Favicon Madness (Updated)","\u002Finternet-favicon-madness\u002F","\u002Fimages\u002Fhero\u002FFavicons-1366x768.png",17,{"title":729,"permalink":730,"heroImage":731,"timeToRead":634},"Custom Visual Studio Project Templates","\u002Fcustom-visual-studio-project-templates\u002F","\u002Fimages\u002Fhero\u002FVisual-Studio-1366x768.png",{"title":733,"permalink":734,"heroImage":731,"timeToRead":620},"Configuration File Transforms In Visual Studio Should Be Built In","\u002Fconfiguration-file-transforms-in-visual-studio-should-be-built-in\u002F",{"title":736,"permalink":737,"heroImage":722,"timeToRead":707},"Securing the ASP.NET MVC Web.config","\u002Fsecuring-the-aspnet-mvc-web-config\u002F",{"title":739,"permalink":740,"heroImage":651,"timeToRead":365},"Reactive Extensions (Rx) - Part 7 - Sample Events","\u002Freactive-extensions-part7-sample-events\u002F",{"title":742,"permalink":743,"heroImage":744,"timeToRead":745},"NWebSec ASP.NET MVC Security Through HTTP Headers","\u002Fnwebsec-asp-net-mvc-security-through-http-headers\u002F","\u002Fimages\u002Fhero\u002FNWebSec-1366x768.png",6,{"title":747,"permalink":748,"heroImage":749,"timeToRead":91},"Content Security Policy (CSP) for ASP.NET MVC","\u002Fcontent-security-policy-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FContent-Security-Policy-CSP-for-ASP.NET-MVC-1366x768.png",{"title":751,"permalink":752,"heroImage":643,"timeToRead":692},"C# 6.0 - Saving Developers From Themselves","\u002Fc-6-0-saving-developers-from-themselves\u002F",{"title":754,"permalink":755,"heroImage":756,"timeToRead":757},"Building RSS\u002FAtom Feeds for ASP.NET MVC","\u002Fbuilding-rssatom-feeds-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRSS-And-Atom-1366x768.png",19,{"title":759,"permalink":760,"heroImage":761,"timeToRead":707},"Canonical URL's for ASP.NET MVC","\u002Fcanonical-urls-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FLink-Juice-1366x768.png",{"title":763,"permalink":764,"heroImage":765,"timeToRead":652},"Dynamically Generating Robots.txt Using ASP.NET MVC","\u002Fdynamically-generating-robots-txt-using-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FRobots.txt-1366x768.jpg",{"title":767,"permalink":768,"heroImage":769,"timeToRead":652},"Minifying HTML for ASP.NET MVC","\u002Fminifying-html-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FThe-Internet-Is-A-Series-Of-Tubes-1366x768.jpg",{"title":771,"permalink":772,"heroImage":722,"timeToRead":365},"Whats New in ASP.NET Core Boilerplate","\u002Fwhats-new-in-asp-net-5-mvc-6-boilerplate\u002F",{"title":774,"permalink":775,"heroImage":776,"timeToRead":634},"Dynamically Generating Sitemap.xml for ASP.NET MVC","\u002Fdynamically-generating-sitemap-xml-for-asp-net-mvc\u002F","\u002Fimages\u002Fhero\u002FSitemaps-1366x768.png",{"title":778,"permalink":779,"heroImage":780,"timeToRead":365},"So I've Been Awarded Microsoft MVP Status!","\u002Fso-ive-been-awarded-microsoft-mvp-status\u002F","\u002Fimages\u002Fhero\u002FMicrosoft-MVP-1366x768.png",{"title":782,"permalink":783,"heroImage":784,"timeToRead":527},".NET Big-O Algorithm Complexity Cheat Sheet","\u002Fnet-big-o-algorithm-complexity-cheat-sheet\u002F","\u002Fimages\u002Fhero\u002FNET-Big-O-Algorithm-Complexity-Cheat-Sheet-1366x768.jpg",{"title":786,"permalink":787,"heroImage":788,"timeToRead":620},"Logging with Serilog.Exceptions","\u002Flogging-with-serilog-exceptions\u002F","\u002Fimages\u002Fhero\u002FSerilog.Exceptions-1366x768.png",{"title":790,"permalink":791,"heroImage":792,"timeToRead":527},"Make Certificate","\u002Fmake-certificate\u002F","\u002Fimages\u002Fhero\u002FMake-Certificate-1366x768.png",{"title":794,"permalink":795,"heroImage":796,"timeToRead":365},"Colorful.Console","\u002Fcolorful-console\u002F","\u002Fimages\u002Fhero\u002FColorful.Console-1366x768.png",{"title":798,"permalink":799,"heroImage":800,"timeToRead":620},"Subresource Integrity TagHelper Using ASP.NET Core - Part 1","\u002Fsubresource-integrity-taghelper-using-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FMake-Security-Easy-1366x768.png",{"title":802,"permalink":803,"heroImage":800,"timeToRead":652},"Subresource Integrity TagHelper Using ASP.NET Core - Part 2","\u002Fsubresource-integrity-taghelper-using-asp-net-core-part-2\u002F",{"title":805,"permalink":806,"heroImage":807,"timeToRead":692},"Social TagHelpers for ASP.NET Core","\u002Fsocial-taghelpers-for-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSocial-Media-1366x768.png",{"title":809,"permalink":810,"heroImage":811,"timeToRead":745},"Azure Active Directory Versus Identity Server","\u002Fazure-active-directory-versus-identity-server\u002F","\u002Fimages\u002Fhero\u002FAzure-Active-Directory-Versus-Identity-Server-1366x768.png",{"title":813,"permalink":814,"heroImage":815,"timeToRead":365},"ASP.NET Core Fluent Interface Extensions","\u002Fasp-net-core-fluent-interface-extensions\u002F","\u002Fimages\u002Fhero\u002FFluent-Interface-All-The-Things-1366x768.png",{"title":817,"permalink":818,"heroImage":819,"timeToRead":707},"NGINX for ASP.NET Core In-Depth","\u002Fnginx-asp-net-core-depth\u002F","\u002Fimages\u002Fhero\u002FNGINX-1366x768.png",{"title":821,"permalink":822,"heroImage":643,"timeToRead":365},"The Dotnet Watch Tool","\u002Fthe-dotnet-watch-tool\u002F",{"title":824,"permalink":825,"heroImage":826,"timeToRead":652},"Making Application Insights Fast & Secure","\u002Fmaking-application-insights-fast-and-secure\u002F","\u002Fimages\u002Fhero\u002FApplication-Insights-1366x768.png",{"title":828,"permalink":829,"heroImage":830,"timeToRead":634},"SEO Friendly URL's for ASP.NET Core","\u002Fseo-friendly-urls-asp-net-core\u002F","\u002Fimages\u002Fhero\u002FSearch-Engine-Optimization-SEO-1366x768.png",{"title":832,"permalink":833,"heroImage":651,"timeToRead":527},"Reactive Extensions (Rx) - Part 8 - Timeouts","\u002Freactive-extensions-rx-part-8-timeouts\u002F",{"title":835,"permalink":836,"heroImage":643,"timeToRead":652},"Custom Project Templates Using dotnet new","\u002Fcustom-project-templates-using-dotnet-new\u002F",{"title":838,"permalink":839,"heroImage":840,"timeToRead":682},"Cross-Platform DevOps for .NET Core","\u002Fcross-platform-devops-net-core\u002F","\u002Fimages\u002Fhero\u002FDotnet-Cake-AppVeyor-Travis-1366x768.png",{"title":842,"permalink":843,"heroImage":844,"timeToRead":634},"Cleaning Up CSPROJ","\u002Fcleaning-up-csproj\u002F","\u002Fimages\u002Fhero\u002FCleaning-Up-CSPROJ-1366x768.png",{"title":846,"permalink":847,"heroImage":848,"timeToRead":849},"dotnet new Feature Selection","\u002Fdotnet-new-feature-selection\u002F","\u002Fimages\u002Fhero\u002FWho-Wants-To-Be-A-Millionaire-1366x768.png",9,{"title":851,"permalink":852,"heroImage":853,"timeToRead":652},"ASP.NET Core Lazy Command Pattern","\u002Fasp-net-core-lazy-command-pattern\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Lazy-Command-Pattern-1366x768.png",{"title":855,"permalink":856,"heroImage":857,"timeToRead":365},"Structured Data using Schema.NET","\u002Fstructured-data-using-schema-net\u002F","\u002Fimages\u002Fhero\u002FSchema.NET-1366x768.png",{"title":859,"permalink":860,"heroImage":861,"timeToRead":745},"Keeping Up With Software Development","\u002Fkeeping-software-development\u002F","\u002Fimages\u002Fhero\u002FKeeping-up-with-Software-Development-1366x768.png",{"title":863,"permalink":864,"heroImage":865,"timeToRead":365},"A Very Generic .editorconfig File (Updated)","\u002Fgeneric-editorconfig-file\u002F","\u002Fimages\u002Fhero\u002FA-Very-Generic-Editorconfig-File-1366x768.png",{"title":867,"permalink":868,"heroImage":869,"timeToRead":692},"ASP.NET Core Caching in Practice","\u002Fasp-net-core-caching-in-practice\u002F","\u002Fimages\u002Fhero\u002FASP.NET-Core-Caching-in-Practice-1366x768.png",{"title":871,"permalink":872,"heroImage":873,"timeToRead":527},"Docker Read-Only File Systems","\u002Fdocker-read-file-systems\u002F","\u002Fimages\u002Fhero\u002FDocker-1366x768.png",{"title":875,"permalink":876,"heroImage":873,"timeToRead":620},"Docker Labels in Depth","\u002Fdocker-labels-depth\u002F",{"title":878,"permalink":879,"heroImage":873,"timeToRead":652},"Useful Docker Images - Part 1","\u002Fuseful-docker-images-part1\u002F",{"title":881,"permalink":882,"heroImage":873,"timeToRead":692},"Useful Docker Images - Part 2","\u002Fuseful-docker-images-part2\u002F",{"title":884,"permalink":885,"heroImage":886,"timeToRead":652},"Writing your Webpack configuration in TypeScript","\u002Fwriting-your-webpack-configuration-in-typescript\u002F","\u002Fimages\u002Fhero\u002FTypeScript-1366x768.png",{"title":888,"permalink":889,"heroImage":890,"timeToRead":692},"Writing Code while Asleep","\u002Fwriting-code-asleep\u002F","\u002Fimages\u002Fhero\u002FWhile-Alive-Eat-Sleep-Code-Repeat-1366x768.png",{"title":892,"permalink":893,"heroImage":643,"timeToRead":365},"The Dotnet Watch Tool Revisited","\u002Fthe-dotnet-watch-tool-revisited\u002F",{"title":895,"permalink":896,"heroImage":897,"timeToRead":365},".NET Boxed","\u002Fnet-boxed\u002F","\u002Fimages\u002Fhero\u002FDotnet-Boxed-1366x768.png",{"title":899,"permalink":900,"heroImage":643,"timeToRead":365},"Migrating to Entity Framework Core Seed Data","\u002Fmigrating-to-entity-framework-core-seed-data\u002F",{"title":902,"permalink":903,"heroImage":643,"timeToRead":620},"Optimally Configuring Entity Framework Core","\u002Foptimally-configuring-entity-framework-core\u002F",{"title":905,"permalink":906,"heroImage":643,"timeToRead":527},"ASP.NET Core Hidden Gem - QueryHelpers","\u002Fasp-net-core-hidden-gem-queryhelpers\u002F",{"title":908,"permalink":909,"heroImage":643,"timeToRead":849},"Optimally Configuring ASP.NET Core HttpClientFactory","\u002Foptimally-configuring-asp-net-core-httpclientfactory\u002F",{"title":911,"permalink":912,"heroImage":913,"timeToRead":634},"PluralSight vs LinkedIn Learning vs FrontendMasters vs Egghead.io vs YouTube","\u002Fpluralsight-vs-linkedin-learning-vs-frontendmasters-vs-egghead-io-vs-youtube\u002F","\u002Fimages\u002Fhero\u002FOnline-Learning-1366x768.png",{"title":915,"permalink":916,"heroImage":917,"timeToRead":849},"Is ASP.NET Core now a Mature Platform?","\u002Fis-asp-net-core-now-a-mature-platform\u002F","\u002Fimages\u002Fhero\u002FRocket-1366x768.jpg",{"title":919,"permalink":920,"heroImage":897,"timeToRead":849},"A Simple and Fast Object Mapper","\u002Fa-simple-and-fast-object-mapper\u002F",{"title":922,"permalink":923,"heroImage":873,"timeToRead":527},"Securing ASP.NET Core in Docker","\u002Fsecuring-asp-net-core-in-docker\u002F",{"title":925,"permalink":926,"heroImage":927,"timeToRead":652},"Git Cloning the Windows OS Repo","\u002Fgit-cloning-the-windows-os-repo\u002F","\u002Fimages\u002Fhero\u002FWindows-1366x768.png",{"title":39,"permalink":628,"heroImage":626,"timeToRead":634},{"title":930,"permalink":931,"heroImage":643,"timeToRead":620},"Unit Testing dotnet new Templates","\u002Funit-testing-dotnet-new-templates\u002F",{"title":933,"permalink":934,"heroImage":897,"timeToRead":692},"What dotnet new Could Be","\u002Fwhat-dotnet-new-could-be\u002F",{"title":936,"permalink":937,"heroImage":643,"timeToRead":652},"ASP.NET Core Integration Testing & Mocking using Moq","\u002Fasp-net-core-integration-testing-mocking-using-moq\u002F",{"title":939,"permalink":940,"heroImage":941,"timeToRead":634},"Choosing a Static Site Generator","\u002Fchoosing-a-static-site-generator\u002F","\u002Fimages\u002Fhero\u002FStatic-Site-Generators-1600x900.png",{"title":943,"permalink":944,"heroImage":945,"timeToRead":365},"Spicing up your Browser Console","\u002Fspicing-up-your-browser-console\u002F","\u002Fimages\u002Fhero\u002FFiglet-Fonts-1600x900.png",{"title":947,"permalink":948,"heroImage":949,"timeToRead":692},"Racism in Software Development & Beyond","\u002Fracism-in-software-development-and-beyond\u002F","\u002Fimages\u002Fhero\u002FBlack-Glowing-Fist-1600x900.png",{"title":951,"permalink":952,"heroImage":953,"timeToRead":692},"The Easiest Way to Version NuGet Packages","\u002Fthe-easiest-way-to-version-nuget-packages\u002F","\u002Fimages\u002Fhero\u002FSemantic-Versioning-1600x900.png",{"title":955,"permalink":956,"heroImage":696,"timeToRead":745},"The Fastest NuGet Package Ever Published (Probably)","\u002Fthe-fastest-nuget-package-ever-published-probably\u002F",{"title":958,"permalink":959,"heroImage":643,"timeToRead":620},"Automating .NET Security Updates","\u002Fautomating-dotnet-security-updates\u002F",{"title":961,"permalink":962,"heroImage":963,"timeToRead":964},"Deep Dive into Open Telemetry for .NET","\u002Fdeep-dive-into-open-telemetry-for-net\u002F","\u002Fimages\u002Fhero\u002FOpen-Telemetry-1600x900.png",10,{"title":966,"permalink":967,"heroImage":963,"timeToRead":620},"Open Telemetry for ASP.NET Core","\u002Fopen-telemetry-for-asp-net-core\u002F",{"title":969,"permalink":970,"heroImage":963,"timeToRead":620},"Exporting Open Telemetry Data to Jaeger","\u002Fexporting-open-telemetry-data-to-jaeger\u002F",{"title":972,"permalink":973,"heroImage":974,"timeToRead":620},"A System for Grouping & Sorting CSS Properties","\u002Fsystem-for-grouping-and-sorting-css-properties\u002F","\u002Fimages\u002Fhero\u002FCSS-1600x900.png",{"title":976,"permalink":977,"heroImage":974,"timeToRead":745},"CSS General Rules of Thumb","\u002Fcss-general-rules-of-thumb\u002F",{"title":979,"permalink":980,"heroImage":981,"timeToRead":652},"Web Component Custom Element Gotchas","\u002Fweb-component-custom-element-gotchas\u002F","\u002Fimages\u002Fhero\u002FWeb-Components-1600x900.png",{"title":983,"permalink":984,"heroImage":985,"timeToRead":365},"Code Coverage & Frontend Testing","\u002Fcode-coverage-and-frontend-testing\u002F","\u002Fimages\u002Fhero\u002FJest-Cypress-1600x900.png",{"title":987,"permalink":988,"heroImage":731,"timeToRead":527},".NET Boxed Visual Studio Integration","\u002Fdotnet-boxed-visual-studio-integration\u002F",{"title":990,"permalink":991,"heroImage":992,"timeToRead":620},"The Windows Package Manager","\u002Fwindows-package-manager\u002F","\u002Fimages\u002Fhero\u002FWinget-1600x900.png",{"title":994,"permalink":995,"heroImage":643,"timeToRead":620},"The Problem with C# 10 Implicit Usings","\u002Fthe-problem-with-csharp-10-implicit-usings\u002F",{"title":997,"permalink":998,"heroImage":963,"timeToRead":652},"Optimally Configuring Open Telemetry Tracing for ASP.NET Core","\u002Foptimally-configuring-open-telemetry-tracing-for-asp-net-core\u002F",{"title":1000,"permalink":1001,"heroImage":1002,"timeToRead":365},"Live Streaming .NET","\u002Flive-streaming-dotnet\u002F","\u002Fimages\u002Fhero\u002FMy-YouTube-1920x1080.jpg",{"title":1004,"permalink":1005,"heroImage":1006,"timeToRead":365},"I Was Awarded as an Open UK Honouree","\u002Fopen-uk-honouree\u002F","\u002Fimages\u002Fhero\u002FOpen-UK-Honours-1366x768.jpg",{"title":1008,"permalink":1009,"heroImage":1010,"timeToRead":652},"On the Etiquette of Pull Request Comments","\u002Fon-the-etiquette-of-pull-request-comments\u002F","\u002Fimages\u002Fhero\u002FPrecious-PR-1600x900.jpg",{"title":1012,"permalink":1013,"heroImage":1014,"timeToRead":527},"AI Gone Rogue","\u002Fai-gone-rogue\u002F","\u002Fimages\u002Fhero\u002FHAL-9000-Prop-1600x900.png",{"left":4,"top":4,"width":24,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1016},"\u003Cpath fill=\"currentColor\" d=\"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.55 96.55 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.3 96.3 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96s-42.981-96-96-96\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1018},"\u003Cpath fill=\"currentColor\" d=\"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48c27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1020},"\u003Cpath fill=\"currentColor\" d=\"M459.37 151.716c.325 4.548.325 9.097.325 13.645c0 138.72-105.583 298.558-298.558 298.558c-59.452 0-114.68-17.219-161.137-47.106c8.447.974 16.568 1.299 25.34 1.299c49.055 0 94.213-16.568 130.274-44.832c-46.132-.975-84.792-31.188-98.112-72.772c6.498.974 12.995 1.624 19.818 1.624c9.421 0 18.843-1.3 27.614-3.573c-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319c-28.264-18.843-46.781-51.005-46.781-87.391c0-19.492 5.197-37.36 14.294-52.954c51.655 63.675 129.3 105.258 216.365 109.807c-1.624-7.797-2.599-15.918-2.599-24.04c0-57.828 46.782-104.934 104.934-104.934c30.213 0 57.502 12.67 76.67 33.137c23.715-4.548 46.456-13.32 66.599-25.34c-7.798 24.366-24.366 44.833-46.132 57.827c21.117-2.273 41.584-8.122 60.426-16.243c-14.292 20.791-32.161 39.308-52.628 54.253\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1022},"\u003Cpath fill=\"currentColor\" d=\"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6c0-13.8 11.1-24.9 24.9-24.9c13.6 0 24.6 11.1 24.6 24.9c0 13.6-11.1 24.6-24.6 24.6M504 256c0 137-111 248-248 248S8 393 8 256S119 8 256 8s248 111 248 248m-132.3-41.2c-9.4 0-17.7 3.9-23.8 10c-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3l55.4 12.5c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8c-6.1-6.4-14.7-10.2-24.1-10.2c-34.9 0-46.3 46.9-14.4 62.8c-1.1 5-1.7 10.2-1.7 15.5c0 52.6 59.2 95.2 132 95.2c73.1 0 132.3-42.6 132.3-95.2c0-5.3-.6-10.8-1.9-15.8c31.3-16 19.8-62.5-14.9-62.5M302.8 331c-18.2 18.2-76.1 17.9-93.6 0c-2.2-2.2-6.1-2.2-8.3 0c-2.5 2.5-2.5 6.4 0 8.6c22.8 22.8 87.3 22.8 110.2 0c2.5-2.2 2.5-6.1 0-8.6c-2.2-2.2-6.1-2.2-8.3 0m7.7-75c-13.6 0-24.6 11.1-24.6 24.9c0 13.6 11.1 24.6 24.6 24.6c13.8 0 24.9-11.1 24.9-24.6c0-13.8-11-24.9-24.9-24.9\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1024},"\u003Cpath fill=\"currentColor\" d=\"M512 194.8c0 101.3-82.4 183.8-183.8 183.8c-101.7 0-184.4-82.4-184.4-183.8c0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8M0 501.5h90v-491H0z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1026},"\u003Cpath fill=\"currentColor\" d=\"m20.216 6.415l-.132-.666c-.119-.598-.388-1.163-1.001-1.379c-.197-.069-.42-.098-.57-.241c-.152-.143-.196-.366-.231-.572c-.065-.378-.125-.756-.192-1.133c-.057-.325-.102-.69-.25-.987c-.195-.4-.597-.634-.996-.788a6 6 0 0 0-.626-.194c-1-.263-2.05-.36-3.077-.416a26 26 0 0 0-3.7.062c-.915.083-1.88.184-2.75.5c-.318.116-.646.256-.888.501c-.297.302-.393.77-.177 1.146c.154.267.415.456.692.58c.36.162.737.284 1.123.366c1.075.238 2.189.331 3.287.37q1.829.074 3.65-.118q.449-.05.896-.119c.352-.054.578-.513.474-.834c-.124-.383-.457-.531-.834-.473c-.466.074-.96.108-1.382.146q-1.767.12-3.536.006a22 22 0 0 1-1.157-.107c-.086-.01-.18-.025-.258-.036q-.364-.055-.724-.13c-.111-.027-.111-.185 0-.212h.005q.416-.09.838-.147h.002c.131-.009.263-.032.394-.048a25 25 0 0 1 3.426-.12q1.011.029 2.017.144l.228.031q.4.06.798.145c.392.085.895.113 1.07.542c.055.137.08.288.111.431l.319 1.484a.237.237 0 0 1-.199.284h-.003l-.112.015a37 37 0 0 1-4.743.295a37 37 0 0 1-4.699-.304c-.14-.017-.293-.042-.417-.06c-.326-.048-.649-.108-.973-.161c-.393-.065-.768-.032-1.123.161c-.29.16-.527.404-.675.701c-.154.316-.199.66-.267 1c-.069.34-.176.707-.135 1.056c.087.753.613 1.365 1.37 1.502a39.7 39.7 0 0 0 11.343.376a.483.483 0 0 1 .535.53l-.071.697l-1.018 9.907c-.041.41-.047.832-.125 1.237c-.122.637-.553 1.028-1.182 1.171q-.868.197-1.756.205c-.656.004-1.31-.025-1.966-.022c-.699.004-1.556-.06-2.095-.58c-.475-.458-.54-1.174-.605-1.793l-.731-7.013l-.322-3.094c-.037-.351-.286-.695-.678-.678c-.336.015-.718.3-.678.679l.228 2.185l.949 9.112c.147 1.344 1.174 2.068 2.446 2.272c.742.12 1.503.144 2.257.156c.966.016 1.942.053 2.892-.122c1.408-.258 2.465-1.198 2.616-2.657l1.024-9.995l.215-2.087a.48.48 0 0 1 .39-.426c.402-.078.787-.212 1.074-.518c.455-.488.546-1.124.385-1.766zm-1.478.772c-.145.137-.363.201-.578.233c-2.416.359-4.866.54-7.308.46c-1.748-.06-3.477-.254-5.207-.498c-.17-.024-.353-.055-.47-.18c-.22-.236-.111-.71-.054-.995c.052-.26.152-.609.463-.646c.484-.057 1.046.148 1.526.22q.865.132 1.737.212c2.48.226 5.002.19 7.472-.14q.675-.09 1.345-.21c.399-.072.84-.206 1.08.206c.166.281.188.657.162.974a.54.54 0 0 1-.169.364zm-6.159 3.9c-.862.37-1.84.788-3.109.788a6 6 0 0 1-1.569-.217l.877 9.004c.065.78.717 1.38 1.5 1.38c0 0 1.243.065 1.658.065c.447 0 1.786-.065 1.786-.065c.783 0 1.434-.6 1.499-1.38l.94-9.95a4 4 0 0 0-1.322-.238c-.826 0-1.491.284-2.26.613\"\u002F>",{"left":4,"top":4,"width":27,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1028},"\u003Cpath fill=\"currentColor\" d=\"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134c-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9c152.3 0 165.1-3.7 204 11.4c60.1 23.3 65.6 79.5 44 140.3c-21.5 62.6-72.5 89.5-140.1 90.3c-43.4.7-69.5-7-75.3 24.2M357.1 152c-1.8-1.3-2.5-1.8-3 1.3c-2 11.4-5.1 22.5-8.8 33.6c-39.9 113.8-150.5 103.9-204.5 103.9c-6.1 0-10.1 3.3-10.9 9.4c-22.6 140.4-27.1 169.7-27.1 169.7c-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9c.7-5.4-1.1 6.1 14.4-91.3c4.6-22 14.3-19.7 29.3-19.7c71 0 126.4-28.8 142.9-112.3c6.5-34.8 4.6-71.4-23.8-92.6\"\u002F>",{"left":4,"top":4,"width":16,"height":16,"rotate":4,"vFlip":6,"hFlip":6,"body":1030},"\u003Cpath fill=\"currentColor\" d=\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8m0 448c-110.532 0-200-89.431-200-200c0-110.495 89.472-200 200-200c110.491 0 200 89.471 200 200c0 110.53-89.431 200-200 200m107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516c17.561-9.845 28.324-16.541 28.324-29.579c0-17.246-21.999-28.693-39.784-28.693c-23.189 0-33.894 10.977-48.942 29.969c-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8M298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42s18.841-42 42-42s42 18.841 42 42\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1032},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M19 12H5m7 7l-7-7l7-7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":1034},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",1793785995458]