Git er et af de mest anvendte distribuerede versionsstyringssystemer, der beskrives af udviklere rundt om i verden som den første VCS-service. Den kører kun fra terminal, men flere frontender kan downloades.
Det er en gratis og open source version styresystem applikation, der kan håndtere både store og små projekter med maksimal effektivitet og hastighed. Programmet kan let beskrives som værende lille, hurtig og distribueret.
Kommandolinje indstillinger
Programmet leveres med en håndfuld kommandoer, der nemt kan huskes af alle fra get-go. Alle operationer udføres lokalt og er konstrueret til at arbejde på Linux-kernen.
Inkluderede kommandoer er tilføj, bisect, gren, checkout, klon, commit, diff, hent, grep, init, log, fusion, mv, pull, push, rebase, nulstil, rm, show, status og tag. Du kan nemt lære, hvad hver kommando gør ved at køre git-help-kommandoen fra et terminalvindue.
Funktioner et overblik
Når du bruger Git, kan brugere tilføje filer, afkrydsningsafdelinger eller stier, klonrepositorier, oprette tomme Git repos, deltage i flere udviklingshistorier, vise arbejdstræstatus, optage ændringer, samt oprette, liste eller slette filialer.
Desuden giver applikationen brugerne mulighed for at se ændringer mellem begår og arbejder træer, udskriftslinjer, der matcher et mønster, se commit logs, downloade refs og objekter, omdøbe eller flytte filer, symlinks og mapper, opdater fjernreferencer og fjern filer fra et arbejdende træ.
Forskellige grafiske frontender findes
Selvom det kun er en kommandolinjeprogram, findes forskellige grafiske brugergrænseflader (GUI'er), herunder git-cola, SmartGit, GitEye, fnise og gitg. Projektet outclasses SCM (Software Configuration Management) hjælpeprogrammer, som CVS, Subversion, ClearCase og Perforce, ved at have billig lokal forgrening, flere arbejdsgange og bekvemme opsamlingsområder.
Bundlinie
Sammenfattende, Git er et gratis versionskontrolsystem, der har lynhurtig ydeevne, det er nemt at lære og har et meget lille fodspor. Med Git kan du lave friktionsløs kontekstskift, rollebaserede kode linjer, funktionsbaseret workflow og engangsforsøg.
Hvad er nyt i denne udgave:
- En hjælperfunktion til at læse en enkelt linie i strbuf fejlagtigt udløst OOM-fejl ved EOF under visse betingelser, som er blevet rettet.
- Udover "cc: # cruft", "cc: a@dd.re.ss # cruft" blev lært at & quot; git send-email & quot; som en gyldig måde at fortælle om, at den også skal sende en CO2-kopi til i trailer-sektionen.
- Ret regression til "gitk - bisect" ved en nylig opdatering.
- I modsætning til & quot; git commit-tree & lt; fil & quot ;, & quot; git commit-tree -F file & quot; Passerede ikke indholdet af filen ordentligt og udfyldte i stedet en ufuldstændig linje i slutningen, hvis der eksisterer. Sidstnævnte er blevet opdateret for at matche den tidligere adfærd.
- "git arkiv", især når det bruges med pathspec, gemt en tom mappe i dens output, selvom Git selv aldrig gør det. Dette er blevet rettet.
- API fejlfinding, der sker med at skubbe advarsler fra GCC.
- "git gc" forsøger at undgå at køre to forekomster på samme tid ved at læse og skrive pid / vært fra og til en låsfil; det plejede at bruge et forkert fscanf () format ved læsning, hvilket er blevet korrigeret.
- Testlinteren er blevet undervist, at vi ikke kan lide "echo -e".
- Kode cmp.std.c nitpick.
- "git beskriver - match" lært at tage flere mønstre i v2.13-serien, men funktionen ignorerede mønstrene efter den første og fungerede slet ikke. Dette er blevet rettet.
- "git cat-file --textconv & quot; Startede segcykulation for nylig, som er blevet korrigeret.
- Det indbyggede mønster til at detektere & quot; funktionshovedet & quot; for HTML matchede ikke ..elementer uden nogen attributter, som er blevet rettet.
- "git mailinfo" var løs i afkodning citeret printable og produceret skrald, når de to bogstaver efter ligestegnet ikke er hexadecimal. Dette er blevet rettet.
- Dokumentationen for '-X' for fusioner blev vildledende skrevet for at antyde, at "deres" eksisterer, hvilket ikke er tilfældet.
- Spell navnet på vores system som "Git" i output fra request-pull script.
- Retter for et håndfuldt hukommelsesadgangsproblem identificeret af valgrind.
- Backports en moralsk ækvivalent til 2015 retter sig til afstemningen emuleringen fra den upstream gnulib for at rette lejlighedsvis brud på HPE NonStop.
- I & quot; - format = ... & quot; mulighed for "git for-hver-ref" kommando (og dens venner, dvs. noteringsmåden for "git branch / tag"), "% (atom:)" (f.eks. "% (refname:)", "% (body:)" bruges til at fejlfinding. I stedet behandler dem som om tyktarmen og en tom streng, der følger den, ikke var der.
- Brugere med "color.ui = always" i deres konfiguration blev brudt af en nylig ændring, der lavede VVS-kommandoer til at være opmærksomme på dem, da patchen blev oprettet internt af "git add -p & quot; blev farvet (heh) og gjort ubrugelig. Dette er blevet rettet.
- "git-gren -M en b" mens der på en gren, der er helt uafhængig af enten gren a eller gren b misbrugede, da flere arbejdsplaner var i brug. Dette er blevet rettet.
- "git hurtig eksport" med -M / -C-option udstedt "kopi" instruktion på en sti, der samtidigt ændres, hvilket var forkert.
- Kontrolpostkommandoen "git fast-import & quot; har ikke skyllet opdateringer til refs og marks, medmindre der er lavet mindst én objekt siden sidste kontrolpunkt, som er blevet korrigeret, da disse ting kan ske uden at noget nyt objekt bliver skabt.
- Skripterne til at køre TravisCI er blevet omorganiseret, og så er en optimering for at undgå at bruge cykler på en gren, hvis tip er mærket, implementeret.
- "git hente: & quot; tillader et objektnavn på siden, når den anden side accepterer en sådan anmodning siden Git v2.5, men dokumentationen blev forladt.
- En regression i 2.11, der gjorde koden til at læse listen over alternative objektbutikker overskredet, er slutningen af strengen blevet rettet.
Hvad er nyt i version 2.15.1:
- En hjælperfunktion til at læse en enkelt linie i strbuf fejlagtigt udløst OOM-fejl ved EOF under visse betingelser, som er blevet rettet.
- Udover "cc: # cruft", "cc: a@dd.re.ss # cruft" blev lært at & quot; git send-email & quot; som en gyldig måde at fortælle om, at den også skal sende en CO2-kopi til i trailer-sektionen.
- Ret regression til "gitk - bisect" ved en nylig opdatering.
- I modsætning til & quot; git commit-tree & lt; fil & quot ;, & quot; git commit-tree -F file & quot; Passerede ikke indholdet af filen ordentligt og udfyldte i stedet en ufuldstændig linje i slutningen, hvis der eksisterer. Sidstnævnte er blevet opdateret for at matche den tidligere adfærd.
- "git arkiv", især når det bruges med pathspec, gemt en tom mappe i dens output, selvom Git selv aldrig gør det. Dette er blevet rettet.
- API fejlfinding, der sker med at skubbe advarsler fra GCC.
- "git gc" forsøger at undgå at køre to forekomster på samme tid ved at læse og skrive pid / vært fra og til en låsfil; det plejede at bruge et forkert fscanf () format ved læsning, hvilket er blevet korrigeret.
- Testlinteren er blevet undervist, at vi ikke kan lide "echo -e".
- Kode cmp.std.c nitpick.
- "git beskriver - match" lært at tage flere mønstre i v2.13-serien, men funktionen ignorerede mønstrene efter den første og fungerede slet ikke. Dette er blevet rettet.
- "git cat-file --textconv & quot; Startede segcykulation for nylig, som er blevet korrigeret.
- Det indbyggede mønster til at detektere & quot; funktionshovedet & quot; for HTML matchede ikke ..elementer uden nogen attributter, som er blevet rettet.
- "git mailinfo" var løs i afkodning citeret printable og produceret skrald, når de to bogstaver efter ligestegnet ikke er hexadecimal. Dette er blevet rettet.
- Dokumentationen for '-X' for fusioner blev vildledende skrevet for at antyde, at "deres" eksisterer, hvilket ikke er tilfældet.
- Spell navnet på vores system som "Git" i output fra request-pull script.
- Retter for et håndfuldt hukommelsesadgangsproblem identificeret af valgrind.
- Backports en moralsk ækvivalent til 2015 retter sig til afstemningen emuleringen fra den upstream gnulib for at rette lejlighedsvis brud på HPE NonStop.
- I & quot; - format = ... & quot; mulighed for "git for-hver-ref" kommando (og dens venner, dvs. noteringsmåden for "git branch / tag"), "% (atom:)" (f.eks. "% (refname:)", "% (body:)" bruges til at fejlfinding. I stedet behandler dem som om tyktarmen og en tom streng, der følger den, ikke var der.
- Brugere med "color.ui = always" i deres konfiguration blev brudt af en nylig ændring, der lavede VVS-kommandoer til at være opmærksomme på dem, da patchen blev oprettet internt af "git add -p & quot; blev farvet (heh) og gjort ubrugelig. Dette er blevet rettet.
- "git-gren -M en b" mens der på en gren, der er helt uafhængig af enten gren a eller gren b misbrugede, da flere arbejdsplaner var i brug. Dette er blevet rettet.
- "git hurtig eksport" med -M / -C-option udstedt "kopi" instruktion på en sti, der samtidigt ændres, hvilket var forkert.
- Kontrolpostkommandoen "git fast-import & quot; har ikke skyllet opdateringer til refs og marks, medmindre der er lavet mindst én objekt siden sidste kontrolpunkt, som er blevet korrigeret, da disse ting kan ske uden at noget nyt objekt bliver skabt.
- Skripterne til at køre TravisCI er blevet omorganiseret, og så er en optimering for at undgå at bruge cykler på en gren, hvis tip er mærket, implementeret.
- "git hente: & quot; tillader et objektnavn på siden, når den anden side accepterer en sådan anmodning siden Git v2.5, men dokumentationen blev forladt.
- En regression i 2.11, der gjorde koden til at læse listen over alternative objektbutikker overskredet, er slutningen af strengen blevet rettet.
Hvad er nyt i version 2.15.0:
- En hjælperfunktion til at læse en enkelt linie i strbuf fejlagtigt udløst OOM-fejl ved EOF under visse betingelser, som er blevet rettet.
- Udover "cc: # cruft", "cc: a@dd.re.ss # cruft" blev lært at & quot; git send-email & quot; som en gyldig måde at fortælle om, at den også skal sende en CO2-kopi til i trailer-sektionen.
- Ret regression til "gitk - bisect" ved en nylig opdatering.
- I modsætning til & quot; git commit-tree & lt; fil & quot ;, & quot; git commit-tree -F file & quot; Passerede ikke indholdet af filen ordentligt og udfyldte i stedet en ufuldstændig linje i slutningen, hvis der eksisterer. Sidstnævnte er blevet opdateret for at matche den tidligere adfærd.
- "git arkiv", især når det bruges med pathspec, gemt en tom mappe i dens output, selvom Git selv aldrig gør det. Dette er blevet rettet.
- API fejlfinding, der sker med at skubbe advarsler fra GCC.
- "git gc" forsøger at undgå at køre to forekomster på samme tid ved at læse og skrive pid / vært fra og til en låsfil; det plejede at bruge et forkert fscanf () format ved læsning, hvilket er blevet korrigeret.
- Testlinteren er blevet undervist, at vi ikke kan lide "echo -e".
- Kode cmp.std.c nitpick.
- "git beskriver - match" lært at tage flere mønstre i v2.13-serien, men funktionen ignorerede mønstrene efter den første og fungerede slet ikke. Dette er blevet rettet.
- "git cat-file --textconv & quot; Startede segcykulation for nylig, som er blevet korrigeret.
- Det indbyggede mønster til at detektere & quot; funktionshovedet & quot; for HTML matchede ikke ..elementer uden nogen attributter, som er blevet rettet.
- "git mailinfo" var løs i afkodning citeret printable og produceret skrald, når de to bogstaver efter ligestegnet ikke er hexadecimal. Dette er blevet rettet.
- Dokumentationen for '-X' for fusioner blev vildledende skrevet for at antyde, at "deres" eksisterer, hvilket ikke er tilfældet.
- Spell navnet på vores system som "Git" i output fra request-pull script.
- Retter for et håndfuldt hukommelsesadgangsproblem identificeret af valgrind.
- Backports en moralsk ækvivalent til 2015 retter sig til afstemningen emuleringen fra den upstream gnulib for at rette lejlighedsvis brud på HPE NonStop.
- I & quot; - format = ... & quot; mulighed for "git for-hver-ref" kommando (og dens venner, dvs. noteringsmåden for "git branch / tag"), "% (atom:)" (f.eks. "% (refname:)", "% (body:)" bruges til at fejlfinding. I stedet behandler dem som om tyktarmen og en tom streng, der følger den, ikke var der.
- Brugere med "color.ui = always" i deres konfiguration blev brudt af en nylig ændring, der lavede VVS-kommandoer til at være opmærksomme på dem, da patchen blev oprettet internt af "git add -p & quot; blev farvet (heh) og gjort ubrugelig. Dette er blevet rettet.
- "git-gren -M en b" mens der på en gren, der er helt uafhængig af enten gren a eller gren b misbrugede, da flere arbejdsplaner var i brug. Dette er blevet rettet.
- "git hurtig eksport" med -M / -C-option udstedt "kopi" instruktion på en sti, der samtidigt ændres, hvilket var forkert.
- Kontrolpostkommandoen "git fast-import & quot; har ikke skyllet opdateringer til refs og marks, medmindre der er lavet mindst én objekt siden sidste kontrolpunkt, som er blevet korrigeret, da disse ting kan ske uden at noget nyt objekt bliver skabt.
- Skripterne til at køre TravisCI er blevet omorganiseret, og så er en optimering for at undgå at bruge cykler på en gren, hvis tip er mærket, implementeret.
- "git hente: & quot; tillader et objektnavn på siden, når den anden side accepterer en sådan anmodning siden Git v2.5, men dokumentationen blev forladt.
- En regression i 2.11, der gjorde koden til at læse listen over alternative objektbutikker overskredet, er slutningen af strengen blevet rettet.
Hvad er nyt i version 2.14.1:
- Dette frigiver fremadrettede rettelser til & quot; ssh: //..." URL fra Git v2.7.6
Hvad er nyt i version 2.9.3:
- * En hjælperfunktion, der tager indholdet af et commitobjekt og finder sin emnelinje, ignorerede ikke ledende blanke linjer, som det almindeligvis gøres af andre kodepaths. Gør det ignorere ledende blanke linjer at matche.
- Git ved ikke, hvad indholdet i indekset skal være for en sti tilføjet med "git add -N" endnu, så "git grep - cached" skal ikke vise hits (eller vise mangel på hits med -L ) i en sådan vej, men den logik gælder ikke for "git grep", dvs. at søge i arbejdstræfilerne. Men det gjorde vi ved en fejltagelse, som er blevet korrigeret.
- "git rebase -i --autostash" gendannede ikke den automatisk stashed ændring, da operationen blev afbrudt.
- "git commit --amend --allow-empty-message -S" for en commit uden nogen beskedlegeme kunne have misidentificeret hvor overskriften på commit-objektet slutter.
- Flere mark-up opdateringer til typede strenge, der forventes bogstaveligt skrevet af slutbrugeren i skrifttypen med fast bredde.
- Vi har længe haft en in-code-kommentar, der sagde, at vores farvede output kun ville fungere, når vi bruger fprintf / fputs på Windows, hvilket ikke længere er tilfældet for de sidste par år.
- "gc.autoPackLimit" når den er sat til 1, bør ikke udløse en ompakning, når der kun er en pakke, men koden tælles dårligt og gjorde det.
- En del af "git am" havde en oddball hjælperfunktion, der kaldte ting udefra "hans" i modsætning til at kalde det, vi havde "vores", som ikke var kønsneutralt og også uforeneligt med resten af systemet, hvor Udendørs ting hedder "deres" i modsætning til "vores".
- Testrammen lærte en ny hjælper test_match_signal for at kontrollere en exit kode fra at blive dræbt af et forventet signal.
- "git blame -M" savnede en enkelt linje, der blev flyttet inden for filen.
- Løs nyligt introducerede kodepaths, der er involveret i parallelle submodule operationer, som gav op med at læse for tidligt og kunne have spildt CPU, mens de forsøgte at skrive under en hjørne tilfælde betingelse.
- "git grep -i" er blevet lært at folde sagen i ikke-ascii-adresser korrekt.
- En test, der betingelsesløst brugte "mktemp", lærte at kommandoen ikke nødvendigvis er tilgængelig overalt.
- "Git blame-fil" tillod linjens linjer i det ikke-udfyldte, ikke-indlæste indhold af "fil", der skal inspiceres, men det nægtede, da "fil" ikke blev vist i den aktuelle commit. Når "fil" blev oprettet ved at omdøbe en eksisterende fil (men ændringen er ikke blevet begået), var denne begrænsning unødigt stram.
- "git add -N dir / file & amp; git write tree" producerede et forkert træ, når der findes andre stier i samme mappe, der sorterer efter "fil".
- "git hent http: // bruger: pass @ host / repo ..." scrubbed brugerinfo-delen, men "git push" gjorde det ikke.
- En gammel gammel bug, der forårsagede "git diff - signore-space-at-eol" -fejl, er blevet rettet.
- "git notes merge" havde en kode for at se om en sti eksisterer (og mislykkes, hvis den gør det) og derefter åbne stien til skrivning (når den ikke gør det). Udskift det med åbent med O_EXCL.
- "git pack-objekter" og "git index-pack" opererer for det meste med off_t når man taler om offset af objekter i en pakkefil, men der var en håndfuld steder, der brugte "usignerede lange" for at holde den værdi, hvilket førte til til en utilsigtet afkortning.
- Den seneste opdatering til "git daemon" forsøger at aktivere hukommelsesniveauet KEEPALIVE, men når det hentes via inetd, er standardindgangsfilbeskrivelsen muligvis ikke nødvendigvis forbundet til en stikkontakt. Undertryk en ENOTSOCK-fejl fra setsockopt ().
- Seneste FreeBSD stoppede med at gøre perl tilgængelig på / usr / bin / perl; skift standard den indbyggede sti til / usr / local / bin / perl på ikke for gamle FreeBSD udgivelser.
- "git status" lærte at foreslå "fusion - abort" under en konfliktfletning, ligesom det allerede foreslår "rebase --abort" under en konfliktfase.
- .c / .h kilder er markeret som sådan i vores .gitattributes-fil, så "git diff -W" og venner ville fungere bedre.
- Eksisterende autoconf genereret test for behovet for at linke med pthread biblioteket kontrollerede ikke alle funktioner fra pthread biblioteker; Nylige FreeBSD har nogle funktioner i libc, men ikke andre, og vi fejlagtigt troede at linket med libc er nok, når det ikke er.
- Tillad http daemon tests i Travis CI test.
- Brugere af funktionen parse_options_concat () API skal tildele ekstra slots på forhånd og udfylde dem med OPT_END (), når de vil beslutte det sæt af understøttede muligheder dynamisk, hvilket gør koden fejlfattet og svært at læse. Dette er blevet korrigeret ved at justere API'en for at allokere og returnere en ny kopi af "struct option" array.
- Brugen af strbuf i "git rm" for at opbygge filnavn for at fjerne var en smule suboptimal, som er blevet rettet.
- "git commit - help" sagde "- no-verifiera" handler kun om at springe over forforbindelseshagen og undlod at sige at den også hoppede over commit-msg hook.
- "git merge" i Git v2.9 blev lært at forbyde at fusionere en uafhængig historielinje som standard, men det er netop den slags ting "--rejoin" -modellen for "git subtree" (i bidrag /) ønsker at gøre. "git subtree" er blevet lært at bruge "-allow-unrelated-histories" mulighed for at tilsidesætte standardværdien.
- Byggeproceduren for "git persistent-https" hjælper (i contrib /) er blevet opdateret, så den kan bygges med nyere versioner af Go.
- Der er en optimering brugt i "git diff $ treeA $ treeB" for at låne en allerede udchecket kopi i arbejdstræet, når det vides at være det samme som det blob, der sammenlignes, og forventer at åbne / mmap af sådan en fil er hurtigere end at læse den fra objektbutikken, hvilket indebærer opblæsning og anvendelse af delta. Dette skød dog i selv, når den udcheckede kopi skal gennemgå konverteringen til konvertering (inklusive det rene filter), som besejrer hele punktet for optimeringen. Optimeringen er blevet deaktiveret, når konverteringen er nødvendig.
- "git -c grep.patternType = udvidet log -basic-regexp" misbrugt, fordi den interne API til adgang til grep-maskinen ikke var designet godt.
- Windows-porten fejler nogle tests i t4130 på grund af den manglende inum i de returnerede værdier ved sin lstat (2) emulering.
- Tegnene i etiketten, der vises for tags / refs for forpligtelser i "gitweb" -udgaven, er nu helt undslippet for korrekt HTML-output.
- FreeBSD kan ligge, når den bliver spurgt mtime af en mappe, hvilket gjorde den usporede cache kode til at falde tilbage til en langsom sti, hvilket igen forårsagede test i t7063 at mislykkes, fordi det ønskede at verificere hurtigbanens opførsel.
- Squelch compiler advarsler for netmalloc (i kompatibel /) bibliotek.
- API-dokumentationen til hashmap var uklar, hvis hashmap_entry kan kasseres sikkert uden nogen anden overvejelse. Angiv, at det er sikkert at gøre det.
- Ikke-så-nylig omskrivning af "git am", der begyndte at foretage interne opkald i commit-maskinerne, havde en utilsigtet regression, idet det uanset hvor mange sekunder det tog at anvende mange patches, resulterede kommitterens tidsstempel for de deraf følgende forpligtelser var alle de samme.
- "git difftool ...", der startede i en undermappe, kunne ikke fortolke stierne i forhold til den pågældende mappe.
Hvad er nyt i version 2.9.1:
- Når "git daemon" køres uden - [init-] timeout specificeret, kan en forbindelse fra en klient, der lydløst går offline, forblive i lang tid og spilder ressourcer. Stikkontakten KEEPALIVE er blevet aktiveret for at tillade OS at bemærke sådanne fejlede forbindelser.
- Kommandoerne i `git log'-familien tager% C (auto) i en brugerdefineret formatstreng. Dette ændrede ubetinget farven på, ignorerer - ingen farve eller med --farve = auto, når udgangen ikke er forbundet til en tty; Dette blev rettet for at gøre formatet virkelig opføre sig som "auto".
- "git rev-list -count", hvis ganglængde er begrænset med "-n" mulighed fungerede ikke godt med optællingen optimeret til at se på bitmap indekset.
- "git show -W" (udvide hunks til at dække hele funktionen, afgrænset af linjer, der matcher "funcname" mønster) bruges til at vise hele filen, når en ændring tilføjede en hel funktion i slutningen af filen, hvilket er blevet rettet.
- Dokumentationssætet er blevet opdateret, så bogstavlige kommandoer, konfigurationsvariabler og miljøvariabler bliver konsekvent skrevet i skrifttype med fast bredde og fed på manualer.
- "git svn propset" underkommando, der blev tilføjet i 2,3 dage, er dokumenteret nu.
- Dokumentationen forsøger konsekvent at stave "GPG"; Når der henvises til det specifikke programnavn, bruges "gpg".
- "git reflog" stoppede ved at se en post, der betegner en grenskabelsesbegivenhed (også "ufødt"), hvilket gjorde det til at virke som om reflog blev afkortet.
- Den git-prompt scriptlet (i contrib /) var ikke venlig med dem, der bruger "set -u", som er blevet rettet.
- En kodepath, der brugte alloca (3) til at placere en ubundet mængde data på stakken, er blevet opdateret for at undgå at gøre det.
- "git opdateringsindeks --add --chmod = + x file" kan være brugbar som en escape luge, men ikke en venlig ting at tvinge til folk, der behøver at bruge det regelmæssigt. "git add --chmod = + x file" kan bruges i stedet.
- Byg forbedringer til gnome-keyring (i contrib /)
- "git status" plejede at sige "work directory", da det betød "work tree".
- Kommentarer om misbrug af FreeBSD-skall er blevet afklaret med versionsnummeret (9.x og før er brudt, nyere er OK).
- "git cherry-pick A" arbejdede på en ufødt gren, men "git cherry-pick A..B" did not.
- "git add -i / -p" lærte at ære diff.compactionHeuristic eksperimentelle knap, så brugeren kan arbejde på samme hunk split som "git diff" output.
- "log --graph --format =" lærte at "% & gt; | N" angiver bredden i forhold til terminalens venstre kant, ikke i forhold til området for at tegne tekst, der er til højre for forfædret -afsnit. Det accepterer nu også negativ N, som betyder, at kolonnegrænsen er i forhold til den højre grænse.
- Ejerreglen for det hukommelsesstykke, der indeholder referencer for at blive hentet i "git hente" var skruet, som er blevet renset.
- "git bisect" gør et internt opkald til "git diff-tree", når bisection finder skylden, men dette opkald initierede ikke datastrukturen for at overføre til diff-tree API korrekt.
- Formater af de forskellige data (og hvordan man validerer dem), hvor vi bruger GPG signatur er blevet dokumenteret.
- Fix en utilsigtet regression i v2.9, der bryder "klone -depth", der recurses ned til submodules ved at tvinge submodulerne til også at blive klonet omhyggeligt, hvilket antal server forekomster, der er hostet opstrøms for submodulerne, ikke er forberedt på.
- Fix unødigt affald i den idiomatiske brug af ': $ {VAR = default}' for at indstille standardværdien uden at lukke den i dobbelt citater.
- Nogle platformspecifikke kode havde ikke-ANSI strenge erklæringer af C-funktioner, der ikke tager nogen parametre, som er blevet korrigeret.
- Den interne kode, der bruges til at vise lokal tidszoneforskydning, er ikke klar til at håndtere tidsstempler ud over år 2100 og gav en falsk offsetværdi til den, der ringer op. Brug en mere gunstig udseende +0000 i stedet og lad "git log" gå i et sådant tilfælde i stedet for at afbryde.
- En af fire indkaldelser af readlink (1) i vores test suite er blevet omskrevet, så testen kan køre på systemer uden kommandoen (andre er i valgrind testramme og t9802).
- t / perf behov / usr / bin / time med GNU udvidelse; Indkaldelsen af den opdateres til "gtime" på Darwin.
- En fejl, der forårsagede "git p4", mens den kører under verbose mode for at rapportere stier, der udelades på grund af filformat forkert, er blevet rettet kommandoen sagde "ignorerer fil uden for præfiks" for stier, der er _inside _.
- Dokumentationen "Git help git" på øverste niveau fremhæver stadig dokumentationen, der er hostet ved det nu nedlagte Google-repository. Opdater det for at pege på https://git.github.io/htmldocs/git.html i stedet.
Hvad er nyt i version 2.9.0:
Nyt i GIT 2.8.1 (5. april 2016)
Hvad er nyt i version 2.8.1:
- "make rpmbuild" mål blev brudt som dets input, git.spec.in, blev ikke opdateret for at matche en fil, som den beskriver, der for nylig er omdøbt. Dette er blevet rettet.
Hvad er nyt i version 2.7.3:
- Traditionelt er testene, der prøver kommandoer, der arbejder på indholdet i arbejdstreet, navngivet med "worktree" i deres filnavne, men med den nylige tilføjelse af "git worktree" -kommandoen, hvis test også hedder samme, har den bliver sværere at fortælle dem fra hinanden. De traditionelle tests er blevet omdøbt til at bruge "work-tree" i stedet for at forsøge at differentiere dem.
- Mange kodeposter glemmer at kontrollere returværdien fra git_config_set (); Funktionen er lavet til at dø () for at sikre, at vi ikke fortsætter, når en konfigurationsvariabel er slået fejl.
- Behandling af fejl under skrivning til vores interne asynkrone proces er blevet mere robust, hvilket reducerer flakiness i vores test.
- "git show" HOVED: Foo [BAR] Baz '"fortolker ikke argumentet som en rev, dvs. objektet hedder stienavnet med jokertegn i en træobjekt.
- "git rev-parse -git-common-dir", der blev brugt i worktree-funktionen, misbrugt, når du kørte fra en undermappe.
- Kommandoen "v (iew)" af den interaktive "git am -i" kommando blev brudt i 2.6.0 tidsramme, da kommandoen blev omskrevet i C.
- "git merge-tree" bruges til at mishandle "begge sider tilføjet" konflikt med sin egen "oprette en falsk forfader fil, der har de fælles dele af, hvad begge sider har tilføjet og gøre en 3-vejs fletning" logik; Dette er blevet opdateret for at bruge den sædvanlige "3-vejs fusion med en tom blob som den falske fælles forfaderfil" -tilgang, der bruges i resten af systemet.
- Hukommelsesejerskabsreglen for fill_textconv () API, som var lidt vanskelig, er blevet dokumenteret lidt bedre.
- Dokumentationen angav ikke klart, at den "simple" tilstand nu er standard for "git push", når push.default konfiguration ikke er indstillet.
- Nylige versioner af GNU grep er pickier, når deres input indeholder vilkårlig binær data, som nogle af vores tests bruger. Omskriv testene for at undgå problemet.
- En hjælperfunktion "git submodule" bruger siden v2.7.0 til at liste de moduler, der matcher pathspec argumentet givet til dets underkommandoer (fx "submodule add") er blevet rettet.
- "git config-sektion.var-værdi" for at indstille en værdi i konfigurationsfilen for hver depot, fejlagtig, da den blev kørt uden for et depot, men ikke korrekt angivet.
- Koden til at læse pakkedataene ved hjælp af de forskydninger, der er gemt i pakke idx-filen, er blevet foretaget mere nøje, kontrollere datas gyldighed i idx'en.
Hvad er nyt i version 2.7.2:
- Lavt fladskæringsmaskiner er blevet lært at bruge linjestoppering ved CRLF, når der indsættes konfliktmarkører i fusionerede indhold, som selv er CRLF line termineret.
- "git worktree" havde en brudte kode, der forsøgte at automatisk afhjælpe mulig inkonsekvens, der resulterer fra slutbrugerne, der flytter et arbejdstegn til forskellige steder uden at fortælle Git (det originale lager skal opretholde backpointers til dets arbejdsbord, men "mv" drevet af slutbrugere, der ikke er bekendt med det faktum, vil naturligvis ikke tilpasse dem), som faktisk gjorde tingene værre, da de blev udløst.
- "Git push-force-lease" er blevet lært at rapportere, om push'et var nødvendigt for at tvinge (eller hurtigt fremsendt).
- Den emulerede "ja" kommando, der anvendes i vores testskrifter, er blevet tweaked for ikke at bruge for meget tid, der genererer unødvendig output, der ikke bruges, for at hjælpe dem, der tester på Windows, hvor det ikke ville stoppe, indtil det fylder rørbufferen på grund af til mangel på SIGPIPE.
- Vimdiff-backend for "git mergetool" er blevet tweaked for at arrangere og nummerere buffere i den rækkefølge, der svarer til forventningen fra flertallet af mennesker, der læser fra venstre mod højre og derefter øverst ned og tildele buffere 1 2 3 4 "mentalt" til lokal base fjernfletning vinduer baseret på den ordre.
- Dokumentationen for "git clean" er blevet korrigeret det nævnte at .git / modules / * fjernes ved at give to "-f", hvilket aldrig har været tilfældet.
- Stier, der er blevet fortalt indekset om med "add -N", er ikke helt i indekset, men et par kommandoer optrådte som om de allerede er skadelige.
- Indeholder også lille dokumentation og testopdateringer.
Hvad er nyt i version 2.6.4:
- Skriptet "configure" testede ikke for -lpread korrekt, hvilket forstyrrede nogle linkere.
- Tilføj support til at tale http / https over stikkontakter.
- Portabilitetsrettelse til Windows, som kan omskrive $ SHELL-variabel ved hjælp af ikke-POSIX-stier.
- Vi tillader nu konsekvent alle kroge at ignorere deres standardindgang, snarere end at have git klage over SIGPIPE.
- Fix shell citation i contrib script.
- Korrigering af testportabilitet for et emne i v2.6.1.
- Tillad tilde-ekspansion i nogle http config variabler.
- Giv et nyttigt specielt tilfælde "diff / show --word-diff-regex =." som et eksempel i dokumentationen.
- Fix til et hjørne tilfælde i filtergren.
- Git-p4 arbejde på et fritliggende hoved.
- Dokumentation afklaring for "check-ignore" uden "--verbose".
- Ligesom arbejdstræet bliver ryddet op, når brugeren annullerede indsendelsen i P4Submit.applyCommit (), rydder du op, hvis "p4 submit" mislykkes.
- At have en leftover .idx-fil uden tilsvarende .pack-fil i lageret gør ondt præstationer "git gc" lærte at beskære dem. Koden til at forberede den aktive træ side af midlertidig mappe til "dir-diff" -funktionen glemte, at symboliske links ikke behøver at blive kopieret (eller symlinket) til det midlertidige område, da koden allerede er specielle tilfælde og overskriver dem. Desuden var det forkert at forsøge at beregne objektets navn på målet for symbolsk link, hvilket måske ikke engang eksisterer eller kan være en mappe.
- Der var ingen måde at besejre en konfigureret rebase.autostash-variabel fra kommandolinjen, da "git rebase -no-autostash" manglede.
- Tillad "git-fortolkere" for at køre uden for et Git-depot.
- Fremstil den korrekte "beskidte" markør for shellprompts, selv når vi er på forældreløse eller ufødte grene.
- Nogle hjørnesager er blevet rettet i streng-matchning udført i "git status".
- Apples fælles krypto-implementering af SHA1_Update () tager ikke mere end 4 GB ad gangen, og vi har nu en kompileringstid for det.
Hvad er nyt i version 2.5.3:
- Funktionen for upræceret cache med fejl var buggy, når stier med et par niveauer af underkataloger er involveret.
- Nylige versioner af scriptet "git am" har en præstationsregression i "git am-skip" codepath, som ikke længere eksisterer i den indbyggede version på "master" fronten. Løs regressionen i den sidste scriptede version, der vises i 2.5.x vedligeholdelsesspor og ældre.
Hvad er nyt i version 2.4.6:
- "git fetch --depth =" og "git clone --depth =" udstedte en lav overførselsanmodning til en upload-pakke, der ikke understøtter kapaciteten.
- "git fsck" bruges til at ignorere manglende eller ugyldige objekter, der er optaget i reflog.
- Tcsh færdiggørelsen skriver en bash scriptlet, men det ville have mislykkedes for brugere med noclobber sæt.
- Nylige Mac OS X-opdateringer bryder logikken for at opdage, at maskinen er i vekselstrømmen i eksemplet pre-auto-gc script.
- "git format-patch -ignore-if-upstream A..B" kunne ikke lide at blive fodret tags som grænseforpligtelser.
- Indeholder også typofixer, dokumentationsopdateringer og trivial kode
- clean-ups.
Hvad er nyt i version 2.4.2:
- "git rev-list --objekter $ old --not --all" for at se, om alt, der kan nås fra $ old allerede er forbundet med de eksisterende refs, var meget ineffektivt.
- "hash-object -literally" introduceret i v2.2 var ikke parat til at tage et rigtig langt objekttype navn.
- "git rebase - quiet" var ikke helt stille, når der ikke er noget at gøre.
- Afslutningen af parameteren "log --decorate =" var forkert.
- "filialgren" beskadiget commit log-besked, der slutter med en ufuldstændig linie på platforme med nogle "sed" -implementeringer, der munger en sådan linje. Arbejd det rundt ved at undgå at bruge "sed".
- "git daemon" mangler at bygge fra kilden under NO_IPV6 konfiguration (regression i 2.4).
- "git stash pop / apply" glemte at sikre, at ikke bare det aktive træ er rent, men også indekset er rent. Sidstnævnte er vigtigt, da en stash-applikation kan konflikt, og indekset vil blive brugt til konfliktløsning.
- Vi har opgraderet $ GIT_EXEC_PATH, og stien "git" er installeret i (typisk "/ usr / bin") til $ PATH, når der påberåbes underprogrammer og kroge i næsten evighed, men den oprindelige brugstilstand, som sidstnævnte forsøgte at støtte, var semi -bogus (dvs. installer git til / opt / foo / git og kør det uden at have / opt / foo på $ PATH), og vigtigere er det blevet mindre og mindre relevant, da Git voksede mere almindeligt (dvs. brugerne ville have det på deres $ PATH). Stop med at udpege den sti, hvor "git" er installeret til brugerens $ PATH, da det ville forstyrre kommandosøgningsordren folk er afhængige af (f.eks. De kan ikke lide versioner af programmer, der ikke er relateret til Git in / usr / bin og vil gerne tilsidesætte dem ved at have forskellige i / usr / local / bin og have sidstnævnte katalog tidligere i deres $ PATH).
- Indeholder også typofixer, dokumentationsopdateringer og trivielle kodeoprydninger.
Kommentarer ikke fundet