Git è uno dei sistemi di controllo delle versioni distribuiti più diffusi, descritto dagli sviluppatori di tutto il mondo come il servizio VCS numero uno. Funziona solo dal terminale, ma diversi front-end sono disponibili per il download.
È un'applicazione di controllo di versione gratuita e open source in grado di gestire progetti grandi e piccoli con la massima efficienza e velocità. Il programma può essere facilmente descritto come piccolo, veloce e distribuito.
Opzioni della riga di comando
Il programma viene fornito con una manciata di comandi che possono essere facilmente ricordati da chiunque fin dall'inizio. Tutte le operazioni sono eseguite localmente ed è stato progettato per funzionare sul kernel Linux.
I comandi inclusi sono add, bisect, branch, checkout, clone, commit, diff, fetch, grep, init, log, merge, mv, pull, push, rebase, reset, rm, show, status e tag. Puoi facilmente imparare cosa fa ogni comando eseguendo il comando git --help da una finestra di terminale.
Caratteristiche a colpo d'occhio
Quando usi Git, gli utenti saranno in grado di aggiungere file, checkout di rami o percorsi, clonare repository, creare repository Git vuoti, unire più cronologie di sviluppo, visualizzare lo stato dell'albero di lavoro, registrare modifiche, nonché creare, elencare o elimina i rami.
Inoltre, l'applicazione consente agli utenti di visualizzare le modifiche tra commit e alberi di lavoro, linee di stampa che corrispondono a un modello, visualizzare i registri di commit, scaricare refs e oggetti, rinominare o spostare file, collegamenti simbolici e directory, aggiornare refs remoti e rimuovere file da un albero di lavoro.
Esistono vari front-end grafici
Anche se si tratta di un software a linea di comando, sono disponibili varie interfacce utente grafiche (GUI), tra cui git-cola, SmartGit, GitEye, ridge e gitg. Il progetto supera le utility SCM (Software Configuration Management), come CVS, Subversion, ClearCase e Perforce, avendo filiali locali a basso costo, flussi di lavoro multipli e aree di staging convenienti.
Linea di fondo
Riassumendo, Git è un sistema di controllo delle versioni gratuito che offre prestazioni fulminee, facile da imparare e con un ingombro ridotto. Con Git puoi cambiare il contesto senza attrito, linee di codice basate sui ruoli, flusso di lavoro basato su funzionalità e sperimentazione usa e getta.
Novità in questa versione:
- Una funzione di supporto per leggere un'intera riga intera in strbuf ha erroneamente attivato l'errore OOM in EOF in determinate condizioni, che è stato corretto.
- Oltre a & quot; cc: # cruft & quot ;, & quot; cc: a@dd.re.ss # cruft & quot; è stato insegnato a & quot; git send-email & quot; come un modo valido per dire che deve anche inviare una copia carbone nella sezione trailer.
- Correggi la regressione su & quot; gitk --bisect & quot; da un recente aggiornamento.
- Diversamente da & quot; git commit-tree & lt; file & quot ;, & quot; git commit-tree -F file & quot; non ha passato il contenuto del file verbatim e invece ha completato una riga incompleta alla fine, se esiste. Quest'ultimo è stato aggiornato per corrispondere al comportamento del precedente.
- & quot; git archive & quot ;, specialmente quando usato con pathspec, memorizza una directory vuota nel suo output, anche se Git stesso non lo fa mai. Questo è stato corretto.
- Errore dell'API a prova di errore che si verifica anche per eliminare gli avvisi da GCC.
- & quot; git gc & quot; cerca di evitare di eseguire due istanze contemporaneamente leggendo e scrivendo pid / host da e verso un file di blocco; usava usare un formato fscanf () errato durante la lettura, che è stato corretto.
- È stato insegnato al test linter che non ci piace & quot; echo -e & quot;.
- Codice cmp.std.c nitpick.
- & quot; git descrive --match & quot; ho imparato a prendere più schemi nella serie v2.13, ma la funzione ha ignorato i pattern dopo il primo e non ha funzionato affatto. Questo è stato corretto.
- & quot; git cat-file --textconv & quot; ha iniziato la segfaulting di recente, che è stata corretta.
- Il pattern incorporato per rilevare l'intestazione & quot; & quot; per HTML non corrisponde a .. elementi senza attributi, che è stato corretto.
- & quot; git mailinfo & quot; era sciolto in decodifica citabile stampabile e prodotto spazzatura quando le due lettere dopo il segno di uguale non sono esadecimali. Questo è stato corretto.
- La documentazione di "-X" per le unioni è stata scritta in modo fuorviante per suggerire che & quot; -s loro & quot; esiste, il che non è il caso.
- Scrivi il nome del nostro sistema come & quot; Git & quot; nell'output dallo script request-pull.
- Correzioni per alcuni problemi di accesso alla memoria identificati da valgrind.
- Backports un equivalente morale del 2015 risolvono l'emulazione del sondaggio dal Gnulib upstream per correggere rotture occasionali su HP NonStop.
- Nel & quot; - format = ... & quot; opzione del & quot; git for-each-ref & quot; comando (e i suoi amici, cioè la modalità di quotazione di & quot; git branch / tag & quot;), & quot;% (atom:) & quot; (ad es. & quot;% (refname:) & quot ;, & quot;% (body:) & quot; utilizzato per l'errore. Invece, trattali come se i due punti e una stringa vuota che segue non ci fossero.
- Utenti con & quot; color.ui = always & quot; nella loro configurazione sono stati interrotti da una recente modifica che ha fatto in modo che i comandi idraulici prestassero attenzione a loro come patch creata internamente da & quot; git add -p & quot; erano colorati (heh) e resi inutilizzabili. Questo è stato corretto.
- & quot; git branch -M a b & quot; mentre su un ramo che non ha alcun rapporto con il ramo a o il ramo b si è comportato in modo anomalo quando era in uso più alberi di lavoro. Questo è stato corretto.
- & quot; git fast-export & quot; con opzione -M / -C emessa & quot; copia & quot; istruzioni su un percorso che viene modificato contemporaneamente, il che non era corretto.
- Il comando checkpoint & quot; git fast-import & quot; non ha scaricato gli aggiornamenti di refs e marks a meno che non sia stato creato almeno un oggetto dall'ultimo checkpoint, che è stato corretto, poiché queste cose possono accadere senza che alcun nuovo oggetto venga creato.
- Gli script per guidare TravisCI sono stati riorganizzati e quindi ottimizzati per evitare cicli di spesa su un ramo il cui tip è stato taggato.
- & quot; git fetch: & quot; consente un nome di oggetto sul lato quando l'altro lato accetta tale richiesta da Git v2.5, ma la documentazione è stata lasciata viziata.
- È stata corretta una regressione in 2.11 che ha reso corretto il codice per leggere l'elenco di archivi di oggetti alternativi che superano la fine della stringa.
Novità nella versione 2.15.1:
- Una funzione di supporto per leggere un'intera riga intera in strbuf ha erroneamente attivato l'errore OOM in EOF in determinate condizioni, che è stato corretto.
- Oltre a & quot; cc: # cruft & quot ;, & quot; cc: a@dd.re.ss # cruft & quot; è stato insegnato a & quot; git send-email & quot; come un modo valido per dire che deve anche inviare una copia carbone nella sezione trailer.
- Correggi la regressione su & quot; gitk --bisect & quot; da un recente aggiornamento.
- Diversamente da & quot; git commit-tree & lt; file & quot ;, & quot; git commit-tree -F file & quot; non ha passato il contenuto del file verbatim e invece ha completato una riga incompleta alla fine, se esiste. Quest'ultimo è stato aggiornato per corrispondere al comportamento del precedente.
- & quot; git archive & quot ;, specialmente quando usato con pathspec, memorizza una directory vuota nel suo output, anche se Git stesso non lo fa mai. Questo è stato corretto.
- Errore dell'API a prova di errore che si verifica anche per eliminare gli avvisi da GCC.
- & quot; git gc & quot; cerca di evitare di eseguire due istanze contemporaneamente leggendo e scrivendo pid / host da e verso un file di blocco; usava usare un formato fscanf () errato durante la lettura, che è stato corretto.
- È stato insegnato al test linter che non ci piace & quot; echo -e & quot;.
- Codice cmp.std.c nitpick.
- & quot; git descrive --match & quot; ho imparato a prendere più schemi nella serie v2.13, ma la funzione ha ignorato i pattern dopo il primo e non ha funzionato affatto. Questo è stato corretto.
- & quot; git cat-file --textconv & quot; ha iniziato la segfaulting di recente, che è stata corretta.
- Il pattern incorporato per rilevare l'intestazione & quot; & quot; per HTML non corrisponde a .. elementi senza attributi, che è stato corretto.
- & quot; git mailinfo & quot; era sciolto in decodifica citabile stampabile e prodotto spazzatura quando le due lettere dopo il segno di uguale non sono esadecimali. Questo è stato corretto.
- La documentazione di "-X" per le unioni è stata scritta in modo fuorviante per suggerire che & quot; -s loro & quot; esiste, il che non è il caso.
- Scrivi il nome del nostro sistema come & quot; Git & quot; nell'output dallo script request-pull.
- Correzioni per alcuni problemi di accesso alla memoria identificati da valgrind.
- Backports un equivalente morale del 2015 risolvono l'emulazione del sondaggio dal Gnulib upstream per correggere rotture occasionali su HP NonStop.
- Nel & quot; - format = ... & quot; opzione del & quot; git for-each-ref & quot; comando (e i suoi amici, cioè la modalità di quotazione di & quot; git branch / tag & quot;), & quot;% (atom:) & quot; (ad es. & quot;% (refname:) & quot ;, & quot;% (body:) & quot; utilizzato per l'errore. Invece, trattali come se i due punti e una stringa vuota che segue non ci fossero.
- Utenti con & quot; color.ui = always & quot; nella loro configurazione sono stati interrotti da una recente modifica che ha fatto in modo che i comandi idraulici prestassero attenzione a loro come patch creata internamente da & quot; git add -p & quot; erano colorati (heh) e resi inutilizzabili. Questo è stato corretto.
- & quot; git branch -M a b & quot; mentre su un ramo che non ha alcun rapporto con il ramo a o il ramo b si è comportato in modo anomalo quando era in uso più alberi di lavoro. Questo è stato corretto.
- & quot; git fast-export & quot; con opzione -M / -C emessa & quot; copia & quot; istruzioni su un percorso che viene modificato contemporaneamente, il che non era corretto.
- Il comando checkpoint & quot; git fast-import & quot; non ha scaricato gli aggiornamenti di refs e marks a meno che non sia stato creato almeno un oggetto dall'ultimo checkpoint, che è stato corretto, poiché queste cose possono accadere senza che alcun nuovo oggetto venga creato.
- Gli script per guidare TravisCI sono stati riorganizzati e quindi ottimizzati per evitare cicli di spesa su un ramo il cui tip è stato taggato.
- & quot; git fetch: & quot; consente un nome di oggetto sul lato quando l'altro lato accetta tale richiesta da Git v2.5, ma la documentazione è stata lasciata viziata.
- È stata corretta una regressione in 2.11 che ha reso corretto il codice per leggere l'elenco di archivi di oggetti alternativi che superano la fine della stringa.
Novità nella versione 2.15.0:
- Una funzione di supporto per leggere un'intera riga intera in strbuf ha erroneamente attivato l'errore OOM in EOF in determinate condizioni, che è stato corretto.
- Oltre a & quot; cc: # cruft & quot ;, & quot; cc: a@dd.re.ss # cruft & quot; è stato insegnato a & quot; git send-email & quot; come un modo valido per dire che deve anche inviare una copia carbone nella sezione trailer.
- Correggi la regressione su & quot; gitk --bisect & quot; da un recente aggiornamento.
- Diversamente da & quot; git commit-tree & lt; file & quot ;, & quot; git commit-tree -F file & quot; non ha passato il contenuto del file verbatim e invece ha completato una riga incompleta alla fine, se esiste. Quest'ultimo è stato aggiornato per corrispondere al comportamento del precedente.
- & quot; git archive & quot ;, specialmente quando usato con pathspec, memorizza una directory vuota nel suo output, anche se Git stesso non lo fa mai. Questo è stato corretto.
- Errore dell'API a prova di errore che si verifica anche per eliminare gli avvisi da GCC.
- & quot; git gc & quot; cerca di evitare di eseguire due istanze contemporaneamente leggendo e scrivendo pid / host da e verso un file di blocco; usava usare un formato fscanf () errato durante la lettura, che è stato corretto.
- È stato insegnato al test linter che non ci piace & quot; echo -e & quot;.
- Codice cmp.std.c nitpick.
- & quot; git descrive --match & quot; ho imparato a prendere più schemi nella serie v2.13, ma la funzione ha ignorato i pattern dopo il primo e non ha funzionato affatto. Questo è stato corretto.
- & quot; git cat-file --textconv & quot; ha iniziato la segfaulting di recente, che è stata corretta.
- Il pattern incorporato per rilevare l'intestazione & quot; & quot; per HTML non corrisponde a .. elementi senza attributi, che è stato corretto.
- & quot; git mailinfo & quot; era sciolto in decodifica citabile stampabile e prodotto spazzatura quando le due lettere dopo il segno di uguale non sono esadecimali. Questo è stato corretto.
- La documentazione di "-X" per le unioni è stata scritta in modo fuorviante per suggerire che & quot; -s loro & quot; esiste, il che non è il caso.
- Scrivi il nome del nostro sistema come & quot; Git & quot; nell'output dallo script request-pull.
- Correzioni per alcuni problemi di accesso alla memoria identificati da valgrind.
- Backports un equivalente morale del 2015 risolvono l'emulazione del sondaggio dal Gnulib upstream per correggere rotture occasionali su HP NonStop.
- Nel & quot; - format = ... & quot; opzione del & quot; git for-each-ref & quot; comando (e i suoi amici, cioè la modalità di quotazione di & quot; git branch / tag & quot;), & quot;% (atom:) & quot; (ad es. & quot;% (refname:) & quot ;, & quot;% (body:) & quot; utilizzato per l'errore. Invece, trattali come se i due punti e una stringa vuota che segue non ci fossero.
- Utenti con & quot; color.ui = always & quot; nella loro configurazione sono stati interrotti da una recente modifica che ha fatto in modo che i comandi idraulici prestassero attenzione a loro come patch creata internamente da & quot; git add -p & quot; erano colorati (heh) e resi inutilizzabili. Questo è stato corretto.
- & quot; git branch -M a b & quot; mentre su un ramo che non ha alcun rapporto con il ramo a o il ramo b si è comportato in modo anomalo quando era in uso più alberi di lavoro. Questo è stato corretto.
- & quot; git fast-export & quot; con opzione -M / -C emessa & quot; copia & quot; istruzioni su un percorso che viene modificato contemporaneamente, il che non era corretto.
- Il comando checkpoint & quot; git fast-import & quot; non ha scaricato gli aggiornamenti di refs e marks a meno che non sia stato creato almeno un oggetto dall'ultimo checkpoint, che è stato corretto, poiché queste cose possono accadere senza che alcun nuovo oggetto venga creato.
- Gli script per guidare TravisCI sono stati riorganizzati e quindi ottimizzati per evitare cicli di spesa su un ramo il cui tip è stato taggato.
- & quot; git fetch: & quot; consente un nome di oggetto sul lato quando l'altro lato accetta tale richiesta da Git v2.5, ma la documentazione è stata lasciata viziata.
- È stata corretta una regressione in 2.11 che ha reso corretto il codice per leggere l'elenco di archivi di oggetti alternativi che superano la fine della stringa.
Novità nella versione 2.14.1:
- Questa versione inoltra la correzione per & quot; ssh: //..." URL da Git v2.7.6
Novità nella versione 2.9.3:
- * Una funzione di supporto che prende il contenuto di un oggetto commit e trova la sua riga dell'oggetto non ha ignorato le prime righe vuote, come avviene comunemente con altri codepath. Fai in modo che ignori le prime righe vuote corrispondenti.
- Git non sa quale dovrebbe essere il contenuto dell'indice per un percorso aggiunto con "git add -N" ancora, quindi "git grep --cached" non dovrebbe mostrare hit (o mostrare mancanza di hit, con -L ) in tale percorso, ma tale logica non si applica a "git grep", ovvero alla ricerca nei file dell'albero di lavoro. Ma lo abbiamo fatto per errore, che è stato corretto.
- "git rebase -i --autostash" non ha ripristinato la modifica auto-stash quando l'operazione è stata interrotta.
- "git commit --amend --allow-empty-message -S" per un commit senza che nessun corpo del messaggio possa erroneamente identificato dove finisce l'intestazione dell'oggetto commit.
- Altri aggiornamenti di markup per le stringhe di caratteri tipografici che devono essere letteralmente digitati dall'utente finale in caratteri a larghezza fissa.
- Per molto tempo abbiamo fatto un commento nel codice che diceva che il nostro output colorato funzionava solo quando usavamo fprintf / fputs su Windows, cosa che non succede più negli ultimi anni.
- "gc.autoPackLimit" se impostato su 1 non dovrebbe attivare un repacking quando c'è solo un pacchetto, ma il codice ha contato male e lo ha fatto.
- Una parte di "git am" aveva una strana funzione di aiuto che chiamava roba da "suo" al contrario di chiamare ciò che abbiamo "nostro", che non era neutrale rispetto al genere e anche incoerente con il resto del sistema dove roba esterna è usualmente chiamata "loro" in contrasto con "la nostra".
- Il framework di test ha appreso un nuovo helper test_match_signal per controllare che un codice di uscita venga ucciso da un segnale previsto.
- "git blame -M" ha perso una singola riga che è stata spostata all'interno del file.
- Correggi i codepath introdotti di recente che sono coinvolti in operazioni di sottomodulo paralleli, che hanno abbandonato la lettura troppo presto e potrebbero aver sprecato CPU durante il tentativo di scrivere in una condizione di caso d'angolo.
- "git grep -i" è stato insegnato a piegare le maiuscole nelle locazioni non-ascii correttamente.
- Un test che ha utilizzato incondizionatamente "mktemp" ha appreso che il comando non è necessariamente disponibile ovunque.
- "git blame file" ha permesso di controllare la linea di linee nel contenuto non modificato e non aggiunto di "file", ma si è rifiutata quando "file" non era presente nel commit corrente. Quando "file" è stato creato rinominando un file esistente (ma la modifica non è stata ancora eseguita), questa restrizione era inutilmente tesa.
- "git add -N dir / file & amp; git write-tree" ha prodotto un albero errato quando ci sono altri percorsi nella stessa directory che ordina dopo "file".
- "git fetch http: // utente: pass @ host / repos ..." scrubbed la parte userinfo, ma "git push" no.
- È stato corretto un bug vecchio di vecchia data che causava il malfunzionamento di "git diff -ignore-space-at-eol".
- "git notes merge" aveva un codice per vedere se esiste un percorso (e fallisce se lo fa) e poi apre il percorso per scrivere (quando non lo fa). Sostituiscilo con aperto con O_EXCL.
- "git pack-objects" e "git index-pack" funzionano principalmente con off_t quando si parla dell'offset di oggetti in un file pack, ma c'erano una manciata di posti che utilizzavano "unsigned long" per contenere quel valore, che portava a un troncamento non voluto.
- Il recente aggiornamento a "git daemon" tenta di abilitare KEEPALIVE a livello di socket, ma quando viene generato tramite inetd, il descrittore di file di input standard potrebbe non essere necessariamente connesso a un socket. Elimina un errore ENOTSOCK da setsockopt ().
- Free FreeBSD ha smesso di rendere disponibile perl in / usr / bin / perl; cambia il percorso predefinito in / usr / local / bin / perl su versioni di FreeBSD non troppo antiche.
- "stato git" ha imparato a suggerire "unione --abort" durante un'unione conflittuale, proprio come già suggerisce "rebase --abort" durante un rebase in conflitto.
- I sorgenti .c / .h sono contrassegnati come tali nel nostro file .gitattributes in modo che "git diff -W" e gli amici funzionino meglio.
- Il test esistente generato da autoconf per la necessità di collegarsi con la libreria pthread non ha verificato tutte le funzioni dalle librerie pthread; recenti FreeBSD ha alcune funzioni in libc ma non in altri, e abbiamo erroneamente pensato che il collegamento con libc sia sufficiente quando non lo è.
- Abilita i test del daemon http nei test di CI di Travis.
- Gli utenti della funzione API parse_options_concat () devono allocare in anticipo spazi extra e riempirli con OPT_END () quando vogliono decidere il set di opzioni supportate dinamicamente, il che rende il codice soggetto a errori e difficile da leggere. Questo è stato corretto modificando l'API per allocare e restituire una nuova copia della matrice "struct option".
- L'uso di strbuf in "git rm" per creare il nome del file da rimuovere era un po 'sub-ottimale, che è stato corretto.
- "git commit --help" ha detto "--no-verify" sta solo saltando il gancio di pre-commit e non è stato possibile dire che ha saltato anche il hook di commit-msg.
- "git merge" in Git v2.9 è stato insegnato a vietare la fusione di righe di storia non correlate per impostazione predefinita, ma questo è esattamente il tipo di cosa la modalità "--rejoin" di "git subtree" (in contrib /) vuole fare. "git subtree" è stato insegnato a utilizzare l'opzione "--allow-non -relrelative-histories" per sovrascrivere il valore predefinito.
- La procedura di compilazione per l'helper "git persistent-https" (in contrib /) è stata aggiornata in modo che possa essere creata con versioni più recenti di Go.
- Esiste un'ottimizzazione usata in "git diff $ treeA $ treeB" per prendere in prestito una copia già archiviata nell'albero di lavoro quando è noto che è uguale al blob che viene confrontato, aspettandosi che apri / mmap di tale un file è più veloce di leggerlo dall'archivio oggetti, che comporta l'inflazione e l'applicazione delta. Questo tuttavia ha preso il via anche quando la copia ritirata deve passare attraverso la conversione da convertire a git (incluso il filtro pulito), che sconfigge l'intero punto dell'ottimizzazione. L'ottimizzazione è stata disabilitata quando è necessaria la conversione.
- "git -c grep.patternType = log esteso --basic-regexp" errato perché l'API interna per accedere al meccanismo grep non è stata progettata bene.
- La porta di Windows stava fallendo alcuni test in t4130, a causa della mancanza di inum nei valori restituiti dalla sua emulazione lstat (2).
- I caratteri nell'etichetta mostrata per i tag / refs per i commit nell'output di "gitweb" ora sono debitamente escapati per l'output HTML corretto.
- FreeBSD può mentire quando viene richiesto mtime di una directory, che ha fatto in modo che il codice della cache non tracciato ricada su un percorso lento, che a sua volta ha causato errori in t7063 perché voleva verificare il comportamento del percorso veloce.
- Avviso del compilatore Squelch per la libreria netmalloc (in compat /).
- La documentazione dell'API per hashmap non era chiara se hashmap_entry può essere tranquillamente eliminato senza altre considerazioni. Dichiara che è sicuro farlo.
- La riscrittura non così recente di "git am" che ha iniziato a fare chiamate interne nel macchinario del commit ha avuto una regressione involontaria, in quanto non importa quanti secondi ci sono voluti per applicare molte patch, il risultante timestamp del commit per i commit risultanti erano tutti uguali.
- "git difftool ..." avviato in una sottodirectory non è riuscito a interpretare i percorsi relativi a quella directory, che è stato corretto.
Novità della versione 2.9.1:
- Quando "git daemon" viene eseguito senza - [init-] timeout specificato, una connessione da un client che passa automaticamente in modalità non in linea può rimanere inutilizzata per un lungo periodo, sprecando risorse. KEEPALIVE è stato abilitato per consentire al sistema operativo di notare tali connessioni fallite.
- I comandi nella famiglia `git log` prendono% C (auto) in una stringa di formato personalizzata. Questo ha incondizionatamente attivato il colore, ignorando --no-color o con --color = auto quando l'output non è connesso a un tty; questo è stato corretto per far sì che il formato si comportasse veramente come "auto".
- "git rev-list --count" il cui walk-length è limitato con l'opzione "-n" non ha funzionato bene con il conteggio ottimizzato per esaminare l'indice bitmap.
- "git show -W" (estendi gli hunks per coprire l'intera funzione, delimitata da linee che corrispondono al pattern "funcname") utilizzato per mostrare l'intero file quando una modifica ha aggiunto un'intera funzione alla fine del file, che è stato corretto.
- Il set di documentazione è stato aggiornato in modo che i comandi letterali, le variabili di configurazione e le variabili di ambiente siano costantemente composte in caratteri a larghezza fissa e in grassetto nelle pagine di testo.
- "git svn propset" sottocomando che è stato aggiunto in 2.3 giorni è ora documentato.
- La documentazione prova a scrivere in modo coerente "GPG"; quando si fa riferimento al nome del programma specifico, viene utilizzato "gpg".
- "git reflog" si è fermato dopo aver visto una voce che denota un evento di creazione di un ramo (noto anche come "unborn"), che lo fa apparire come se il reflog fosse troncato.
- Lo scriptlet git-prompt (in contrib /) non era amichevole con chi usa "set -u", che è stato corretto.
- Un codepath che ha utilizzato alloca (3) per posizionare una quantità illimitata di dati nello stack è stato aggiornato per evitare di farlo.
- "git update-index --add --chmod = + x file" può essere utilizzabile come escape hatch, ma non è una cosa amichevole da forzare per le persone che hanno bisogno di usarlo regolarmente. "git add --chmod = + x file" può essere usato invece.
- Costruisci miglioramenti per gnome-keyring (in contrib /)
- "git status" era usato per dire "directory di lavoro" quando significava "albero di lavoro".
- I commenti sul comportamento anomalo delle shell di FreeBSD sono stati chiariti con il numero di versione (9.xe prima sono rotti, quelli più recenti sono OK).
- "git cherry-pick A" ha funzionato su un ramo non ancora nato, ma "git cherry-pick A..B" no.
- "git add -i / -p" imparato ad onorare la manopola sperimentale diff.compactionHeuristic, in modo che l'utente possa lavorare sullo stesso split di hunk di "git diff".
- "log --graph --format =" ho appreso che "% & gt; | (N)" specifica la larghezza relativa al bordo sinistro del terminale, non relativa all'area per disegnare il testo che si trova alla destra dell'ascendenza -la sezione grafica. Ora accetta anche N negativo, il che significa che il limite della colonna è relativo al bordo destro.
- La regola di proprietà per il pezzo di memoria che contiene i riferimenti da recuperare in "git fetch" era fasulla, che è stata ripulita.
- "git bisect" effettua una chiamata interna a "git diff-tree" quando la bisezione trova il colpevole, ma questa chiamata non inizializza la struttura dei dati per passare correttamente all'API del diff-tree.
- I formati dei vari dati (e come convalidarli) in cui utilizziamo la firma GPG sono stati documentati.
- Correzione di una regressione non voluta nella v2.9 che interrompe "clone - profondità" che ricorre ai sottomoduli forzando i sottomoduli a essere clonati superficialmente, per cui non sono preparate molte istanze server che ospitano l'upstream dei sottomoduli.
- Correzione inutilmente inutile nell'uso idiomatico di ': $ {VAR = default}' per impostare il valore predefinito, senza racchiuderlo tra virgolette.
- Alcuni codici specifici per piattaforma avevano dichiarazioni rigide non ANSI di funzioni C che non prendevano alcun parametro, che è stato corretto.
- Il codice interno utilizzato per mostrare l'offset del fuso orario locale non è preparato per gestire i timestamp oltre l'anno 2100 e ha fornito un valore di offset fittizio al chiamante. Usa invece un +0000 benigno e lascia che "git log" vada in tal caso, invece di interrompere.
- Una delle quattro chiamate di readlink (1) nella nostra suite di test è stata riscritta in modo che il test possa essere eseguito su sistemi senza il comando (altri sono in framework test valgrind e t9802).
- t / perf ha bisogno di / usr / bin / time con estensione GNU; l'invocazione di questa viene aggiornata a "gtime" su Darwin.
- È stato corretto un bug che causava "git p4" mentre era in esecuzione in modalità dettagliata per segnalare percorsi omessi dovuti al prefisso di ramo in modo errato; il comando diceva "Ignora file al di fuori del prefisso" per i percorsi che sono _inside _.
- La documentazione di livello superiore "git help git" indicava ancora il set di documentazione ospitato nel repository google-code ormai defunto. Aggiornare per indicare invece https://git.github.io/htmldocs/git.html.
Novità della versione 2.9.0:
Novità in GIT 2.8.1 (5 aprile 2016)
Novità della versione 2.8.1:
- "make rpmbuild" La destinazione è stata interrotta poiché il suo input, git.spec.in, non è stato aggiornato per corrispondere a un file che descrive che è stato rinominato di recente. Questo è stato corretto.
Novità della versione 2.7.3:
- Tradizionalmente, i test che provano i comandi che funzionano sui contenuti nell'albero di lavoro sono stati nominati con "worktree" nei loro nomi di file, ma con la recente aggiunta del sottocomando "git worktree", i cui test sono anche chiamati in modo simile, ha diventa più difficile distinguerli. I test tradizionali sono stati rinominati per utilizzare "albero di lavoro" nel tentativo di differenziarli.
- Molti codepath dimenticano di controllare il valore di ritorno da git_config_set (); la funzione è fatta su die () per essere sicuro di non procedere quando si imposta una variabile di configurazione fallita.
- La gestione degli errori durante la scrittura nel nostro processo asincrono interno è stata resa più solida, il che riduce la sfaldatura nei nostri test.
- "git show" HEAD: Foo [BAR] Baz "" non ha interpretato l'argomento come rev, ovvero l'oggetto denominato dal percorso con caratteri jolly in un oggetto ad albero.
- "git rev-parse --git-common-dir" utilizzato nella funzione worktree mal eseguito quando viene eseguito da una sottodirectory.
- Il sottocomando "v (iew)" del comando interattivo "git am -i" è stato interrotto in 2.6.0 timeframe quando il comando è stato riscritto in C.
- "git merge-tree" usato per gestire in modo errato il conflitto "entrambi i lati aggiunti" con il proprio "creare un file di antenato falso che abbia le parti comuni di quella che entrambe le parti hanno aggiunto e faccia una logica di unione a 3 vie"; questo è stato aggiornato per usare il solito approccio "unione a 3 vie con un blob vuoto come il falso comune antenato" utilizzato nel resto del sistema.
- La regola di proprietà della memoria dell'API fill_textconv (), che era un po 'complicata, è stata documentata un po' meglio.
- La documentazione non indicava chiaramente che la modalità 'semplice' ora è l'impostazione predefinita per "git push" quando la configurazione push.default non è impostata.
- Le versioni recenti di GNU grep sono più selettive quando il loro input contiene dati binari arbitrari, che alcuni dei nostri test utilizzano. Riscrivi i test per eludere il problema.
- Una funzione helper "git submodule" usa sin dalla versione 2.7.0 per elencare i moduli che corrispondono all'argomento pathspec dato ai suoi sottocomandi (ad esempio "submodule add") è stato corretto.
- "git config section.var value" per impostare un valore nel file di configurazione per repository non riuscito quando è stato eseguito all'esterno di qualsiasi repository, ma non ha specificato correttamente il motivo.
- Il codice per leggere i dati del pacchetto utilizzando gli offset memorizzati nel file idx del pacchetto è stato controllato con maggiore attenzione per verificare la validità dei dati nell'idx.
Novità nella versione 2.7.2:
- Il macchinario di fusione di basso livello è stato insegnato a utilizzare la terminazione di riga CRLF quando inserisce marcatori di conflitto in contenuti uniti che sono essi stessi CRLF terminati in linea.
- "git worktree" aveva un codice non funzionante che tentava di correggere automaticamente la possibile incoerenza risultante dagli utenti finali che spostavano un albero di lavoro in luoghi diversi senza dire a Git (il repository originale deve mantenere i backpointers alle sue workoff, ma "mv" gestito da utenti finali che non hanno familiarità con questo fatto ovviamente non li modificherà), il che ha reso le cose peggiori quando attivato.
- "git push --force-with-lease" è stato insegnato a segnalare se la spinta è necessaria per forzare (o inoltrare rapidamente).
- Il comando "sì" emulato utilizzato nei nostri script di test è stato ottimizzato per non sprecare troppo tempo a generare output non necessari che non vengono utilizzati, per aiutare chi esegue il test su Windows dove non si fermerà fino a riempire il buffer di pipe. a mancanza di SIGPIPE.
- Il backend vimdiff per "git mergetool" è stato ottimizzato per organizzare e numerare i buffer nell'ordine che corrisponderebbe alle aspettative della maggioranza delle persone che leggono da sinistra a destra, quindi dall'alto verso il basso e assegnare i buffer 1 2 3 4 "mentalmente" alle finestre di unione remote basate sulla base locale in base a tale ordine.
- La documentazione di "git clean" è stata corretta; ha menzionato che .git / modules / * vengono rimossi dando due "-f", il che non è mai stato il caso.
- I percorsi a cui è stato detto l'indice con "add -N" non sono ancora presenti nell'indice, ma alcuni comandi si comportano come se fossero già dannosi.
- Include anche una documentazione minuscola e aggiornamenti di test.
Novità della versione 2.6.4:
- Lo script "configure" non ha testato correttamente -lpthread, il che ha sconvolto alcuni linker.
- Aggiungi il supporto per parlare del proxy http / https over socks.
- Correzione della portabilità per Windows, che può riscrivere la variabile $ SHELL usando percorsi non POSIX.
- Ora permettiamo a tutti gli hook di ignorare il loro input standard, piuttosto che lamentarsi di SIGPIPE.
- Correggi la shell citando nello script contrib
- Correzione della portabilità del test per un argomento in v2.6.1.
- Consenti espansione tilde in alcune variabili di configurazione http.
- Fornisci un caso speciale utile "diff / show --word-diff-regex =." come esempio nella documentazione.
- Correzione per un caso d'angolo in branch-branch.
- Fai in modo che git-p4 funzioni su una testina staccata.
- Chiarimento della documentazione per "check-ignore" senza "--verbose".
- Proprio come l'albero di lavoro viene ripulito quando l'utente annulla l'invio in P4Submit.applyCommit (), ripulisci il pasticcio se "p4 submit" fallisce.
- Avere un file .idx avanzato senza il corrispondente file .pack nel repository danneggia le prestazioni; "git gc" ha imparato a potarli.
- Il codice per preparare il lato dell'albero di lavoro della directory temporanea per la caratteristica "dir-diff" ha dimenticato che i collegamenti simbolici non devono essere copiati (o collegati simbolicamente) all'area temporanea, poiché il codice già casi speciali e sovrascrive loro. Inoltre, è sbagliato provare a calcolare il nome dell'oggetto della destinazione del collegamento simbolico, che potrebbe anche non esistere o potrebbe essere una directory.
- Non c'era modo di sconfiggere una variabile rebase.autostash configurata dalla riga di comando, poiché mancava "git rebase --no-autostash".
- Consenti a "git interpret-trailers" di essere eseguito al di fuori di un repository Git.
- Produci un indicatore "sporco" corretto per i prompt della shell, anche quando siamo su un orfano o su un ramo non ancora nato.
- Alcuni casi d'angolo sono stati corretti in corrispondenza di stringhe eseguite in "stato git".
- L'implementazione crittografica comune di Apple di SHA1_Update () non richiede più di 4 GB alla volta e ora abbiamo una soluzione alternativa in fase di compilazione.
Novità della versione 2.5.3:
- La funzionalità sperimentale della cache non tratteggiata era errata quando sono coinvolti percorsi con pochi livelli di sottodirectory.
- Le versioni recenti di script "git am" hanno una regressione delle prestazioni nel codepath "git am -skip", che non esiste più nella versione integrata sul fronte "master". Correggere la regressione nell'ultima versione di script visualizzata nella traccia di manutenzione 2.5.x e precedente.
Novità della versione 2.4.6:
- "git fetch --depth =" e "git clone --depth =" ha emesso una richiesta di trasferimento superficiale anche a un pacchetto di caricamento che non supporta la capacità.
- "git fsck" usato per ignorare oggetti mancanti o non validi registrati in reflog.
- Il completamento di tcsh scrive uno script di bash, ma questo avrebbe fallito per gli utenti con noclobber set.
- Gli aggiornamenti recenti di Mac OS X interrompono la logica per rilevare che la macchina è alimentata dalla rete elettrica nello script pre-auto-gc di esempio.
- "git format-patch --ignore-if-upstream A..B" non ha gradito ricevere tag come boundary commit.
- Contiene anche typofix, aggiornamenti della documentazione e codice triviale
- bonifiche.
Novità nella versione 2.4.2:
- "git rev-list --oggetti $ old --not --all" per vedere se tutto ciò che è raggiungibile da $ old è già collegato agli attuali refs era molto inefficiente.
- "hash-object --literally" introdotto in v2.2 non era preparato per prendere un nome di tipo di oggetto veramente lungo.
- "git rebase --quiet" non era abbastanza tranquillo quando non c'è niente da fare.
- Il completamento del valore del parametro "log --decorate =" non era corretto.
- messaggio di registro di commit danneggiato "filter-branch" che termina con una linea incompleta su piattaforme con alcune implementazioni "sed" che definiscono tale linea. Lavoralo evitando di usare "sed".
- "git daemon" non riesce a compilare dal sorgente sotto la configurazione NO_IPV6 (regressione in 2.4).
- "git stash pop / apply" ha dimenticato di assicurarsi che non solo l'albero di lavoro sia pulito, ma anche l'indice sia pulito. Quest'ultimo è importante in quanto un'applicazione in stash può entrare in conflitto e l'indice sarà utilizzato per la risoluzione dei conflitti.
- Abbiamo anteposto $ GIT_EXEC_PATH e il percorso "git" è installato in (tipicamente "/ usr / bin") a $ PATH quando si invocano sottoprogrammi e hook per quasi l'eternità, ma il caso d'uso originale che quest'ultimo ha cercato di supportare era semi -bogus (es. installa git su / opt / foo / git ed eseguilo senza avere / opt / foo su $ PATH), e ancora più importante è diventato sempre meno rilevante man mano che Git diventava più mainstream (cioè gli utenti avrebbero dovuto avere sul loro $ PATH). Smetti di prependere il percorso in cui "git" è installato sul $ PATH dell'utente, in quanto ciò interferirebbe con l'ordine di ricerca dei comandi da cui dipendono le persone (ad esempio potrebbero non piacere le versioni di programmi che non sono collegati a Git in / usr / bin e vogliono sostituiscile con quelli diversi in / usr / local / bin e disponi della seconda directory in precedenza nel loro $ PATH).
- Contiene anche typofix, aggiornamenti della documentazione e pulizia del codice triviale.
I commenti non trovato