Domanda

Voglio unire due rami che sono stati separati per un po 'e volevo sapere quali file sono stati modificati.

È arrivato attraverso questo link: http://linux.yyz.us/git-howto.html che è stato abbastanza utile.

Gli strumenti per confrontare i rami che ho incontrato sono:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

Mi chiedevo se ci fosse qualcosa di simile a " git status master..branch " per vedere solo quei file che sono diversi tra i due rami.

Senza creare un nuovo strumento, penso che questo sia il più vicino che puoi fare ora (che ovviamente mostrerà le ripetizioni se un file è stato modificato più di una volta):

  • git diff master..branch | grep " ^ diff "

Mi chiedevo se ci fosse qualcosa che mi mancava ...

È stato utile?

Soluzione

Per confrontare il ramo corrente con il ramo master :

$ git diff --name-status master

Per confrontare due rami qualsiasi:

$ git diff --name-status firstbranch..yourBranchName

Leggi su git diff nella documentazione ufficiale .

Altri suggerimenti

Prova

$ git diff --stat --color master..branchName

Questo ti darà maggiori informazioni su ogni modifica, pur usando lo stesso numero di righe.

Puoi anche capovolgere i rami per ottenere un'immagine ancora più chiara della differenza se dovessi unirti nell'altro modo:

$ git diff --stat --color branchName..master

Tieni anche presente che git ha una ramificazione economica e semplice. Se penso che un'unione possa essere problematica, creo un ramo per l'unione. Quindi se master ha le modifiche che voglio unire e ba è il mio ramo che ha bisogno del codice del master, potrei fare quanto segue:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

Il risultato finale è che devo provare l'unione su un ramo da buttare via prima di avvitarmi con il mio ramo. Se mi aggroviglio, posso semplicemente eliminare il ramo ba-merge e ricominciare da capo.

Se qualcuno sta cercando di generare un file diff da due rami:

git diff master..otherbranch > myDiffFile.diff

Esiste anche un metodo basato sulla GUI.

Puoi usare gitk .

  1. Esegui:

    $ gitk --all
    
  2. Fai clic con il pulsante destro del mouse su un commit di un ramo e seleziona Contrassegna questo commit nel menu a comparsa.

  3. Fai clic destro su un commit di un altro ramo e seleziona Diff this - > contrassegnato commit o Diff contrassegnato commit - > questo .

Quindi ci sarà un elenco di file modificato nel pannello in basso a destra e dettagli diff nel pannello in basso a sinistra.

Un'altra opzione, usando la combinazione in questo caso:

git difftool -d master otherbranch

Ciò consente non solo di vedere le differenze tra i file, ma fornisce anche un modo semplice per puntare e fare clic in un file specifico.

Nota che git rende semplice provare l'unione e allontanarti da qualsiasi problema se non ti piace il risultato. Potrebbe essere più semplice che cercare in anticipo potenziali problemi.

E se stai cercando modifiche solo tra determinati file, quindi:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 è facoltativo e il tuo ramo corrente (il ramo in cui ti trovi) sarà considerato di default se branch1 non è fornito. per esempio:

git diff master -- controller/index.js

Quando lavori in collaborazione o su più funzionalità contemporaneamente, è comune che l'upstream o anche il tuo master contengano lavori che non sono inclusi nel tuo ramo e appariranno in modo errato nelle differenze di base.

Se l'Upstream potrebbe essersi spostato, dovresti farlo:

git fetch
git diff origin/master...

Il solo utilizzo di git diff master può includere o non includere modifiche rilevanti.

Se stai utilizzando IntelliJ IDEA , puoi anche confrontare qualsiasi ramo con il tuo attuale ramo di lavoro. Vedi http://www.jetbrains.com/ idea / webhelp / merging-delete-and-comparing-filiali.html # d288093e3827 per maggiori informazioni. Questo è disponibile anche nella edizione gratuita .

Ci sono due rami diciamo

  • A (Branch su cui stai lavorando)
  • B (Un altro ramo con cui si desidera confrontare)

Essere nel ramo A è possibile digitare

git diff --color B

allora questo ti darà un output di

 inserisci qui la descrizione dell'immagine

Il punto importante al riguardo è

  1. Il testo in verde è presente all'interno del ramo A

  2. Il testo in rosso è presente nel ramo B

Ci sono molte risposte qui, ma volevo aggiungere qualcosa che uso comunemente. SE ti trovi in ??uno dei rami che desideri confrontare, in genere eseguo una delle seguenti operazioni. Per il bene di questa risposta diremo che siamo nel nostro ramo secondario. A seconda della vista che ti serve in quel momento dipenderà da quale scegli, ma la maggior parte delle volte sto usando la seconda opzione delle due. La prima opzione può essere utile se stai cercando di ripristinare una copia originale - in entrambi i casi, entrambi eseguono il lavoro!

Questo confronterà il master con il ramo in cui ci troviamo (che è secondario) e il codice originale sarà le righe aggiunte e il nuovo codice sarà considerato le righe rimosse

git diff ..master

o

Questo confronterà anche il master con il ramo in cui ci troviamo (che è secondario) e il codice originale sarà le vecchie righe e il nuovo codice sarà le nuove righe

git diff master..

Se ti piace la GUI e stai utilizzando Windows, ecco un modo semplice.

  1. Scarica WinMerge
  2. Guarda i due rami in diverse cartelle
  3. Confronta una cartella per cartella usando WinMerge. Puoi anche apportare facilmente modifiche se uno dei rami è quello su cui stai lavorando.
git diff revision_n revision_m

se revision_n e revision_m sono commit successivi, viene emesso lo stesso di git show revision_m

Per le persone che sono alla ricerca di una soluzione GUI, Git Cola ha un ottimo " Branch Diff Viewer ( Diff - > Branches .. ).

Puoi anche utilizzare un visual visual .

Ad esempio, se stai utilizzando Sourcetree , puoi semplicemente seleziona due commit nella vista registro .

(Personalmente preferisco usare una GUI nella maggior parte dei casi per questo, e sto pubblicando questo per coloro che potrebbero non avere familiarità con le opzioni della GUI.)

Puoi anche facilmente confrontare i rami per i file modificati usando ad esempio TortoiseGit . Basta fare clic su Sfoglia riferimenti e selezionare i rami che si desidera confrontare.

Ad esempio, se confronti la tua filiale con master otterrai come risultato un elenco di file che verranno modificati in master se decidere di unire il tuo ramo in master .

Ricorda che otterrai risultati diversi se confronti master con your-branch e your-branch con master .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top