Git er et av de mest brukte distribuerte versjonskontrollsystemene, beskrevet av utviklere over hele verden som nummer én VCS-tjeneste. Den går bare fra terminal, men flere frontender er tilgjengelig for nedlasting.
Det er et gratis og åpen kildekode-versjonssystemprogram som kan håndtere både store og små prosjekter med maksimal effektivitet og hastighet. Programmet kan lett beskrives som små, raske og distribuerte.
Kommandolinjealternativer
Programmet kommer med en håndfull kommandoer som lett kan huskes av alle fra get-go. Alle operasjonene utføres lokalt, og har blitt konstruert for å arbeide på Linux-kjernen.
Inkludert kommandoer er legge til, bisect, gren, kassa, klone, commit, diff, hente, grep, init, logg, slå sammen, mv, dra, trykk, rebase, nullstille, rm, vise, status og tag. Du kan enkelt lære hva hver kommando gjør ved å kjøre git-help-kommandoen fra et terminalvindu.
Funksjoner med et blikk
Når du bruker Git, kan brukerne legge til filer, kasseforbindelser eller baner, klonregister, lage tomme Git repos, delta i flere utviklingshistorier, vise arbeidsstatusen, registrere endringer, samt lage, liste eller slette grener.
I tillegg tillater brukeren å vise endringer mellom kommandoer og arbeider trær, skrive ut linjer som samsvarer med et mønster, vise commit logger, laste ned refs og objekter, omdøpe eller flytte filer, symlinks og kataloger, oppdater fjernreferanser og fjern filer fra et fungerende tre.
Forskjellige grafiske frontender finnes
Selv om det bare er en kommandolinjeprogramvare, er det tilgjengelige grafiske brukergrensesnitt (GUIer), inkludert git-cola, SmartGit, GitEye, fnise og gitg. Prosjektet utvider SCM (Software Configuration Management) verktøy, for eksempel CVS, Subversion, ClearCase og Perforce, ved å ha billig lokal forgrening, flere arbeidsflyter og praktiske oppsamlingsområder.
Bunnlinjen
Oppsummering, Git er et gratis versjonskontrollsystem som har lynrask ytelse, det er lett å lære, og har et veldig lite fotavtrykk. Med Git kan du gjøre friksjonsløs kontekstbytting, rollebaserte kodelinjer, funksjonsbasert arbeidsflyt og engangsforsøk.
Hva er nytt i denne versjonen:
- En hjelpefunksjon for å lese en enkelt linje i strbuf utløste feil feil ved EOF under visse forhold, som er løst.
- I tillegg til "cc: # cruft", "cc: a@dd.re.ss # cruft" ble lært å "git send-email" som en gyldig måte å fortelle at den også må sende en karbonkopi til i tilhengerdelen.
- Lagre regresjon til "gitk - bisect" ved en nylig oppdatering.
- I motsetning til "git commit-tree & lt; fil "," git commit-tree -F fil " passerte ikke innholdet i filen ordentlig og i stedet fullførte en ufullstendig linje på slutten, hvis den eksisterer. Sistnevnte har blitt oppdatert for å matche oppførselen til den tidligere.
- "git arkiv", spesielt når det brukes med pathspec, lagret en tom katalog i sin utgang, selv om Git selv aldri gjør det. Dette har blitt løst.
- Feilsøking av API, som også skjuler advarsler fra GCC.
- "git gc" prøver å unngå å kjøre to forekomster samtidig ved å lese og skrive pid / vert fra og til en låsfil; Det pleide å bruke feil format fscanf () når det ble lest, noe som er blitt korrigert.
- Testlinteren har blitt lært at vi ikke liker "ekko-ei".
- Kode cmp.std.c nitpick.
- "git beskriver - match" Lært å ta flere mønstre i v2.13-serien, men funksjonen ignorerte mønstrene etter den første og fungerte ikke i det hele tatt. Dette har blitt løst.
- "git cat-file --textconv & quot; begynte segfaulting nylig, som er blitt korrigert.
- Det innebygde mønsteret for å oppdage "funksjonshovedet" for HTML stemte ikke sammen med elementer uten noen attributter som ble løst.
- "git mailinfo" var løs i dekoding sitert utskrivbar og produsert søppel når de to bokstavene etter likestegnet ikke er heksadesimale. Dette har blitt løst.
- Dokumentasjonen for "-X" for sammenslåinger ble misvisende skrevet for å antyde at "deres" eksisterer, som ikke er tilfelle.
- Stav navnet på systemet vårt som "Git" i utgangen fra request-pull script.
- Korrigerer for en håndfull minneadgangsproblem identifisert av valgrind.
- Backports en moralsk ekvivalent til 2015 retter seg på avstemningsemuleringen fra oppstrøms gnulib for å fikse sporadiske brudd på HPE NonStop.
- I "- format = ..." alternativet for "git for-each-ref" kommando (og dens venner, det vil si noteringsmodusen for "git-gren / tag"), "% (atom:)" (for eksempel "% (refname:)", "% (body:)" brukes til å feilsøke. I stedet behandler dem som om kolon og en tom streng som følger den ikke var der.
- Brukere med "color.ui = always" i deres konfigurasjon ble ødelagt av en nylig endring som gjorde VVS-kommandoer til å være oppmerksom på dem som lappen opprettet internt av "git add-p" ble farget (heh) og gjort ubrukelig. Dette har blitt løst.
- "git-grenen -M en b" mens på en gren som er helt uavhengig av enten gren a eller gren b misbehaved når flere arbeidsplaner var i bruk. Dette har blitt løst.
- "Git Fast Export" med -M / -C-alternativ utstedt "kopi" instruksjon på en bane som samtidig er endret, noe som var feil.
- Kontrollpanelkommandoen "git fast-import & quot; Spylte ikke oppdateringer til refs og marks, med mindre minst ett objekt ble opprettet siden det siste kontrollpunktet, som er korrigert, da disse tingene kan skje uten at noe nytt objekt blir opprettet.
- Skriptene til å kjøre TravisCI er omorganisert, og en optimalisering for å unngå å bruke sykluser på en gren som er merket, er implementert.
- "git-henting:" tillater et objektnavn på siden når den andre siden aksepterer en slik forespørsel siden Git v2.5, men dokumentasjonen ble forlatt.
- En regresjon i 2.11 som gjorde at koden for å lese listen over alternative objektforretninger overskredet slutten av strengen er blitt løst.
Hva er nytt i versjon 2.15.1:
- En hjelpefunksjon for å lese en enkelt linje i strbuf utløste feil feil ved EOF under visse forhold, som er løst.
- I tillegg til "cc: # cruft", "cc: a@dd.re.ss # cruft" ble lært å "git send-email" som en gyldig måte å fortelle at den også må sende en karbonkopi til i tilhengerdelen.
- Lagre regresjon til "gitk - bisect" ved en nylig oppdatering.
- I motsetning til "git commit-tree & lt; fil "," git commit-tree -F fil " passerte ikke innholdet i filen ordentlig og i stedet fullførte en ufullstendig linje på slutten, hvis den eksisterer. Sistnevnte har blitt oppdatert for å matche oppførselen til den tidligere.
- "git arkiv", spesielt når det brukes med pathspec, lagret en tom katalog i sin utgang, selv om Git selv aldri gjør det. Dette har blitt løst.
- Feilsøking av API, som også skjuler advarsler fra GCC.
- "git gc" prøver å unngå å kjøre to forekomster samtidig ved å lese og skrive pid / vert fra og til en låsfil; Det pleide å bruke feil format fscanf () når det ble lest, noe som er blitt korrigert.
- Testlinteren har blitt lært at vi ikke liker "ekko-ei".
- Kode cmp.std.c nitpick.
- "git beskriver - match" Lært å ta flere mønstre i v2.13-serien, men funksjonen ignorerte mønstrene etter den første og fungerte ikke i det hele tatt. Dette har blitt løst.
- "git cat-file --textconv & quot; begynte segfaulting nylig, som er blitt korrigert.
- Det innebygde mønsteret for å oppdage "funksjonshovedet" for HTML stemte ikke sammen med elementer uten noen attributter som ble løst.
- "git mailinfo" var løs i dekoding sitert utskrivbar og produsert søppel når de to bokstavene etter likestegnet ikke er heksadesimale. Dette har blitt løst.
- Dokumentasjonen for "-X" for sammenslåinger ble misvisende skrevet for å antyde at "deres" eksisterer, som ikke er tilfelle.
- Stav navnet på systemet vårt som "Git" i utgangen fra request-pull script.
- Korrigerer for en håndfull minneadgangsproblem identifisert av valgrind.
- Backports en moralsk ekvivalent til 2015 retter seg på avstemningsemuleringen fra oppstrøms gnulib for å fikse sporadiske brudd på HPE NonStop.
- I "- format = ..." alternativet for "git for-each-ref" kommando (og dens venner, det vil si noteringsmodusen for "git-gren / tag"), "% (atom:)" (for eksempel "% (refname:)", "% (body:)" brukes til å feilsøke. I stedet behandler dem som om kolon og en tom streng som følger den ikke var der.
- Brukere med "color.ui = always" i deres konfigurasjon ble ødelagt av en nylig endring som gjorde VVS-kommandoer til å være oppmerksom på dem som lappen opprettet internt av "git add-p" ble farget (heh) og gjort ubrukelig. Dette har blitt løst.
- "git-grenen -M en b" mens på en gren som er helt uavhengig av enten gren a eller gren b misbehaved når flere arbeidsplaner var i bruk. Dette har blitt løst.
- "Git Fast Export" med -M / -C-alternativ utstedt "kopi" instruksjon på en bane som samtidig er endret, noe som var feil.
- Kontrollpanelkommandoen "git fast-import & quot; Spylte ikke oppdateringer til refs og marks, med mindre minst ett objekt ble opprettet siden det siste kontrollpunktet, som er korrigert, da disse tingene kan skje uten at noe nytt objekt blir opprettet.
- Skriptene til å kjøre TravisCI er omorganisert, og en optimalisering for å unngå å bruke sykluser på en gren som er merket, er implementert.
- "git-henting:" tillater et objektnavn på siden når den andre siden aksepterer en slik forespørsel siden Git v2.5, men dokumentasjonen ble forlatt.
- En regresjon i 2.11 som gjorde at koden for å lese listen over alternative objektforretninger overskredet slutten av strengen er blitt løst.
Hva er nytt i versjon 2.15.0:
- En hjelpefunksjon for å lese en enkelt linje i strbuf utløste feil feil ved EOF under visse forhold, som er løst.
- I tillegg til "cc: # cruft", "cc: a@dd.re.ss # cruft" ble lært å "git send-email" som en gyldig måte å fortelle at den også må sende en karbonkopi til i tilhengerdelen.
- Lagre regresjon til "gitk - bisect" ved en nylig oppdatering.
- I motsetning til "git commit-tree & lt; fil "," git commit-tree -F fil " passerte ikke innholdet i filen ordentlig og i stedet fullførte en ufullstendig linje på slutten, hvis den eksisterer. Sistnevnte har blitt oppdatert for å matche oppførselen til den tidligere.
- "git arkiv", spesielt når det brukes med pathspec, lagret en tom katalog i sin utgang, selv om Git selv aldri gjør det. Dette har blitt løst.
- Feilsøking av API, som også skjuler advarsler fra GCC.
- "git gc" prøver å unngå å kjøre to forekomster samtidig ved å lese og skrive pid / vert fra og til en låsfil; Det pleide å bruke feil format fscanf () når det ble lest, noe som er blitt korrigert.
- Testlinteren har blitt lært at vi ikke liker "ekko-ei".
- Kode cmp.std.c nitpick.
- "git beskriver - match" Lært å ta flere mønstre i v2.13-serien, men funksjonen ignorerte mønstrene etter den første og fungerte ikke i det hele tatt. Dette har blitt løst.
- "git cat-file --textconv & quot; begynte segfaulting nylig, som er blitt korrigert.
- Det innebygde mønsteret for å oppdage "funksjonshovedet" for HTML stemte ikke sammen med elementer uten noen attributter som ble løst.
- "git mailinfo" var løs i dekoding sitert utskrivbar og produsert søppel når de to bokstavene etter likestegnet ikke er heksadesimale. Dette har blitt løst.
- Dokumentasjonen for "-X" for sammenslåinger ble misvisende skrevet for å antyde at "deres" eksisterer, som ikke er tilfelle.
- Stav navnet på systemet vårt som "Git" i utgangen fra request-pull script.
- Korrigerer for en håndfull minneadgangsproblem identifisert av valgrind.
- Backports en moralsk ekvivalent til 2015 retter seg på avstemningsemuleringen fra oppstrøms gnulib for å fikse sporadiske brudd på HPE NonStop.
- I "- format = ..." alternativet for "git for-each-ref" kommando (og dens venner, det vil si noteringsmodusen for "git-gren / tag"), "% (atom:)" (for eksempel "% (refname:)", "% (body:)" brukes til å feilsøke. I stedet behandler dem som om kolon og en tom streng som følger den ikke var der.
- Brukere med "color.ui = always" i deres konfigurasjon ble ødelagt av en nylig endring som gjorde VVS-kommandoer til å være oppmerksom på dem som lappen opprettet internt av "git add-p" ble farget (heh) og gjort ubrukelig. Dette har blitt løst.
- "git-grenen -M en b" mens på en gren som er helt uavhengig av enten gren a eller gren b misbehaved når flere arbeidsplaner var i bruk. Dette har blitt løst.
- "Git Fast Export" med -M / -C-alternativ utstedt "kopi" instruksjon på en bane som samtidig er endret, noe som var feil.
- Kontrollpanelkommandoen "git fast-import & quot; Spylte ikke oppdateringer til refs og marks, med mindre minst ett objekt ble opprettet siden det siste kontrollpunktet, som er korrigert, da disse tingene kan skje uten at noe nytt objekt blir opprettet.
- Skriptene til å kjøre TravisCI er omorganisert, og en optimalisering for å unngå å bruke sykluser på en gren som er merket, er implementert.
- "git-henting:" tillater et objektnavn på siden når den andre siden aksepterer en slik forespørsel siden Git v2.5, men dokumentasjonen ble forlatt.
- En regresjon i 2.11 som gjorde at koden for å lese listen over alternative objektforretninger overskredet slutten av strengen er blitt løst.
Hva er nytt? i versjon 2.14.1:
- Denne løsningen forutgående porter løsningen for & quot; ssh: //..." URL fra Git v2.7.6
Hva er nytt i versjon 2.9.3:
- * En hjelpefunksjon som tar innholdet i et commitobjekt og finner emnelinjen, ignorerer ikke ledende blanke linjer, som det ofte gjøres av andre kodebaner. Gjør det ignorere ledende blanke linjer for å matche.
- Git vet ikke hva innholdet i indeksen skal være for en sti lagt til med "git add -N" ennå, så "git grep - cached" burde ikke vise treff (eller vise mangel på treff med -L ) i en slik vei, men den logikken gjelder ikke for "git grep", det vil si å søke i de aktive trefilene. Men det gjorde vi ved en feil, som er blitt korrigert.
- "git rebase -i - autostash" gjenopprett ikke automatisk stashed endringen når operasjonen ble avbrutt.
- "git commit --amend --allow-empty-message -S" for en commit uten noen melding kroppen kunne ha feilidentifisert hvor overskriften til commit objektet slutter.
- Flere oppgraderingsoppdateringer til typede strenger som forventes bokstavelig talt skrevet av sluttbrukeren i font med fast bredde.
- Vi har lenge hatt en in-code-kommentar som sa at vår fargede utgave bare ville fungere når vi bruker fprintf / fputs på Windows, som ikke lenger er tilfelle de siste årene.
- "gc.autoPackLimit" når den er satt til 1, bør ikke utløse en ompakning når det bare er én pakke, men koden talt dårlig og gjorde det.
- En del av "git am" hadde en oddsballhjelpsfunksjon som kalte ting utover "hans" i motsetning til å ringe hva vi har "vår", som ikke var kjønnsnøytral og også inkonsekvent med resten av systemet der Utendørs ting kalles vanligvis "deres" i motsetning til "våre".
- Testrammen lærte en ny hjelper test_match_signal for å sjekke en utgangskode fra å bli drept av et forventet signal.
- "git blame -M" savnet en enkelt linje som ble flyttet i filen.
- Løs opp nylig innførte kodebaner som er involvert i parallelle submodule operasjoner, som ga opp med å lese for tidlig, og kunne ha bortkastet CPU mens de forsøkte å skrive under en hjørne tilfelle tilstand.
- "git grep -i" har blitt lært å kaste saken i ikke-ascii-adresser på riktig måte.
- En test som betingelsesløst brukte "mktemp", lærte at kommandoen ikke nødvendigvis er tilgjengelig overalt.
- "git blame-fil" tillot linjene i linjene i det ikke-kommitterte, unadded innholdet av "fil" som skal inspiseres, men det nektet da "fil" ikke ble vist i gjeldende forpliktelse. Når "fil" ble opprettet ved å gi nytt navn til en eksisterende fil (men endringen ikke er begått), var denne begrensningen unødvendig stram.
- "git add -N dir / file & amp; git write tree" ga et feil treet når det finnes andre baner i samme katalog som sorterer etter "fil".
- "git hente http: // bruker: pass @ host / repo ..." skrubbet brukerinfo-delen, men "git push" gjorde det ikke.
- En gammel gammel feil som forårsaket "git diff - signore-space-at-eol" feilbehov er løst.
- "git notater fusjonere" hadde en kode for å se om en sti eksisterer (og mislykkes hvis den gjør det) og deretter åpne banen for å skrive (når den ikke gjør det). Erstatt den med åpen med O_EXCL.
- "git pack-objects" og "git index-pack" opererer hovedsakelig med off_t når man snakker om kompensasjonen av objekter i en pakkefil, men det var en håndfull steder som brukte "usignerte lange" for å holde den verdien, ledende til en utilsiktet avkorting.
- Nylig oppdatering til "git daemon" forsøker å aktivere stikkontakten KEEPALIVE, men når den er hentet via inetd, kan standardinndata-filbeskrivelsen ikke nødvendigvis være koblet til en stikkontakt. Undertrykk en ENOTSOCK-feil fra setsockopt ().
- Nyere FreeBSD sluttet å lage perl tilgjengelig på / usr / bin / perl; bytt standard den innebygde banen til / usr / local / bin / perl på ikke for gamle FreeBSD utgivelser.
- "git status" lærte å foreslå "fusjonere - abort" under en konfliktfusjon, akkurat som det allerede antyder "rebase -abort" under en konfliktfylt tilbakemelding.
- .c / .h kildene er merket som sådan i vår .gitattributes-fil, slik at "git diff -W" og venner ville fungere bedre.
- Eksisterende autokonf-generert test for behovet for å lenke med pthread-biblioteket, kontrollerte ikke alle funksjonene fra pthread-biblioteker; Nylige FreeBSD har noen funksjoner i libc, men ikke andre, og vi tror feilaktig å koble med libc er nok når det ikke er.
- Tillat http daemon tester i Travis CI tester.
- Brukere av API-funksjonen parse_options_concat () må tildele ekstra spor på forhånd og fylle dem med OPT_END () når de vil bestemme settet med støttede alternativer dynamisk, noe som gjør koden feilaktig og vanskelig å lese. Dette har blitt korrigert ved å justere API-en for å tildele og returnere en ny kopi av "struct-alternativ" -serien.
- Bruken av strbuf i "git rm" for å bygge filnavnet for å fjerne var litt suboptimal, som er blitt løst.
- "git commit - help" sa "- no-verifisere" handler bare om å hoppe over pre-commit-kroken, og klarte ikke å si at den også hoppet over commit-msg-kroken.
- "git merge" i Git v2.9 ble lært å forby at fusjonere en ikke-relatert historielinje som standard, men det er akkurat den typen ting som "--rejoin" modusen for "git subtree" (i bidrag /) ønsker å gjøre. "git subtree" har blitt lært å bruke alternativet "Allow-unrelated-histories" til å overstyre standardinnstillingen.
- Byggprosedyren for "git persistent-https" hjelper (i bidrag /) har blitt oppdatert slik at den kan bygges med nyere versjoner av Go.
- Det er en optimalisering som brukes i "git diff $ treeA $ treeB" for å låne en allerede sjekket ut kopi i arbeidstreet når det er kjent å være det samme som blokken blir sammenlignet, forventer at åpen / mmap av slike en fil er raskere enn å lese den fra objektbutikken, som innebærer oppblåsing og bruk av delta. Dette sparket imidlertid inn selv når den utcheckte kopien må gå gjennom konverteringen til konvertering (inkludert det rene filteret), som beseirer hele poenget med optimaliseringen. Optimaliseringen er deaktivert når konverteringen er nødvendig.
- "git-c grep.patternType = utvidet loggbasisk-regexp" misbehaved fordi den interne API-en for tilgang til grep-maskinen ikke ble utformet godt.
- Windows-porten feilet noen tester i t4130, på grunn av mangel på inum i de returnerte verdiene ved sin lstat (2) emulering.
- Tegnene i etiketten som vises for tagger / refs for å forplikte seg i "gitweb" -utgang, er nå skikkelig rømt for riktig HTML-utgang.
- FreeBSD kan ligge når du blir spurt om det er en katalog, noe som gjorde at den ikke-sperrede cachekoden faller tilbake til en langsom bane, noe som igjen førte til at t7063-testene mislyktes fordi den ønsket å verifisere oppførselen til hurtigbanen.
- Squelch kompilator advarsler for netmalloc (i kompatibel /) bibliotek.
- API-dokumentasjonen for hashmap var uklart om hashmap_entry kan kasseres trygt uten noe annet hensyn. Oppgi at det er trygt å gjøre det.
- Ikke-så nylig omskriving av "git am" som begynte å ringe internt inn i commit-maskinen hadde en utilsiktet regresjon, for det er uansett hvor mange sekunder det tok å bruke mange patcher, den resulterende kommitertidsstempel for de resulterende begår var alle de samme.
- "git difftool ..." som startet i en underkatalog, klarte ikke å tolke stiene i forhold til den katalogen som ble løst.
Hva er nytt i versjon 2.9.1:
- Når "git daemon" kjøres uten - [init-] timeout spesifisert, vil en tilkobling fra en klient som stiller seg frakoblet, holde seg i lang tid og kaste bort ressurser. Stikkordet KEEPALIVE har blitt aktivert for å tillate operativsystemet å legge merke til slike mislykkede forbindelser.
- Kommandoene i `git log`-familien tar% C (auto) i en tilpasset formatstreng. Dette ble ubetinget slått på fargen, ignorerer - ingen farger eller med --color = auto når utgangen ikke er koblet til en tty; Dette ble korrigert for å gjøre formatet virkelig oppføre seg som "auto".
- "git rev-list-count" hvis ganglengde er begrenset med "-n" alternativet fungerte ikke bra med tellingen optimalisert for å se på bitmap-indeksen.
- "git show -W" (utvide hunks for å dekke hele funksjonen, avgrenset av linjer som matcher "funcname" -mønsteret) som brukes til å vise hele filen når en endring lagt til en hel funksjon i slutten av filen, hvilken har blitt løst.
- Dokumentasjonssettet er oppdatert slik at bokstavskommandoer, konfigurasjonsvariabler og miljøvariabler blir konsekvent innstilt i skrifttypen med fast bredde og fet i manpages.
- "git svn propset" underkommando som ble lagt til i 2,3 dager, er dokumentert nå.
- Dokumentasjonen prøver å konsekvent stave "GPG"; Når du henviser til det spesifikke programnavnet, brukes "gpg".
- "git reflog" stoppet ved å se en oppføring som betegner en grenseopprettelseshendelse (også "ufødt"), noe som gjorde at det virket som om refloggen ble avkortet.
- Git-prompt scriptlet (i contrib /) var ikke vennlig med de som bruker "set -u", som er løst.
- En kodepath som brukte alloca (3) for å plassere en ubundet mengde data på stakken, har blitt oppdatert for å unngå å gjøre det.
- "git oppdateringsindeks --add --chmod = + x file" kan være brukbar som en flukt luke, men ikke en vennlig ting å tvinge for folk som trenger å bruke det regelmessig. "git add -chmod = + x file" kan brukes i stedet.
- Bygg forbedringer for gnome-nøkkelring (i bidrag /)
- "git status" pleide å si "arbeidskatalog" når det betydde "arbeidstreet".
- Kommentarer om misbehandlende FreeBSD-skall har blitt avklart med versionsnummeret (9.x og tidligere er ødelagt, nyere er OK).
- "git cherry-pick A" jobbet på en ufødt gren, men "git cherry-pick A..B" gjorde ikke.
- "git add -i / -p" lærte å respektere diff.compactionHeuristic eksperimentell knott, slik at brukeren kan jobbe på samme hunk-splitt som "git diff" -utgang.
- "logg --graph --format =" lærte at "%> | (N)" angir bredden i forhold til terminalens venstre kant, ikke i forhold til området for å tegne tekst som er til høyre for forfedret -graf-seksjonen. Den aksepterer nå også negativ N som betyr at kolonnegrensen er i forhold til den høyre grensen.
- Eierregelen for minnet som inneholder referanser for å bli hentet i "git-henting" var skruet, som er renset opp.
- "git bisect" gjør et internt anrop til "git diff-tree" når bisection finner skyldige, men denne anropen initierte ikke datastrukturen for å passere til diff-tree API riktig.
- Formater av de ulike dataene (og hvordan man validerer dem) der vi bruker GPG-signaturen, er dokumentert.
- Løs en utilsiktet regresjon i v2.9 som bryter "klone -depth" som rekurser ned til submodulene ved å tvinge undermodulene til å bli klonet grundig, hvilke mange serverinstanser som er vert for senkemodulene ikke er forberedt på.
- Fjer unødvendig avfall i den idiomatiske bruken av ': $ {VAR = default}' for å angi standardverdien uten å legge den inn i to sitater.
- Enkelte plattformsspesifikke kode hadde ikke-ANSI strenge erklæringer av C-funksjoner som ikke tar noen parametere, som er korrigert.
- Den interne koden som brukes til å vise lokal tidszoneforskyvning, er ikke forberedt på å håndtere tidsstempler utover år 2100, og ga en falsk offsetverdi til den som ringer. Bruk en mer gunstig leter +0000 i stedet og la "git log" gå i et slikt tilfelle, i stedet for å avbryte.
- En av fire påkallinger av leselink (1) i testserien er omskrevet, slik at testen kan kjøre på systemer uten kommandoen (andre er i valgrind testramme og t9802).
- t / perf behov / usr / bin / time med GNU utvidelse; Påkallingen av den er oppdatert til "gtime" på Darwin.
- En feil, som forårsaket "git p4", mens du kjører under verbose modus for å rapportere baner som utelates på grunn av filprefiks feil, har blitt løst; kommandoen sa "ignorerer fil utenfor prefiks" for stier som er _inside _.
- Dokumentasjonen på toppnivået "git help git" fremdeles peker på dokumentasjonssettet som er hostet ved nå-defunct google-kodearkiv. Oppdater den for å peke til https://git.github.io/htmldocs/git.html i stedet.
Hva er nytt i versjon 2.9.0:
Nytt i GIT 2.8.1 (5. april 2016)
Hva er nytt i versjon 2.8.1:
- "Rpmbuild" -mål ble brutt som inngang, git.spec.in, ble ikke oppdatert for å matche en fil som den beskriver som nylig er omdøpt. Dette har blitt løst.
Hva er nytt i versjon 2.7.3:
- Tradisjonelt er tester som prøver kommandoer som virker på innholdet i arbeidstreet, kalt "arbeidsplan" i filnavnene sine, men med det siste tillegget til "git worktree" -kommandoen, hvis tester også heter det, har den bli vanskeligere å fortelle dem fra hverandre. De tradisjonelle testene har blitt omdøpt til å bruke "work-tree" i stedet for å forsøke å skille dem fra.
- Mange kodepader glemmer å sjekke returverdi fra git_config_set (); Funksjonen er laget for å dø () for å sikre at vi ikke fortsetter når du angir en konfigurasjonsvariabel som feilet.
- Håndtering av feil mens du skriver inn i vår interne asynkrone prosess, er gjort robust, noe som reduserer flakiness i våre tester.
- "Git show" HOVED: Foo [BAR] Baz '"tolket ikke argumentet som en rev, det vil si objektet som er navngitt av banenavnet med jokertegn i en treobjekt.
- "git rev-parse -git-common-dir" som brukes i funksjonen for arbeidsstøtte, misbehaved når det kjøres fra en underkatalog.
- Kommandoen "v (iew)" av den interaktive "git am -i" kommandoen ble brutt i 2.6.0 tidsramme når kommandoen ble omskrevet i C.
- "git merge-tree" pleide å mishandle "begge sider lagt til" konflikt med sin egen "lage en falsk forfedrefil som har de felles delene av det som begge sider har lagt til og gjør en 3-veis flette" -logikk; Dette har blitt oppdatert for å bruke den vanlige "3-veis fusjonen med en tom blob som den falske vanlige forfaderfil" -tilnærmingen som brukes i resten av systemet.
- Minoritetsregelen for fill_textconv () API, som var litt vanskelig, har blitt dokumentert litt bedre.
- Dokumentasjonen angav ikke tydelig at "enkel" modus nå er standard for "git push" når push.default-konfigurasjonen ikke er angitt.
- Nylige versjoner av GNU grep er pickier når deres innspilling inneholder vilkårlig binær data, som noen av våre tester bruker. Skriv om testene for å stoppe problemet.
- En hjelpefunksjon "git submodule" bruker siden v2.7.0 å liste modulene som samsvarer med pathspec-argumentet som er gitt til sine underkommandoer (for eksempel "submodule add") er blitt løst.
- "git config section.var-verdi" for å angi en verdi i konfigurasjonsfilen for hver depot, mislyktes når den ble kjørt utenfor et lagringssted, men ikke korrekt oppgitt.
- Koden for å lese pakkedataene ved hjelp av forskyvningene som er lagret i IDX-filen for pakken, har blitt gjort mer nøye med å kontrollere gyldigheten av dataene i idxen.
Hva er nytt i versjon 2.7.2:
- Lavnivåfusjonen har blitt lært å benytte CRLF line termination når du legger inn konfliktmarkører til fusjonert innhold som selv er CRLF line terminated.
- "git worktree" hadde en ødelagt kode som forsøkte å automatisk reparere mulig inkonsekvens som resulterer fra sluttbrukerne som flytter en arbeidsplate til forskjellige steder uten å fortelle Git (det opprinnelige lagringsstedet trenger å opprettholde tilbakespolere til arbeidsbordene, men "mv" drevet av sluttbrukere som ikke er kjent med det faktum vil åpenbart ikke tilpasse dem), noe som faktisk gjorde ting verre når det ble utløst.
- "git push-force-lease" har blitt lært å rapportere om pushen trengte å tvinge (eller spole fremover).
- Den emulerte "ja" kommandoen som brukes i våre testskript, har blitt tweaked for ikke å bruke for mye tid som genererer unødvendig utgang som ikke brukes, for å hjelpe de som tester på Windows der den ikke ville stoppe før den fyller rørbufferen på grunn av til mangel på SIGPIPE.
- Vimdiff-backend for "git mergetool" har blitt tweaked for å ordne og antall buffere i rekkefølgen som ville matche forventningen til flertallet av folk som leser fra venstre til høyre, deretter topp ned og tilordne buffere 1 2 3 4 "mentalt" til lokale baserte fjernmeldede vinduer basert på den ordren.
- Dokumentasjonen for "git clean" er blitt korrigert; det nevnte at .git / moduler / * fjernes ved å gi to "-f", som aldri har vært tilfelle.
- Baner som har blitt fortalt indeksen om med «add -N», er ikke helt i indeksen, men noen kommandoer oppførte seg som om de allerede er skadelige.
- Inkluderer også liten dokumentasjon og testoppdateringer.
Hva er nytt i versjon 2.6.4:
- Skriptet "configure" testet ikke for -lpread korrekt, noe som opprørte noen linkere.
- Legg til støtte for å snakke http / https over sokker proxy.
- Bærbarhetskorrigering for Windows, som kan omskrive $ SHELL-variabel ved hjelp av ikke-POSIX-baner.
- Vi lar konsekvent alle kroker ignorere deres standardinngang, i stedet for å ha git klage over SIGPIPE.
- Sett opp shell-sitering i bidragsskript.
- Testportabilitetskorrigering for et emne i v2.6.1.
- Tillate utvidelse av tilde i noen http-konfigurasjonsvariabler.
- Gi et nyttig spesialtilfelle "diff / show --word-diff-regex =." som et eksempel i dokumentasjonen.
- Korrigere for et hjørnehus i filtergrenen.
- Gjør git-p4-arbeid på et frittliggende hode.
- Dokumentasjon avklaring for "check-ignore" uten "--verbose".
- På samme måte som arbeidstreet blir renset opp når brukeren slettet innlevering i P4Submit.applyCommit (), rydder opp rotet hvis "p4 submit" mislykkes.
- Å ha en leftover .idx-fil uten tilsvarende .pack-fil i lageret gjør vondt ytelse; "git gc" lærte å beskjære dem. Koden for å forberede arbeidstreet på midlertidig katalog for "dir-diff" -funksjonen glemte at symboliske koblinger ikke må kopieres (eller symlinkes) til det midlertidige området, da koden allerede er spesielle tilfeller og overskriver dem. Dessuten var det feil å prøve å beregne objektnavnet til målet for symbolsk lenke, som kanskje ikke engang eksisterer eller kan være en katalog.
- Det var ingen måte å beseire en konfigurert rebase.autostash-variabel fra kommandolinjen, da "git rebase -no-autostash" manglet.
- Tillat "git tolk trailere" å kjøre utenfor et Git-depot.
- Lag riktig "skitten" markør for skallmeldinger, selv når vi er på foreldreløse eller ufødte grener.
- Noen hjørne tilfeller er blitt løst i streng-matching gjort i "git status".
- Apples vanlige kryptoimplementering av SHA1_Update () tar ikke mer enn 4 GB om gangen, og vi har nå en kompileringstid for det.
Hva er nytt i versjon 2.5.3:
- Den eksperimentelle funksjonen for ikke-sperret cache var buggy når baner med noen få underkataloger er involvert.
- Nylige versjoner av skriptet "git am" har en ytelsesregresjon i "git am-skip" kodepath, som ikke lenger eksisterer i den innebygde versjonen på "master" -fronten. Fiks regresjonen i den siste skriptversjonen som vises i 2.5.x vedlikeholdsspor og eldre.
Hva er nytt i versjon 2.4.6:
- "git fetch --depth =" og "git clone --depth =" utstedte en grunne overføringsforespørsel til en opplastingspakke som ikke støtter muligheten.
- "git fsck" brukes til å ignorere manglende eller ugyldige objekter registrert i reflog.
- Tcsh-fullføringen skriver en bash scriptlet, men det ville ha mislyktes for brukere med noclobber sett.
- Nylige Mac OS X-oppdateringer bryter logikken for å oppdage at maskinen er på vekselstrømmen i sample pre-auto-gc-skriptet.
- "git format-patch -ignore-if-upstream A..B" likte ikke å bli matet merker som grenseforpliktelser.
- inneholder også typofixer, dokumentasjonsoppdateringer og trivial kode
- opprydding.
Hva er nytt i versjon 2.4.2:
- "git rev-list --objekter $ old --not --all" for å se om alt som er tilgjengelig fra $ old allerede er koblet til eksisterende refs, var svært ineffektivt.
- "hash-object - literally" introdusert i v2.2 var ikke forberedt på å ta et veldig langt objekttype navn.
- "git rebase - quiet" var ikke helt stille når det ikke er noe å gjøre.
- Fullførelsen for parameteren "log - decorate =" var feil.
- "filialfil" -korrekt commit-meldingsmelding som slutter med en ufullstendig linje på plattformer med noen "sed" -implementeringer som munterer en slik linje. Arbeid det rundt ved å unngå å bruke "sed".
- "git daemon" klarer ikke å bygge fra kilden under NO_IPV6-konfigurasjon (regresjon i 2.4).
- "git stash pop / apply" glemte å sørge for at ikke bare arbeidstreet er rent, men også indeksen er ren. Sistnevnte er viktig da en stash-applikasjon kan konflikt og indeksen vil bli brukt til konfliktløsning.
- Vi har prepended $ GIT_EXEC_PATH, og banen "git" er installert i (typisk "/ usr / bin") til $ PATH når du påberoper delprogrammer og kroker for nesten evighet, men den opprinnelige brukssaken sistnevnte forsøkte å støtte var semi -bogus (dvs. installer git til / opt / foo / git og kjør det uten å ha / opt / foo på $ PATH), og enda viktigere er det blitt mindre og mindre relevant som Git ble mer vanlig (dvs. brukerne ville _want_ å ha det på deres $ PATH). Stopp forutbestilling av banen der «git» er installert på brukerens $ PATH, da det ville forstyrre kommandosøkordren folkene er avhengige av (f.eks. De kan ikke like versjoner av programmer som ikke er relatert til Git i / usr / bin og vil overstyr dem ved å ha forskjellige i / usr / local / bin og ha sistnevnte katalog tidligere i deres $ PATH).
- inneholder også typofixer, dokumentasjonsoppdateringer og trivielle kodeopprydninger.
Kommentarer ikke funnet