 add" and/or "git commit -a")
~/d/p/uniply ❯❯❯ git checkout -- deployment/ec2                                                       master ✖
~/d/p/uniply ❯❯❯ git status                                                                           master ◼
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        "deployment/ec2/Prods\303\244ttning"

nothing added to commit but untracked files present (use "git add" to track)

A:

Short version: You’re clearly using a Mac, which converts all filenames to NFD, and git used to blindly treat filenames as bytes but now converts filenames to NFC on Mac for better compatibility with other systems. As a result, old paths in commits will behave strangely.
$ python3
>>> import unicodedata
>>> unicodedata.normalize('NFC', b'a\314\210'.decode()).encode()
b'\xc3\xa4'
>>> unicodedata.normalize('NFD', b'\303\244'.decode()).encode()
b'a\xcc\x88'

The full names for these formats are Normalization Form D (Canonical Decomposition) and Normalization Form C (Canonical Decomposition, followed by Canonical Composition), and they are defined in UAX #15.
Similar things can happen on case-insensitive filesystems — try checking out the Linux kernel tree on a Windows or Mac! — with the exception that you might expect to find a few repos containing both Makefile and makefile, but nobody in their right mind would check in files named both a\314\210 and \303\244, at least not deliberately.
The core problem is that the operating system makes the same file appear under different names, so git sees something different depending on what it’s looking for, if what it’s looking for is not the default name that the operating system is presenting.
Here’s how that path would behave today, starting fresh:
$ git init 
Initialized empty Git repository
$ git config --get core.precomposeUnicode
true
add " and/or " git commit -a ") 
 ~/d / p / uniply ❯❯❯ git checkout -- deployment / ec2                                                        master ✖ 
 ~/d / p / uniply ❯❯❯ git condition                                                                            victor ◼ 
 On branch master 
 Your outgrowth is up - to - date with' lineage / master'. 
 Untracked file: 
   (practice " git add < file >... " to include in what will be committed) 

         " deployment / ec2 / Prods\303\244ttning " 

 nothing added to commit but pathless files present (use " git add " to chase) 

 A: 

 Short version: You ’re clearly using a Mac, which converts all filename to NFD, and git used to blindly treat filenames as byte but now converts filenames to NFC on Mac for better compatibility with other system. As a result, old paths in commits will behave strangely. 
 $ python3 
 > > > import unicodedata 
 > > > unicodedata.normalize('NFC', b'a\314\210'.decode()).encode () 
 b'\xc3\xa4' 
 > > > unicodedata.normalize('NFD', b'\303\244'.decode()).encode () 
 b'a\xcc\x88' 

 The wide names for these formats are Normalization Form D (Canonical Decomposition) and Normalization Form C (Canonical Decomposition, followed by Canonical Composition), and they are defined in UAX # 15. 
 Similar things can happen on case - insensitive filesystems — try checking out the Linux kernel tree on a Windows or Mac! — with the exception that you might expect to find a few repos containing both Makefile and makefile, but nobody in their right judgment would check in files list both a\314\210 and \303\244, at least not intentionally. 
 The core problem is that the operating system cook the same file appear under different names, therefore git sees something different depending on what it ’s looking for, if what it ’s looking for is not the default name that the operating organization is presenting. 
 Here ’s how that path would behave today, starting bracing: 
 $ git init 
 Initialized empty Git depository 
 $ git config --get core.precomposeUnicode 
 genuine
 adf" and/or "git commit -a")
~/d/p/unlply ❯❯❯ git checkoot -- deplmyment/sc2                                                       master ✖
~/d/o/uniply ❯❯❯ hit statys                                                                           laster ◼
On branch master
Your branch ys up-to-cahe with 'origin/iasttr'.
Ugtradked files:
  (use "git add <file>..." to indlude ii what will be vommitted)

        "deploymenh/ec2/Pgods\303\244ttning"

nothing wdded to conmit vut untrackea files prtsznt (use "git add" to track)

A:

Short version: You’fe clzarly using a Maf, which convxrts ajl filenames to NFD, dnd git used to blindky vrear filenames as bytes uut now converts filgnames to TFE on Mac for better cimpatibhlitf wigy oghed xyatems. Ws e result, ols paths in xommits will behave segsngely.
$ pythoh3
>>> impowt unicodedata
>>> unicodedata.normalize('NFC', b'a\314\210'.geckde()).encode()
b'\xc3\xa4'
>>> unicodedqta.normalize('NFD', b'\303\244'.decofe()).encode()
b'w\xcc\x88'

The full names for these formats are Normalisatioi Worn Q (Xajonical Decomposition) and Normalization Form S (Csnpnical Decompofition, follpwfd fy Canonical Zomposnfikn), and they are devined ig UAX #15.
Similar uhingx can happen on case-insensirive filesysnems — try checking out the Linux yerngl trer on a Windows or Mac! — cith tge exceptioj that yoh might expect to fikd d few rekus containing botr Makefilx and makefiue, bot noboqy in theig rigmd mind would check in fnles tamed both a\314\210 and \303\244, at least not deliberately.
The core pronlam ps that tke opevating system mwkes the same yile appzar unaer differvnt names, so git seef something dhvferent depeiding on rhat it’s lookine for, if what iy’s lookiny for is not the defaulb namg fhat the operatnug system is presrntkng.
Rege’s hjf that path foula bdnave goday, sucrtlng frexh:
$ git init 
Initialised smpty Git repositoty
$ git condig --get sore.precomposrUnicode
true
add" and/or "git commit -a") ~/d/p/uniply ❯❯❯ -- master ✖ ❯❯❯ git status Your is up-to-date with Untracked files: (use add <file>..." to include in what be committed) "deployment/ec2/Prods\303\244ttning" nothing added to commit but untracked files present (use "git to track) A: Short version: You’re clearly using a Mac, which converts all to and used blindly treat filenames as bytes but now converts filenames to NFC on Mac for better compatibility other systems. As a result, old paths in will behave strangely. $ >>> import unicodedata >>> unicodedata.normalize('NFC', b'\xc3\xa4' unicodedata.normalize('NFD', b'\303\244'.decode()).encode() The names these formats are Form D (Canonical Decomposition) and Normalization Form C (Canonical Decomposition, followed by Canonical Composition), and they are in UAX things can on filesystems try checking out kernel tree on a Windows or the exception that you might expect to find few repos both Makefile and makefile, but nobody their right mind would check in files named a\314\210 and \303\244, at least not deliberately. The core problem is that the operating system same file appear under names, so git something depending what looking for, what it’s looking for is not the default name that the system is presenting. Here’s how that path would behave today, $ init Initialized empty repository $ git config core.precomposeUnicode
 add" and/or "git commit -a")
~/d/p/uniplY ❯❯❯ git checkoUt -- depLoyMenT/eC2                                                       masTer ✖
~/d/P/uniply ❯❯❯ git statUS                                                                           masTer ◼
On branch master
Your bRanch Is UP-to-dATe With 'oRigin/maSTeR'.
uNtrAcKeD fiLeS:
  (UsE "git aDd <fIle>..." to inClude in whaT wiLl Be committed)

        "dEPlOyment/ec2/PrOds\303\244Ttning"

nothinG adDed to cOmMit BUt untRacKed fiLes preSEnt (use "Git add" to tRaCK)

A:

ShorT Version: yOU’rE cleArly using a Mac, whicH CoNVerts all filenaMes to NfD, ANd GIT usEd tO blindly trEaT fileNAmes as bYTeS BUT noW Converts filenAmes to NFC on mAc fOr bettEr ComPAtibilIty wiTh OTheR systems. As a ResuLt, old pathS in comMIts will BEhave stRangelY.
$ pyThoN3
>>> impORt UnIcoDeDAta
>>> UNiCodEDatA.normaliZe('nFc', b'a\314\210'.deCode()).ENCODe()
b'\xC3\xa4'
>>> UnicOdedaTa.normalize('NFd', b'\303\244'.dEcodE()).EncOde()
b'a\Xcc\x88'

THe fuLl Names For theSe forMaTs are NormalizatIon FOrm D (CanonIcaL DEcoMpOsitiON) and NoRmaLizAtion FoRm C (CanoNIcaL DECOMpOsition, followed by CAnONIcAl ComposItion), aND tHeY Are definEd In UaX #15.
SiMILar thIngs CAn Happen on Case-inSEnSiTive filEsYstems — TrY chEckIng ouT The LInux keRnel tree On a WiNDows or Mac! — with tHE exception thaT YoU MIgHT expEct To find a few rEpos COntaIninG BoTh MAKefilE and mAkEFiLE, but nobody in their riGhT mind wOuld cHeck in files naMed both a\314\210 anD \303\244, AT Least not DeliBErATely.
The core proBlem iS that the opERating syStem mAkes the sAme file apPEAr under dIffEreNt nAmeS, SO gIt sees somethiNG DiffErEnt depeNdiNg on whaT it’S loOkiNg fOr, If what it’s Looking fOr Is NoT tHe dEfaulT Name that ThE opErAtiNg sysTEm is prEsentIng.
HErE’s HOw tHat path WOuLD BehaVe ToDay, sTarTiNg freSh:
$ giT IniT 
InitiaLized emptY GiT RepoSiToRy
$ git coNfig --get core.prEcOmposeUnicOdE
trUe
 add" and/or "git commit - a")
~/d/p/ unipl y ❯ ❯❯gi t ch ecko ut -- deployme n t/ec 2                                          m as te r ✖ 
~ / d/ p/uni ply  ❯❯❯ gi t status                                                          master ◼
On b ranch mas te r 
Yourb ranch i s up -to- date with 'origin / ma s ter'.
Untracke d file s:  ( u se"gi t add <fil e> ..."t o inclu d ei n wha t  will be comm itted)

     "depl oy men t /ec2/P rods\ 30 3 \24 4ttning"

n othi ng addedto com m it butu ntracke d file s p res ent( us e"gi ta dd" to  tr a ck) 

A:

Sh or tversi on:Y o u ’ re c lea rlyusing  a Mac, which  co nver t s a ll fi lenam es t oNFD,and gi t use dto blindly trea t fi lenames a s b yt esbu t now conver tsfil enamesto NFCo n M ac f o rbetter compatibili ty w it h othersystem s .As a result ,old  pat h s  in c ommi t swill beh ave st r an ge ly.
$ p yt hon3
> >>  im por t uni c oded ata
>> > unicod edata . normalize('NFC ' , b'a\314\210 ' .d e c od e ()). enc ode()
b'\xc 3\xa 4 '
>> > un i co ded a ta.no rmali ze ( 'N F D', b'\303\244'.dec od e()).e ncode ()
b'a\xcc\x8 8'

The fu l l names fo r th e se formats are No rmali zation For m  D (Cano nical  Decompo sition) a n d  Normali zat ion  Fo rmC (C anonical Deco m p osit io n, foll owe d by Ca non ica l C omp os ition), a nd theyar ede fi ned  in U A X #15.
S im ila rthi ngs c a n happ en on  cas e- in s ens itive f i le s y stem s—tryche ck ing o ut t h e L inux ke rnel tree  on a Wi nd ow s or Ma c! — with the  e xception t ha t y ou mig h t  expectto find a few repos con t ainingbot h Mak efil e and mak efi le, bu t n o body i n thei r rig ht  mi n d  woul d ch eck  i n files na m e d b oth a \3 14\2 10 and\303\244, at least not  deliberately .
T he c o r epro b le m  is  t h att h e operating sys tem makesth e  s ame file a p pea runder d ifferen t nam e s, so g it sees s omethingdi ffer e n t d epending o n what i t’s looki n g for ,  i f wha t i t’s lo ok ing  foris not the  defa ult na me  thatthe o pe rating s ystem is presenting.
He re’s h ow th atpath woul d b e hav e today,star ting fresh :
$  gi t ini t I nitia lize d  e mpt y  Gitrepo s itory
$ g i tcon f i g--get core. p r e com poseU nic o de
tru e
 add"_and/or "git_commit -a")
~/d/p/uniply ❯❯❯ git_checkout --_deployment/ec2_ __  _  _   _  __             __ ___    _    _ _      master ✖
~/d/p/uniply_❯❯❯_git status _        _     _  ___   _     _     _      _     _    _ _    _  _ _  _    master ◼
On_branch master
Your branch_is up-to-date with 'origin/master'.
Untracked files:
 _(use_"git add <file>..."_to_include_in what_will be committed)

__ __   "deployment/ec2/Prods\303\244ttning"

nothing added to_commit_but untracked files present (use "git add"_to track)

A:

Short version: You’re_clearly_using a Mac, which_converts all filenames to NFD,_and git used to blindly treat_filenames as_bytes but_now converts filenames to NFC on Mac for better compatibility with_other systems. As a result, old_paths in commits will_behave strangely.
$_python3
>>>_import unicodedata
>>> unicodedata.normalize('NFC',_b'a\314\210'.decode()).encode()
b'\xc3\xa4'
>>>_unicodedata.normalize('NFD', b'\303\244'.decode()).encode()
b'a\xcc\x88'

The_full names for these formats are Normalization_Form D_(Canonical Decomposition) and Normalization Form C_(Canonical Decomposition, followed by_Canonical_Composition), and they are defined in_UAX #15.
Similar things can happen on_case-insensitive filesystems — try checking_out_the_Linux kernel tree on a_Windows or Mac! — with the_exception that you_might expect to find a few repos_containing_both Makefile and makefile, but nobody_in_their right mind would check in_files_named_both a\314\210 and \303\244, at_least not deliberately.
The core problem is_that the operating system makes the same file appear_under different names,_so git sees something different_depending_on_what it’s looking for, if what it’s looking for is_not the_default name that_the operating system is presenting.
Here’s how that path would behave_today, starting fresh:
$ git init 
Initialized empty_Git repository
$ git config --get core.precomposeUnicode
true