Aceasta este comanda git-diff-files care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
git-diff-files - Compară fișierele din arborele de lucru și din index
REZUMAT
merge fisiere-dif [-q] [-0|-1|-2|-3|-c|--cc] [ ] [ ...]
DESCRIERE
Compară fișierele din arborele de lucru și din index. Când sunt specificate căile, se compară
numai acele căi numite. În caz contrar, toate intrările din index sunt comparate. Formatul de ieșire
este la fel ca pentru merge dif-index și merge arbore-dif.
OPŢIUNI
-p, -u, --patch
Generați patch (vezi secțiunea despre generarea patch-urilor).
-s, --no-patch
Suprimați ieșirea dif. Util pentru comenzi precum git show care arată patch-ul de
implicit sau pentru a anula efectul --patch.
-U , --unificat=
Generați diferențe cu linii de context în loc de cele trei obișnuite. Implică -p.
--brut
Generați diferența în format brut. Aceasta este valoarea implicită.
--patch-cu-raw
Sinonim pentru -p --raw.
--minim
Petreceți timp suplimentar pentru a vă asigura că se produce cea mai mică diferență posibilă.
--răbdare
Generați o diferență folosind algoritmul „diferă răbdare”.
--histograma
Generați o diferență utilizând algoritmul „diferent histogramei”.
--diff-algorithm={răbdare|minimal|histogramă|myers}
Alegeți un algoritm de diferență. Variantele sunt următoarele:
implicit, myers
Algoritmul de bază greedy diff. În prezent, acesta este implicit.
minim
Petreceți timp suplimentar pentru a vă asigura că se produce cea mai mică diferență posibilă.
răbdare
Utilizați algoritmul „diferă răbdare” atunci când generați patch-uri.
histograma
Acest algoritm extinde algoritmul de răbdare pentru a „suporta obișnuința cu ocurență redusă
elemente”.
De exemplu, dacă ați configurat variabila diff.algorithm la o valoare care nu este implicită și
doriți să utilizați cea implicită, atunci trebuie să utilizați opțiunea --diff-algorithm=default.
--stat[= [, [, ]]]
Generați un diffstat. În mod implicit, va fi folosit atât spațiu cât este necesar pentru
partea de nume de fișier, iar restul pentru partea de grafic. Lățimea maximă este implicită la terminal
sau 80 de coloane dacă nu este conectat la un terminal și poate fi suprascris de .
Lățimea părții nume de fișier poate fi limitată prin acordarea unei alte lățime
după o virgulă. Lățimea părții graficului poate fi limitată prin utilizarea
--stat-graph-width= (afectează toate comenzile care generează un grafic statistic) sau prin
setarea diff.statGraphWidth= (nu afectează git format-patch). Dând o
al treilea parametru , puteți limita rezultatul la primul linii, urmate
de... dacă sunt mai multe.
Acești parametri pot fi, de asemenea, setați individual cu --stat-width= ,
--stat-name-width= și --stat-count= .
--numstat
Similar cu --stat, dar arată numărul de linii adăugate și șterse în notație zecimală și
cale fără abreviere, pentru a o face mai prietenoasă cu mașinile. Pentru fișierele binare,
iese doi - în loc să spună 0 0.
--shortstat
Ieșiți numai ultima linie a formatului --stat care conține numărul total de modificări
fișiere, precum și numărul de linii adăugate și șterse.
--dirstat[= ]
Produceți distribuția cantității relative de modificări pentru fiecare subdirector. The
comportamentul lui --dirstat poate fi personalizat prin trecerea unei liste separate prin virgulă
parametrii. Valorile implicite sunt controlate de variabila de configurare diff.dirstat
(A se vedea git-config(1)). Sunt disponibili următorii parametri:
schimbari
Calculați numerele dirstat numărând liniile care au fost eliminate din
sursă sau adăugată la destinație. Aceasta ignoră cantitatea de cod pur
mișcări în cadrul unui fișier. Cu alte cuvinte, rearanjarea liniilor într-un fișier nu este
contate la fel de mult ca și alte modificări. Acesta este comportamentul implicit când nu există niciun parametru
este dată.
linii
Calculați numerele de dirstat făcând analiza obișnuită a diferențelor bazate pe linii și
însumând numărul de linii eliminate/adăugate. (Pentru fișierele binare, numărați bucățile de 64 de octeți
în schimb, deoarece fișierele binare nu au un concept natural de linii). Acesta este un mai mult
comportamentul --dirstat scump decât comportamentul modificări, dar contează
linii rearanjate într-un fișier la fel de mult ca și alte modificări. Rezultatul rezultat este
în concordanță cu ceea ce obțineți de la celelalte opțiuni --*stat.
fișiere
Calculați numerele de dirstat numărând numărul de fișiere modificate. Fiecare s-a schimbat
fișierul contează în mod egal în analiza dirstat. Acesta este cel mai ieftin din punct de vedere computațional
--dirstat comportament, deoarece nu trebuie să se uite deloc la conținutul fișierului.
cumulat
Numărați modificările dintr-un director copil și pentru directorul părinte. Rețineți că
la utilizarea cumulativă, suma procentelor raportate poate depăși 100%. The
comportamentul implicit (non-cumulativ) poate fi specificat cu non-cumulative
parametru.
Un parametru întreg specifică un procent de limită (3% implicit). Directoare
care contribuie mai puțin decât acest procent din modificări nu sunt afișate în rezultat.
Exemplu: Următoarele vor număra fișierele modificate, ignorând în același timp directoarele cu mai puțin
mai mult de 10% din cantitatea totală de fișiere modificate și numărul total de directoare copii acumulate
în directoarele părinte: --dirstat=files,10,cumulative.
--rezumat
Produceți un rezumat condensat al informațiilor extinse din antet, cum ar fi creații, redenumiri
și schimbări de mod.
--patch-with-stat
Sinonim pentru -p --stat.
-z
Când a fost dat --raw, --numstat, --name-only sau --name-status, nu munge
nume de căi și utilizați NUL ca terminatori de câmp de ieșire.
Fără această opțiune, fiecare cale de ieșire va avea TAB, LF, ghilimele duble și
Caracterele bară oblică inversă înlocuite cu \t, \n, \", și, respectiv, \\ și calea
vor fi incluse între ghilimele duble dacă a avut loc vreuna dintre aceste înlocuiri.
--numai-nume
Afișați numai numele fișierelor modificate.
--name-status
Afișați numai numele și starea fișierelor modificate. Consultați descrierea --diff-filter
opțiune despre ce înseamnă literele de stare.
--submodul[= ]
Specificați modul în care sunt afișate diferențele dintre submodule. Când --submodule sau --submodule=log
este dat, cel log este utilizat formatul. Acest format listează commit-urile din interval like git-
submodulul(1) rezumatul face. Omiterea opțiunii --submodule sau specificarea
--submodule=scurt, folosește mic de statura format. Acest format arată doar numele
se comite la începutul și la sfârșitul intervalului. Poate fi ajustat prin intermediul submodulului diff
variabila de configurare.
--culoare[= ]
Afișați diferența colorată. --culoare (adică fără =) este la fel cu --color=always.
poate fi unul dintre întotdeauna, niciodată sau automat.
--fara-culoare
Dezactivați diferența colorată. Este la fel ca --color=never.
--cuvânt-dif[= ]
Afișați un cuvânt diferență, folosind a delimita cuvintele schimbate. În mod implicit, cuvintele sunt
delimitat de spații albe; vezi mai jos --word-diff-regex. The implicit la simplu,
și trebuie să fie unul dintre:
culoare
Evidențiați cuvintele modificate folosind doar culori. Implica --culoare.
simplu
Afișați cuvintele ca [-removed-] și {+added+}. Nu face nicio încercare de a scăpa de
delimitatori dacă apar în intrare, deci ieșirea poate fi ambiguă.
porţelan
Utilizați un format special bazat pe linii destinat consumului de scripturi.
Execuțiile adăugate/eliminate/neschimbate sunt tipărite în formatul obișnuit de diferență unificată,
începând cu un caracter +/-/` ` la începutul liniei și extinzându-se până la
capătul liniei. Liniile noi din intrare sunt reprezentate printr-un tilde ~ pe o linie
Pe cont propriu.
nici unul
Dezactivați din nou diferența de cuvinte.
Rețineți că, în ciuda numelui primului mod, culoarea este folosită pentru a evidenția cele modificate
piese în toate modurile dacă sunt activate.
--word-diff-regex=
Utilizare pentru a decide ce este un cuvânt, în loc să luați în considerare șiruri de non-spații albe
fii un cuvânt. De asemenea, implică --word-diff dacă nu a fost deja activat.
Fiecare meci care nu se suprapune din este considerat un cuvânt. Orice între
aceste potriviri sunt considerate spații albe și ignorate(!) în scopul găsirii
diferențe. Poate doriți să adăugați |[^[:space:]] la expresia dvs. obișnuită de făcut
asigurați-vă că se potrivește cu toate caracterele care nu sunt spații albe. O potrivire care conține o linie nouă este
trunchiat în tăcere(!) la noua linie.
De exemplu, --word-diff-regex=. va trata fiecare personaj ca pe un cuvânt și,
în mod corespunzător, arată diferențele caracter cu caracter.
Regex poate fi, de asemenea, setat printr-un driver de diferență sau o opțiune de configurare, vezi
gitattributes(1) sau git-config(1). Oferându-l în mod explicit, suprascrie orice driver de diferență sau
setare de configurare. Driverele diferite anulează setările de configurare.
--culoare-cuvinte[= ]
Echivalent cu --word-diff=color plus (dacă a fost specificată o expresie regex)
--word-diff-regex= .
--fără-denumiri
Dezactivați detectarea redenumirii, chiar și atunci când fișierul de configurare oferă opțiunea implicită
soare
--Verifica
Avertizați dacă modificările introduc erori de spații albe. Ceea ce sunt considerate erori de spațiu alb este
controlat de configurația core.spațiu alb. În mod implicit, spațiile albe în urmă
(inclusiv linii care constau numai din spații albe) și un caracter de spațiu care este
urmat imediat de un caracter de tabulație în interiorul indentării inițiale a liniei sunt
considerate erori de spațiu alb. Iese cu starea diferită de zero dacă sunt găsite probleme. Nu
compatibil cu --exit-code.
--ws-error-highlight=
Evidențiați erorile de spații albe pe liniile specificate de în culoarea specificată de
culoare.diff.spațiu alb. este o listă separată prin virgulă de context vechi, nou. Cand
această opțiune nu este dată, sunt evidențiate doar erorile de spații albe din liniile noi. De exemplu
--ws-error-highlight=nou, vechi evidențiază erorile de spații albe atât pentru șterse cât și pentru adăugate
linii. toate pot fi folosite ca prescurtare pentru vechi, nou, context.
--full-index
În loc de prima mână de caractere, afișați întregul blob pre- și post-imagine
nume de obiecte pe linia „index” atunci când se generează formatul de corecție.
--binar
Pe lângă --full-index, scoateți un difer binar care poate fi aplicat cu git-apply.
--abbrev[= ]
În loc să afișeze numele complet al obiectului hexazecimal de 40 de octeți în formatul diff-raw
și liniile de antet arborele diff, arată doar un prefix parțial. Aceasta este independentă de
--full-index opțiunea de mai sus, care controlează formatul de ieșire al patch-ului diff. Neimplicit
numărul de cifre poate fi specificat cu --abbrev= .
-B[ ][/ ], --break-rewrites[=[ ][/ ]]
Împărțiți modificările complete de rescrie în perechi de ștergere și creați. Aceasta servește două
scopuri:
Afectează modul în care o modificare care echivalează cu o rescrie totală a unui fișier, nu ca o serie
de ștergere și inserare amestecate împreună cu foarte puține linii care se întâmplă să se potrivească
textual ca context, ci ca o singură ștergere a tot ceea ce este vechi, urmată de a
inserarea unică a tot ceea ce este nou, iar numărul m controlează acest aspect al -B
opțiune (implicit la 60%). -B/70% specifică că mai puțin de 30% din original ar trebui
rămâne în rezultat pentru ca Git să-l considere o rescrire totală (adică, în caz contrar,
patch-ul rezultat va fi o serie de ștergere și inserare amestecate împreună cu contextul
linii).
Când este utilizat cu -M, un fișier rescris în totalitate este, de asemenea, considerat sursă a unui
redenumire (de obicei -M consideră doar un fișier care a dispărut ca sursă a unei redenumiri),
iar numărul n controlează acest aspect al opțiunii -B (implicit la 50%). -B20%
specifică că o modificare cu adăugare și ștergere în comparație cu 20% sau mai mult din
dimensiunea fișierului sunt eligibile pentru a fi preluate ca o posibilă sursă de redenumire
alt dosar.
-M[ ], --find-renames[= ]
Detectează redenumiri. Dacă n este specificat, acesta este un prag al indicelui de similaritate (de ex
cantitatea de adăugare/ștergere în comparație cu dimensiunea fișierului). De exemplu, -M90% înseamnă
Git ar trebui să considere o pereche ștergere/adăugare drept o redenumire dacă mai mult de 90% din fișier
nu s-a schimbat. Fără semnul %, numărul trebuie citit ca o fracție, cu a
virgulă zecimală înaintea acesteia. Adică, -M5 devine 0.5 și, prin urmare, este același cu -M50%.
În mod similar, -M05 este același cu -M5%. Pentru a limita detectarea la redenumiri exacte, utilizați -M100%.
Indicele de similaritate implicit este de 50%.
-C[ ], --găsește-copii[= ]
Detectează copii, precum și redenumiri. Vezi și --find-copies-harder. Dacă n este specificat, acesta
are aceeași semnificație ca și pentru -M .
--găsește-copii-mai greu
Din motive de performanță, în mod implicit, opțiunea -C găsește copii numai dacă fișierul original
a copiei a fost modificată în același set de modificări. Acest steag face comanda inspectării
fișiere nemodificate ca candidați pentru sursa copiei. Acesta este un foarte scump
operațiune pentru proiecte mari, așa că utilizați-l cu precauție. Oferă mai mult de o opțiune -C
are același efect.
-D, --ireversibil-stergere
Omiteți preimaginea pentru ștergere, adică imprimați doar antetul, dar nu și diferența dintre
preimage și /dev/null. Plasturele rezultat nu este destinat să fie aplicat cu plasture sau
git apply; acest lucru este doar pentru persoanele care doresc să se concentreze doar pe revizuirea
text după modificare. În plus, de ieşire, evident, lipsesc suficiente informaţii pentru a
aplica un astfel de patch invers, chiar si manual, de unde si denumirea optiunii.
Când este utilizat împreună cu -B, omiteți și preimaginea din partea de ștergere a lui a
sterge/creeaza pereche.
-l
Opțiunile -M și -C necesită timp de procesare O(n^2), unde n este numărul de
potențiale ținte de redenumire/copiere. Această opțiune împiedică rularea detectării de redenumire/copiere
dacă numărul de ținte de redenumire/copiere depășește numărul specificat.
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]
Selectați numai fișierele adăugate (A), copiate (C), șterse (D), modificate (M), redenumite
(R), tipul lor (adică fișier obișnuit, legătură simbolică, submodul, ...) schimbat (T), sunt
Necontopite (U), sunt Necunoscute (X) sau au avut împerecherea întreruptă (B). Orice combinație
dintre caracterele de filtru (inclusiv niciunul) pot fi utilizate. Când se adaugă * (Totul sau niciunul).
la combinație, toate căile sunt selectate dacă există vreun fișier care se potrivește cu altele
criterii în comparație; daca nu exista nici un dosar care sa corespunda altor criterii, nimic
este selectat.
-S
Căutați diferențele care modifică numărul de apariții ale șirului specificat
(adică adăugare/ștergere) într-un fișier. Destinat utilizării scriptorului.
Este util atunci când căutați un bloc exact de cod (cum ar fi o structură) și doriți
pentru a cunoaște istoria acelui bloc de când a apărut pentru prima dată: utilizați caracteristica
iterativ pentru a alimenta blocul interesant din preimagine înapoi în -S și continuați
până când obțineți prima versiune a blocului.
-G
Căutați diferențele al căror text de corecție conține linii adăugate/eliminate care se potrivesc .
Pentru a ilustra diferența dintre -S --pickaxe-regex și -G , considera
o comitere cu următoarea diferență în același fișier:
+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
În timp ce git log -G"regexec\(regexp" va afișa acest commit, git log -S"regexec\(regexp"
--pickaxe-regex nu va (deoarece numărul de apariții ale acelui șir nu a făcut-o
Schimbare).
A se vedea târnăcop intrare in gitdiffcore(7) pentru mai multe informații.
--târnăcope-toate
Când -S sau -G găsește o modificare, afișați toate modificările din acel set de modificări, nu doar
fișierele care conțin modificarea în .
--târnăcop-regex
Tratează dat la -S ca o expresie regulată POSIX extinsă pentru a se potrivi.
-O
Ieșiți patch-ul în ordinea specificată în , care are un shell glob
model pe linie. Aceasta suprascrie variabila de configurare diff.orderFile (vezi git-
config(1)). Pentru a anula diff.orderFile, utilizați -O/dev/null.
-R
Schimbați două intrări; adică, arată diferențele de la index sau fișier de pe disc la arbore
cuprins.
--relativ[= ]
Când rulează dintr-un subdirector al proiectului, i se poate spune să excludă modificările din exterior
directorul și afișați căile legate de acesta cu această opțiune. Când nu ești în
un subdirector (de exemplu, într-un depozit simplu), puteți numi ce subdirector să faceți
ieșirea relativ la dând a ca argument.
-un text
Tratați toate fișierele ca text.
--ignore-space-at-eol
Ignorați modificările în spațiul alb la EOL.
-b, --ignora-schimbarea-spațiului
Ignorați modificările cantității de spațiu alb. Acest lucru ignoră spațiile albe la sfârșitul liniei și
consideră că toate celelalte secvențe ale unuia sau mai multor caractere de spațiu alb sunt echivalente.
-w, --ignore-tot-spațiul
Ignorați spațiile albe când comparați liniile. Acest lucru ignoră diferențele chiar dacă o linie are
spațiu alb unde cealaltă linie nu are niciuna.
--ignora-linii-albe
Ignorați modificările ale căror linii sunt toate goale.
--inter-hunk-context=
Afișați contextul dintre bucățile de diferență, până la numărul specificat de linii, astfel
fuzionarea unor bucăți care sunt aproape una de alta.
-W, --funcție-context
Arată toate funcțiile din jur ale modificărilor.
--cod-ieșire
Faceți ieșirea din program cu coduri similare cu dif(1). Adică iese cu 1 dacă există
au fost diferențe și 0 înseamnă că nu există diferențe.
--Liniște
Dezactivați toate ieșirile programului. Implica --exit-code.
--ext-dif
Permiteți executarea unui ajutor extern de diferență. Dacă setați un driver de diferență extern cu
gitattributes(5), trebuie să utilizați această opțiune cu git-log(1) și prieteni.
--no-ext-diff
Nu permiteți driverele de diferență externe.
--textconv, --no-textconv
Permiteți (sau interziceți) rularea filtrelor externe de conversie a textului la compararea binarului
fișiere. Vedea gitattributes(5) pentru detalii. Deoarece filtrele textconv sunt de obicei a
conversie unidirecțională, diferența rezultată este potrivită pentru consumul uman, dar nu poate
a fi aplicat. Din acest motiv, filtrele textconv sunt activate implicit numai pentru git-
dif(1) și git-log(1), dar nu pentru git-format-patch(1) sau diferite comenzi de instalații sanitare.
--ignore-submodule[= ]
Ignorați modificările aduse submodulelor în generarea dif. poate fi fie „niciunul”,
„untracked”, „dirty” sau „all”, care este implicit. Folosind „niciunul” se va lua în considerare
submodulul modificat atunci când conține fie fișiere neurmărite sau modificate, fie HEAD
diferă de commit-ul înregistrat în superproiect și poate fi folosit pentru a suprascrie oricare
setările de ignora opțiune în git-config(1) sau gitmodules(5). Când „ne urmărit” este
submodulele folosite nu sunt considerate murdare atunci când conțin doar conținut neurmărit (dar
sunt încă scanate pentru conținut modificat). Utilizarea „dirty” ignoră toate modificările aduse
arborele de lucru al submodulelor, doar modificările aduse commit-urilor stocate în superproiect sunt
afișat (acesta a fost comportamentul până la 1.7.0). Utilizarea „toate” ascunde toate modificările aduse
submodule.
--src-prefix=
Afișați prefixul sursă dat în loc de „a/”.
--dst-prefix=
Afișați prefixul de destinație dat în loc de „b/”.
--fără-prefix
Nu afișați niciun prefix sursă sau destinație.
Pentru explicații mai detaliate despre aceste opțiuni comune, consultați și gitdiffcore(7).
-1 --bază, -2 --a noastră, -3 --a lor, -0
Diferență față de versiunea „de bază”, „filiala noastră” sau respectiv „ramura lor”. Cu
aceste opțiuni, diferențele pentru intrările îmbinate nu sunt afișate.
Valoarea implicită este să se diferențieze cu ramura noastră (-2) și cu căile rezolvate curat. The
opțiunea -0 poate fi dată pentru a omite ieșirea diferită pentru intrările necombinate și doar pentru a afișa
„Necontopite”.
-c, --cc
Aceasta compară etapa 2 (ramura noastră), etapa 3 (ramura lor) și fișierul arborelui de lucru
și emite o diferență combinată, similară modului arbore-dif arată o comitere de îmbinare cu
aceste steaguri.
-q
Rămâi tăcut chiar și în cazul fișierelor inexistente
RAW REZULTATE FORMAT
Formatul brut de ieșire din „git-diff-index”, „git-diff-tree”, „git-diff-files” și „git
diff --raw" sunt foarte asemănătoare.
Toate aceste comenzi compară două seturi de lucruri; ceea ce se compară diferă:
git-diff-index
compară și fișierele din sistemul de fișiere.
git-diff-index --în cache
compară iar indicele.
git-diff-tree [-r] [ ...]
compară arborii numiți de cele două argumente.
fișiere git-diff [ ...]
compară indexul și fișierele din sistemul de fișiere.
Comanda „git-diff-tree” își începe producția prin imprimarea hash-ului a ceea ce este
comparat. După aceea, toate comenzile imprimă o linie de ieșire pentru fiecare fișier modificat.
O linie de ieșire este formatată astfel:
editare in loc: 100644 100644 bcd1234... 0123456... M file0
copy-edit :100644 100644 abcd123... 1234567... C68 file1 file2
redenumire-editare :100644 100644 abcd123... 1234567... R86 file1 file3
creați :000000 100644 0000000... 1234567... Un fișier4
sterge :100644 000000 1234567... 0000000... D fisier5
dezintegrat :000000 000000 0000000... 0000000... U fisier6
Adică de la stânga la dreapta:
1. un colon.
2. mod pentru „src”; 000000 în cazul în care este creată sau dezintegrată.
3. un spatiu.
4. mod pentru „dst”; 000000 dacă este șters sau dezintegrat.
5. un spatiu.
6. sha1 pentru „src”; 0{40} dacă a fost creată sau nu este îmbinată.
7. un spatiu.
8. sha1 pentru „dst”; 0{40} în cazul în care este creată, dezintegrat sau „uitați-vă la arborele de lucru”.
9. un spatiu.
10. status, urmat de numărul opțional „scor”.
11. o filă sau un NUL când -z este folosită opțiunea.
12. cale pentru „src”
13. o filă sau un NUL când -z este utilizată opțiunea; există doar pentru C sau R.
14. cale pentru „dst”; există doar pentru C sau R.
15. un LF sau un NUL când -z este utilizată opțiunea, pentru a încheia înregistrarea.
Posibile scrisori de stare sunt:
· A: adăugarea unui fișier
· C: copierea unui fișier într-unul nou
· D: ștergerea unui fișier
· M: modificarea conținutului sau a modului unui fișier
· R: redenumirea unui fișier
· T: modificarea tipului fișierului
· U: fișierul nu este îmbinat (trebuie să finalizați îmbinarea înainte de a putea fi comitat)
· X: tip de modificare „necunoscut” (cel mai probabil o eroare, vă rugăm să o raportați)
Literele de stare C și R sunt întotdeauna urmate de un scor (care indică procentul de
asemănarea dintre sursa și ținta mutării sau copiei). Litera de stare M poate fi
urmat de un scor (care indică procentul de diferență) pentru rescrierile fișierelor.
este afișat ca toate 1 dacă un fișier este nou pe sistemul de fișiere și nu este sincronizat cu
indicele.
Exemplu:
:100644 100644 5be4a4...... 000000...... M file.c
Când opțiunea -z nu este utilizată, sunt reprezentate caracterele TAB, LF și bară oblică inversă în numele căilor
ca \t, \n și, respectiv, \\.
DIFER FORMAT PENTRU FUSIONE
„git-diff-tree”, „git-diff-files” și „git-diff --raw” pot lua -c or --cc opțiunea pentru
generați ieșire diff și pentru comiterile de îmbinare. Ieșirea diferă de formatul descris
mai sus în felul următor:
1. există câte două puncte pentru fiecare părinte
2. există mai multe moduri „src” și „src” sha1
3. starea este caractere de stare concatenate pentru fiecare părinte
4. nici un număr opțional de „scor”.
5. cale unică, numai pentru „dst”
Exemplu:
::100644 100644 100644 fabadb8... cc95eb0... 4866510... MM describe.c
Rețineți că combinate dif listează numai fișierele care au fost modificate de la toți părinții.
GENERATOR PLASTURI CU -P
Când „git-diff-index”, „git-diff-tree” sau „git-diff-files” sunt executate cu un -p opțiunea, „git
dif” fără --brut opțiunea sau „git log” cu opțiunea „-p”, acestea nu produc
ieșire descrisă mai sus; în schimb produc un fișier de corecție. Puteți personaliza creația
a unor astfel de patch-uri prin variabilele de mediu GIT_EXTERNAL_DIFF și GIT_DIFF_OPTS.
Ceea ce produce opțiunea -p este ușor diferit de formatul tradițional de diferență:
1. Este precedat de un antet „git diff” care arată astfel:
diff --git a/fișier1 b/fișier2
Numele fișierelor a/ și b/ sunt aceleași, cu excepția cazului în care este implicată redenumirea/copierea. Mai ales, chiar
pentru o creare sau o ștergere, /dev/null este nu folosit în locul a/ sau b/
nume de fișiere.
Când este implicată redenumirea/copiere, fișierul1 și fișierul2 arată numele fișierului sursă al fișierului
rename/copy și respectiv numele fișierului pe care îl produce rename/copy.
2. Este urmată de una sau mai multe linii de antet extinse:
mod vechi
mod nou
modul fișier șters
nou mod de fișier
copie de la
copiaza in
redenumi din
redenumiți în
indice de similitudine
indicele de disimilare
index ..
Modurile de fișiere sunt tipărite ca numere octale din 6 cifre, inclusiv tipul și fișierul
biți de permisiune.
Numele căilor din anteturile extinse nu includ prefixele a/ și b/.
Indicele de similitudine este procentul de linii neschimbate, iar indicele de disimilaritate
este procentul liniilor modificate. Este un număr întreg rotunjit în jos, urmat de a
semn de procente. Valoarea indicelui de similaritate de 100% este astfel rezervată pentru două fișiere egale,
în timp ce diferența de 100% înseamnă că nicio linie din fișierul vechi nu a ajuns în noul
unul.
Linia de index include suma de control SHA-1 înainte și după modificare. The este
inclus dacă modul fișier nu se schimbă; în caz contrar, linii separate indică vechiul
și noul mod.
3. Caracterele TAB, LF, ghilimele duble și bara oblică inversă în numele căilor sunt reprezentate ca \t, \n,
\" și respectiv \\. Dacă este nevoie de o astfel de înlocuire, atunci întregul
calea este pusă între ghilimele duble.
4. Toate fișierele fișier1 din ieșire se referă la fișiere înainte de comitere și toate fișierele2
fișierele se referă la fișiere după comitere. Este incorect să aplicați fiecare modificare fiecăruia
fişier secvenţial. De exemplu, acest patch va schimba a și b:
diff --git a/ab/b
redenumiți de la a
redenumiți în b
diff --git a/bb/a
redenumiți din b
redenumiți în a
COMBINAT DIFER FORMAT
Orice comandă de generare a diferențelor poate lua opțiunea -c sau --cc pentru a produce a combinate dif cand
arătând o îmbinare. Acesta este formatul implicit când se afișează îmbinările cu git-diff(1) sau git-
Arăta(1). Rețineți, de asemenea, că puteți da opțiunea -m oricăreia dintre aceste comenzi pentru a forța
generarea de diferențe cu părinții individuali ai unei fuziuni.
A combinate dif formatul arată astfel:
diff --combined describe.c
index fabadb8,cc95eb0..4866510
--- a/descrie.c
+++ b/descrie.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}
- static void describe(char *arg)
-static void describe(struct commit *cmit, int last_one)
++ static void describe(char *arg, int last_one)
{
+ nesemnat char sha1[20];
+ struct commit *cmit;
struct commit_list *listă;
static int initializat = 0;
struct commit_name *n;
+ if (get_sha1(arg, sha1) < 0)
+ utilizare(descrie_utilizare);
+ cmit = lookup_commit_reference(sha1);
+ dacă (!cmit)
+ utilizare(descrie_utilizare);
+
dacă (!inițializat) {
initializat = 1;
for_each_ref(get_name);
1. Este precedat de un antet „git diff”, care arată astfel (când -c opțiunea este
folosit):
diff --fișier combinat
sau așa (când --cc este folosită opțiunea):
diff --cc fișier
2. Este urmată de una sau mai multe linii de antet extinse (acest exemplu arată o îmbinare cu
doi părinți):
index , ..
modul , ..
nou mod de fișier
modul fișier șters ,
Modul , .. linia apare numai dacă cel puțin unul dintre este
diferit de restul. Antete extinse cu informații despre conținutul detectat
mișcarea (redenumirea și detectarea copierii) sunt proiectate să funcționeze cu diferențe de două
și nu sunt utilizate de formatul de dif. combinat.
3. Este urmată de antetul cu două linii de la fișier/în fișier
--- un fișier
+++ b/fișier
Similar cu antetul pe două rânduri pentru tradițional unificat diff, pentru care este folosit /dev/null
semnal de fișiere create sau șterse.
4. Formatul antetului blocului este modificat pentru a preveni ca oamenii să-l alimenteze accidental
patch -p1. Formatul combinat de diferențe a fost creat pentru revizuirea modificărilor de comitere de îmbinare și
nu a fost destinat să se aplice. Modificarea este similară cu schimbarea extinsului index
antet:
@@@ @@@
Există (număr de părinți + 1) @ caractere în antetul fragmentului pentru diferența combinată
format.
Spre deosebire de tradițional unificat diff, care arată două fișiere A și B cu un singur
coloană care are - (minus — apare în A, dar eliminată în B), + (plus — lipsește în A dar
adăugat la B) sau prefixul „ ” (spațiu — neschimbat), acest format compară două sau mai multe fișiere
fișier1, fișier2,... cu un fișier X și arată cum diferă X de fiecare fișier N. O coloană
pentru fiecare dintre fișierele N este adăugată la linia de ieșire pentru a observa modul în care linia lui X este diferită de
aceasta.
A - caracterul din coloana N înseamnă că linia apare în fișierul N, dar nu apare
în rezultat. Un caracter + în coloana N înseamnă că linia apare în rezultat,
și fileN nu are acea linie (cu alte cuvinte, linia a fost adăugată, din punctul de
punctul de vedere al părintelui respectiv).
În rezultatul exemplului de mai sus, semnătura funcției a fost schimbată din ambele fișiere (de aici două
- eliminări atât din fișierul1 cât și din fișierul2, plus ++ pentru a însemna că o linie care a fost adăugată nu
apar fie în fișierul1, fie în fișierul2). De asemenea, alte opt linii sunt aceleași din file1, dar nu
nu apar în fișierul 2 (deci prefixat cu +).
Când este afișat de git diff-tree -c, compară părinții unui comit de îmbinare cu îmbinare
rezultat (adică file1..fileN sunt părinții). Când este afișat de git diff-files -c, se compară
cei doi părinți de îmbinare nerezolvați cu fișierul arbore de lucru (adică fișierul 1 este etapa 2 aka
„versiunea noastră”, fișierul 2 este etapa 3, alias „versiunea lor”).
ALTE DIFER FORMATE
Opțiunea --summary descrie fișierele nou adăugate, șterse, redenumite și copiate. --stat
opțiunea adaugă diffstat(1) grafic la ieșire. Aceste opțiuni pot fi combinate cu altele
opțiuni, cum ar fi -p, și sunt destinate consumului uman.
Când se afișează o modificare care implică o redenumire sau o copie, --stat ieșirea formatează fișierul
căi în mod compact, combinând prefixul și sufixul comune ale numelor de căi. De exemplu, a
modificarea care mută arch/i386/Makefile în arch/x86/Makefile în timp ce modificați 4 linii va fi
arata astfel:
arch/{i386 => x86}/Makefile | 4 +--
Opțiunea --numstat oferă diffstat(1) informații, dar este proiectat pentru o mașină mai ușoară
consum. O intrare din ieșirea --numstat arată astfel:
1 2 CITEȘTE-MĂ
3 1 arch/{i386 => x86}/Makefile
Adică de la stânga la dreapta:
1. numărul de linii adăugate;
2. o filă;
3. numărul de linii șterse;
4. o filă;
5. pathname (eventual cu informații de redenumire/copiere);
6. o linie nouă.
Când opțiunea de ieșire -z este în vigoare, rezultatul este formatat astfel:
1 2 README NUL
3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
Aceasta este:
1. numărul de linii adăugate;
2. o filă;
3. numărul de linii șterse;
4. o filă;
5. un NUL (există doar dacă este redenumit/copiat);
6. cale în preimagine;
7. un NUL (există doar dacă este redenumit/copiat);
8. cale în postimage (există doar dacă este redenumit/copiat);
9. a NUL.
NUL suplimentar înainte de calea preimagine în majuscule redenumite este de a permite scripturi care citesc
ieșire pentru a spune dacă înregistrarea curentă citită este o înregistrare cu o singură cale sau o redenumire/copie
înregistrați fără a citi înainte. După citirea liniilor adăugate și șterse, citiți până la NUL
ar da numele căii, dar dacă acesta este NUL, înregistrarea va afișa două căi.
GIT
O parte din merge(1) apartament
Utilizați fișierele git-diff-online folosind serviciile onworks.net