Risposte:
Fornisci un percorso (myfolder in questo caso) ed esegui semplicemente:
git diff myfolder/
git diff -- myfolder
per ridurre al minimo l'ambiguità di git. La notazione generale per git diff (e molti comandi git) è git diff [commit-ish] -- [path]
dove commit-ish imposta automaticamente HEAD (dove sei ora) e [path]
imposta automaticamente la directory root di git, ma può essere qualsiasi cosa relativa alla directory corrente. Senza il --
, git indovina cosa intendi, [commit-ish]
o [path]
. In alcuni casi, questo fa sì che Git dica che la notazione è "ambigua". Se ricordo bene.
git diff master..develop myfolder/
. Lo stato di Git ti mostrerà le modifiche se è quello che stai cercando.
Se stai confrontando diversi rami, devi usare --
per separare una revisione Git da un percorso del filesystem. Ad esempio, con due filiali locali master
e bryan-working
:
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
O da una filiale locale a un telecomando:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Dovresti prendere l'abitudine di guardare la documentazione per cose come questa. È molto utile e migliorerà le tue abilità molto rapidamente. Ecco la parte rilevante quando lo faigit help diff
git diff [options] [--no-index] [--] <path> <path>
I due <path>
sono ciò che è necessario modificare nelle directory in questione.
Aggiungi Beyond Compare come difftool in Git e aggiungi un alias per diffdir come:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
Ottieni gitdiff come:
git diffdir 4bc7ba80edf6 7f566710c7
Riferimento: confronta intere directory con gt difftool + Beyond Compare
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
invece
--no-symlinks
opzione in modo che il comando leggagit difftool --dir-diff --no-symlinks
Non solo puoi aggiungere un percorso, ma puoi aggiungere git diff --relative
per ottenere risultati relativi a quella cartella.
git -C a/folder diff --relative
E con Git 2.28 (3 ° trimestre 2020), i comandi della " diff
" famiglia hanno imparato a onorare la " diff.relative
" variabile di configurazione.
Vedi commit c28ded8 (22 maggio 2020) di Laurent Arnoud ( spk
) .
(Unita da Junio C Hamano - gitster
- in commit e34df9a , 02 giu 2020)
diff
: aggiungi l'opzione di configurazionerelative
Firmato-fuori: Laurent Arnoud
Acked-by: Đoàn Trần Công DanhL'
diff.relative
opzione booleana impostata sutrue
mostra solo le modifiche nella directory / valore corrente specificatipath
dall'argomentorelative
dell'opzione e mostra i nomi dei percorsi relativi alla suddetta directory.Insegna
--no-relative
a eseguire l'override in precedenza--relative
Aggiungi per la documentazione delle opzioni git-format-patch (1)
--relative
e--no-relative
La documentazione ora include :
diff.relative
:Se impostato su '
true
', 'git diff
' non mostra le modifiche al di fuori della directory e mostra i percorsi relativi alla directory corrente.
Se si desidera escludere le sottodirectory, è possibile utilizzare
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
Per utilizzare Beyond Compare come difftool per la directory diff, ricorda di abilitare seguire i collegamenti simbolici in questo modo:
In una cartella Confronta vista → Regole (icona arbitro):
E quindi, abilitare seguire i collegamenti simbolici e aggiornare le impostazioni predefinite della sessione:
O,
impostare l'alias in questo modo:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
Si noti che in entrambi i casi, tutte le modifiche apportate al lato (sinistro o destro) che si riferiscono all'attuale albero di lavoro vengono conservate.
git diff master..yourbranch path/to/folder