windows - Kan nogen forklare hvorfor 'git status' viser filer som modfied, når de kører under en del på Linux?

Indlæg af Hanne Mølgaard Plasc

Problem



Filerne er hostet på en Windows-maskine ,, og jeg spekulerede på, om jeg kold bruger min Linux-boks til at styre Git, så jeg monterede delingen. Og så ser jeg, at når du laver git-status, viser alle filerne som ændret, og når du forsøger at skubbe fra denne del vil det ikke acceptere min nøgle.


Billedet er fra samme øjebliksbillede, samme mappe på samme tid.


Linux ------------------------------------------------- ------- winGitBash


Indtast billedbeskrivelse her

Bedste reference


Dette blogindlæg forklarer det ganske pænt. Dybest set er det godt at sætte: [12]



  git config - global core.autocrlf true


Andre referencer 1


Har du tjekket dine crlf indstillinger på de to maskiner? Man kan genskabe filerne som CRLF (Windows), mens den anden kun har LF-slutninger. Det ville være tilstrækkeligt for den 'modificerede' status.


Glem ikke dine personlige indstillinger samt repoindstillingerne.

Andre referencer 2


Hvordan git opfører sig på newline afhænger af flere konfigurationer:



  • core.eol

  • core.autocrlf

  • .gitattributes file



For dig situation, tror jeg, at nedenunder kan være årsagen.



  • I din git-database (.git) gemmes alle tekstfiler med newline LF.

  • Din lokale repo er klonet under Windows, under checkout git konverterer
    LF til CRLF.

  • Når du laver git status under Linux/cygwin, da 'cygwin git' mener at det virker
    under '* inux' -miljøet, så den git mener, at den lokale repo skal
    Afkryds tekstfiler med LF. Når den faktisk finder CRLF, mener den, at CRLF
    ændres fra LF, så git-rapporter de ændres.



For at bekræfte dette (ikke rette dette) kan du gøre:


# under linux 

# save your change
git stash

# delete working directory
git rm --cached -r .

# re-checkout
git reset --hard


Og kør git status igen, vil du/skal se output rapporterne ingen ændring.


Referencer:


Husk slutningen af ​​din linje [13]