Vai al contenuto
GitTree
Storia e recupero

Confronta i commit prima e dopo una riscrittura

What Changed… confronta le patch in due serie di commit, il ramo prima di una riscrittura e il ramo dopo di essa. I commit di unione vengono omessi. Le coppie sono contrassegnate con Same, Changed, Dropped o Added. Il confronto non sposta i riferimenti né modifica i file. L'abbinamento non è la prova che due commit significano la stessa cosa.

GratuitoAggiornato

Funziona in GitTree Gratuito: tutte le funzionalità Git locali, senza bisogno di un account.

In questa pagina
  1. Prima di iniziare
  2. Dove trovarlo
  3. Passi
  4. Risultato atteso
  5. Il comando Git
  6. Cosa significa ogni stato di coppia
  7. Quando il confronto non può essere eseguito
  8. Se qualcosa va storto
  9. Domande
  10. Relativo

Prima di iniziare

  • Ciò che è cambiato fa parte del piano gratuito. Git sul tuo PERCORSO deve fornire git range-diff. In caso contrario, GitTree dice che Git non può confrontare le serie riscritte.
  • Hai ancora entrambi i suggerimenti. Dopo un rebase, la vecchia punta è spesso nel reflog. Lost & Found riesce a trovare un commit a cui nessun ramo punta.

Dove trovarlo

  • Menu Compare di un commit: What Changed….
  • L'avviso dopo un push forzato.
  • Alt+D o la tavolozza dei comandi.
AzionemacOSWindows e Linux
What Changed…⌥DAlt+D
La tavolozza dei comandi⌘⇧PCtrl+Shift+P

Passi

  1. Apri Cosa è cambiato

    Seleziona il commit che hai riscritto, apri Compare e scegli What Changed… oppure premi Alt+D. Il titolo della finestra di dialogo è What Changed…. La nota dice che confronta le patch in due serie di commit e che i commit di unione vengono omessi.

    Il grafico di commit del repository lumen con un commit selezionato
    Cosa è cambiato si apre dal menu Confronta di un commit su questo grafico. L'immagine è il grafico, non la finestra di dialogo di confronto.GitTree interfaccia con un repository dimostrativo.
  2. Scegli i due suggerimenti

    Imposta Before rewrite sul vecchio suggerimento e After rewrite sul nuovo suggerimento. Choose both tips se uno dei due lati è vuoto. Sotto Advanced: excluded bases, Old base e New base limitano l'intervallo. Lascia una base vuota per utilizzare l'antenato comune delle punte.

  3. Confronta

    Premi Compare. Stop chiede alla lettura di completare il passaggio corrente. Il risultato è Rewrite comparison. Ogni coppia è Same, Changed, Dropped o Added. Inspect patch difference apre una coppia. No patches differ in these ranges indica la corrispondenza della serie.

  4. Rivedi prima di pubblicare

    La nota dice di rivedere le patch modificate prima della pubblicazione. Una coppia Changed è lo stesso slot di patch con una differenza diversa. Dropped era solo nella vecchia serie. Added è solo nella nuova serie. Nulla viene inviato da questa finestra di dialogo. Quando sei pronto, utilizza il push normale o force push with lease se il remoto ha ancora il vecchio tip.

Risultato atteso

Puoi nominare quali patch sono sopravvissute alla riscrittura, quali sono state modificate e quali sono apparse o scomparse. Il ramo, l'indice e l'albero di lavoro sono come prima. Controlla la patch di una coppia modificata prima di chiedere a qualcun altro di utilizzare la nuova cronologia.

Il comando Git

GitTree esegue git range-diff sui due intervalli. Puoi eseguire lo stesso confronto in un terminale. oldtip...newtip utilizza la base di unione. Superare quattro revisioni imposta tu stesso entrambe le basi, che è ciò che fanno i campi avanzati.

git range-diff oldtip...newtip
git range-diff oldbase..oldtip newbase..newtip
git reflog show feature

git reflog show feature elenca i suggerimenti che il ramo aveva prima del rebase, quindi puoi incollare il vecchio suggerimento in Before rewrite. Range-diff confronta le patch. Non decide che due messaggi di commit descrivano lo stesso lavoro. Rebase e rebase interattivo sono il modo in cui avviene la riscrittura. La lezione tutorial su rebase mostra il modulo della riga di comando.

Cosa significa ogni stato di coppia

Accoppia gli stati nel confronto di riscrittura
StatoSignificato
Lo stessoLa patch corrisponde a entrambe le serie
CambiatoLa coppia è abbinata e la patch è diversa
CadutoLa patch è solo nella vecchia serie
AggiuntoLa patch è solo nella nuova serie

I commit di unione vengono omessi, quindi un'unione che ti aspettavi di vedere non è una coppia eliminata. Partial comparison: output reached its limit significa che gli intervalli sono troppo ampi. Restringi le basi. Git output format was not recognized significa che il testo stampato da Git non può essere analizzato. Esamina quel testo prima di fidarti dell'elenco.

Quando il confronto non può essere eseguito

Se Git non ha range-diff, GitTree dice This Git cannot compare rewritten series. Update Git, or use Compare in the command palette to inspect the two revisions. Quel confronto ordinario è una differenza di due alberi, non una serie di patch. Aggiorna Git dalla schermata di configurazione o da Configurazione Git, quindi apri di nuovo Cosa è cambiato.

Se qualcosa va storto

"Questo Git non può confrontare le serie riscritte."

Il Git installato non ha differenze di intervallo. Aggiorna Git, quindi riprova. Fino ad allora, confronta le due revisioni dalla tavolozza dei comandi. Quella vista è una differenza ad albero, non una serie di patch.

"Scegli entrambi i suggerimenti."

Prima della riscrittura o Dopo la riscrittura è vuoto. Scegli il vecchio suggerimento dal reflog o da Lost & Found e il nuovo suggerimento dal ramo.

"Confronto parziale: la produzione ha raggiunto il limite. Restringere i limiti."

Imposta Vecchia base e Nuova base in modo che ciascun lato sia solo il tratto riscritto, quindi premi nuovamente Confronta.

"Nessuna patch differisce in questi intervalli."

La serie corrisponde o le basi escludono i commit che ti interessano. Cancella una base per utilizzare l'antenato comune e controlla di non aver scelto la stessa punta due volte.

Domande

What Changed cambia il mio ramo?

No. Legge due serie di commit e mostra gli stati delle coppie. I riferimenti e i file rimangono dove sono.

Una coppia modificata ha lo stesso ID di commit?

No. Un rebase scrive nuovi ID di commit. Modificato significa che le patch sono state accoppiate e le loro differenze non sono identiche. Non si tratta di affermare che i due messaggi descrivano la stessa intenzione.

Perché mancano i commit di unione?

La finestra di dialogo dice che i commit di unione sono omessi. Range-diff confronta le patch su ciascun lato della riscrittura, non i nodi di unione.

Dov'è il vecchio suggerimento dopo un rebase?

Di solito è nel reflog fino alla scadenza della voce. Lost & Found può cercare quel reflog e i riferimenti di recupero di GitTree se nessun ramo punta a esso.

Questo sostituisce git diff?

No. git diff confronta due alberi. git range-diff confronta due serie di patch. Utilizzare Cosa è cambiato dopo una riscrittura. Usa un confronto normale quando vuoi la differenza tra gli alberi.