Git mi sta mostrando un intero file è cambiato, quando non riesco a capire le modifiche. Questo è git Cygwin, ma succede anche in msysgitGit che mostra file identici come modificati
$ git --version
git version 2.1.1
$ diff <(git show HEAD:File.cs) <(cat File.cs)
// Shows no differences
$ diff <(git show HEAD:File.cs | xxd) <(xxd File.cs)
// Shows no differences
$ git diff
// shows the entire file has changed
$ git hash-object <(git show HEAD:File.cs)
7b3762473342a5b040835bfef9f6b45c109ba48b
$ git hash-object <(cat File.cs)
7b3762473342a5b040835bfef9f6b45c109ba48b
$ git hash-object File.cs
7b3762473342a5b040835bfef9f6b45c109ba48b
ho
$ git config --get core.fileMode
false
e
$ git config --get core.autocrlf
true
Io veramente ho idea di cosa sta succedendo, cosa vuole che siano la lo stesso, ma git vuole creare un commit dicendo che l'intero contenuto è stato cancellato e ricreato. Qualcuno che conosce l'idraulica migliore ha un suggerimento? Tutto ciò a cui riesco a pensare è che Git Show sta rimuovendo/normalizzando le lineline dispari.
UPDATE:
sono abbastanza sicuro che suo accadere perché il processo di sviluppo è così. Checkout da git, rsync a dev machine, sviluppo, rsync back. Credo che rsync stia scherzando con le terminazioni di linea. È strano che i git non riportino i finali di linea, e sembra essere davvero confuso su cosa diavolo sta succedendo. Anche se differire la rappresentazione binaria dei file sembra essere identico.
UPDATE 2:
Quindi questo è super fastidioso, e mi sento come ho inciampato su un bug in git.
Per esempio
$ git gc
$ git checkout -- .
$ git clean -fd
$ git status
> shows a heap of modified files
Sono abbastanza sicuro che dovrebbe mostrare nessun cambiamento, non importa dove la sua corsa, ma ho una lista delle 20 cose strane :(
Vedete lo stesso con 'git config --get core.autocrlf false'? – VonC
Sì, la stessa cosa. Mi sono persino assicurato di ripubblicare tutto con 'git rm --cached. -r' e 'git reset --hard'. Poi l'ho eseguito attraverso gli strumenti di sviluppo, andare a 'git status' e ottenere che l'intero file sia" cambiato ". Sono disposto ad accettare che il mio processo stia cambiando i file (immagino i finali di linea), ma voglio davvero che mi dica come. Mi sta confondendo a non finire, specialmente considerando che l'output dell'oggetto hash è lo stesso. –
Quale sistema operativo e quale versione git stai usando? – VonC