Wątek przeniesiony 2023-04-03 12:32 z Inżynieria oprogramowania przez Adam Boduch.

Różnice w plikach o takiej samej treści

0

Witam,

Pracuje na nowym projekcie. Sciagnalem go kilkad ni temu z gitlab. Caly czas git pokazuje mi, ze sa jakies zmiany w kilku plikach, ale zmian zadnych nie ma. Chyba sa to jakies zmainy na poziomie binary. Wie ktos w czym jest rzecz? Jak sie tego pozbyc?

0

zmiany w jakim sensie? Git diff nie jest czysty? Może to jakieś entery czy inne whitespace'y, czasem edytory same robią jakieś zmiany tego typu w plikach przy zapisie.

0

Tak, git diff oraz git status wywala ponad 30 plikow, ze niby maja zmiany. a nic nie widze.

0

Probowalem ustawic git config --global core.autocrlf false i nastepnie sklonowac repo na dysk. Bez zmian. Nie pomaga. Nie kumam.

0

a puściłeś commita z tymi zmianami? Mi czasem pokazuje że zmiana względem znaku końca linii ale po zrobieniu commita wszystko jest ok a push robi fail bo na tym poziomie te zmiany to już nie zmiany i commit nie istnieje.

0

Tak, puscilem commit. Ale jak przeloczylem sie do master albo jakiejkolwiek innej gelezi to znowy wyskakiwaly te binarne zmiany. Uzywam winodws/wsl2. I nigdy wczesniej nie mialem takiego problemu. Do tego uzywam tez SourceTree.

0

A nie masz problemu ze znakiem nowej linii? Wtedy nie będziesz widział właśnie różnic ale pliki się będą różnić według Gita. Zobacz czy ustawiasz CRLF czy LF w IDE

0

Generalanie co to jest te CRLF i LF? Nie mozna zmienic tego jakos recznie? PHPStorm raczej tego nie zmiania, git tez ustawilem na LF. Moze SourceTree jakos zmienia ale tez nie powinien, bo uzywa Git, ktory juz zostal ustawiony na LF. Nie wiem, probowalem juz sporo opcji i tak i tak nie dziala. Dalej widze te pliki ze zmianami.

0

W .gitconfig poustawialem sobie tak jak ponizej. Dalej nie kumam o co chodzi, czemu mam te 32 pliki zmian.

[core]
	text = auto 
	autocrlf = false
	eol = lf
	safecrlf = false
0

Na dole po prawej stronie masz info jaki jest separator.
W IDE można ustawiać to per plik
https://www.jetbrains.com/help/idea/configuring-line-endings-and-line-separators.html
Ja bym szukał czegoś w kierunku. Zoabcz czy np. na problematycznych plikach na dole na belce nie widać innego ustawienia separatora.

0

Z tego co rozumiem to chyba tak idzie:

CRLF= \r\n | Windows
LF = \n | Linux

W PHPStorm na tych plikach widze wlasnie LF oraz UTF-8.

Mocno sie zastanawiam sie czy to nie wina SourceTree. Git oraz PHPStorm wydaja sie ok.

0

Ustawilem LFw PHPStorm recznie, tak jak podales @jurek1980. Na wszelki wypadek. Do tego GIt tez jest dobrze ustawiony. To musi byc Source.

2

Jeśli git pokazuje Ci zmiany w plikach, to na 100% te pliki się w jakiś sposób różnią.

Najbardziej popularne przyczyny konfuzji, to takie kiedy treść jest taka sama. Takie przykłady to:

  • Inne końcówki linii (np LF vs CRLF)
  • Inne kodowanie (np UTF-8 zamiast jednego z rodziny ISO-*)
  • Inne uprawnienia (np r-- zamiast rw-)
poniatowski napisał(a):

Wie ktos w czym jest rzecz? Jak sie tego pozbyc?

Jeśli chcesz po prostu cofnąć zmiany to zrób git reset --hard HEAD.

0

Próbowałem używać ST ale nie dałem rady. Spróbuj może GitExtension - używam od paru lat i nie mam problemu ani na małych ani na dużych projektach.
CO do problemu to zobacz czy to Ci pokaże różnice w końcach linii w ST https://stackoverflow.com/questions/30603417/force-sourcetree-ignore-line-endings-in-git-files

0

A git przypadkiem sam nie zamienia tych końców linii?

Tu coś piszą o tym https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings

0

Faktycznie, te pliki maja chyba inne uprawnia @Riddle. Widze, ze kazdy w konsoli w Ubuntu jest na zielono i ma np -rwxrwxr-x, gdzie inne np -rw-rw-r--. Ale ja nic nie zmienialem. Sklonowalem repo i dalem docker compose up. To musi byc cos nie tak w ustawieniach projektu dockera.

1
poniatowski napisał(a):

Faktycznie, te pliki maja chyba inne uprawnia @Riddle. Widze, ze kazdy w konsoli w Ubuntu jest na zielono i ma np -rwxrwxr-x, gdzie inne np -rw-rw-r--. Ale ja nic nie zmienialem. Sklonowalem repo i dalem docker compose up. To musi byc cos nie tak w ustawieniach projektu dockera.

Masz trzy wyjścia:

  • Zcommituj pliki z nowymi uprawnieniami
  • Cofnij swoje lokalne zmiany
  • Ustaw gita żeby ignorował permissiony
0

Wydaje mi sie, ze powalcze z Ustaw gita żeby ignorował permissiony. Skad to wszystko wiesz @Riddle?

0

Wyglada na to, ze git config core.fileMode false zrobilo robote.

Dziekuje @Riddle. Jestes wielki. Moj Guru od dzis. Napisz co mam zrobic, zeby stac sie tak wileki jak Ty?

edit

Opcja z core.fileMode moze okazac sie troche niebezpieczna. Takze trzeba uwazac.

1 użytkowników online, w tym zalogowanych: 0, gości: 1