384 Stimmen

Kann ich git diff für nicht getrackte Dateien verwenden?

Ist es möglich zu fragen git diff nicht verfolgte Dateien in die Diff-Ausgabe einbezieht, oder ist es am besten, wenn ich git add auf die neu erstellten Dateien und die bereits bearbeiteten Dateien anwenden:

git diff --cached

?

25voto

radzimir Punkte 820

Für eine Datei:

git diff --no-index /dev/null new_file

Für alle neuen Dateien:

for next in $( git ls-files --others --exclude-standard ) ; do git --no-pager diff --no-index /dev/null $next; done;

Als Alias:

alias gdnew="for next in \$( git ls-files --others --exclude-standard ) ; do git --no-pager diff --no-index /dev/null \$next; done;"

Für alle geänderten und neuen Dateien zusammen als ein Befehl:

{ git --no-pager diff; gdnew }

16voto

Alejandro Moreno Punkte 5276

Das funktioniert bei mir:

git add my_file.txt
git diff --cached my_file.txt
git reset my_file.txt

Der letzte Schritt ist optional, er lässt die Datei im vorherigen Zustand (nicht verfolgt).

nützlich, wenn Sie auch einen Patch erstellen:

  git diff --cached my_file.txt > my_file-patch.patch

7voto

alairock Punkte 1594

Aktualisierung: Meine Antwort bezieht sich auf abgestufte und nicht abgestufte Änderungen. Nicht für verfolgte und nicht verfolgte. Siehe die akzeptierte Antwort für die Informationen zu verfolgten/unverfolgten Änderungen. Ich hinterlasse sie hier für die Nachwelt.

Im Folgenden finden Sie nur unbearbeitete Änderungen:

$ git diff

Wenn Sie sowohl abgestufte als auch nicht abgestufte Änderungen wünschen, fügen Sie HEAD zum Befehl:

$ git diff HEAD

4voto

Arun Gowda Punkte 2088

Mit der Idee, dass Sie die neue Datei bereitstellen und die bereitgestellten Dateien vergleichen können, können Sie diese beiden kombinieren, um den Unterschied zu sehen. Ich finde es einfach zu bedienen.

  1. Fügen Sie die Dateien hinzu, für die Sie den Unterschied sehen wollen, nur nicht verfolgte Dateien hinzufügen . Optional können Sie nur die Dateien hinzufügen, für die Sie den Unterschied sehen möchten.

    git stash && git add . && git stash pop 
  2. Diff die inszenierte

    git diff --staged
  3. Zurücksetzen der bereitgestellten Dateien, falls erforderlich

    git reset

Die Kombination aller oben genannten Punkte,

   git stash && git add . && git stash pop && git diff --staged && git reset

2voto

adg Punkte 89

Normalerweise, wenn ich mit Teams an entfernten Standorten arbeite, ist es für mich wichtig, dass ich vorher weiß, welche Änderungen von anderen Teams an derselben Datei vorgenommen wurden, bevor ich den Git-Stufen untrack-->staged-->commit Zu diesem Zweck habe ich ein Bash-Skript geschrieben, das mir hilft, unnötige Merge-Konflikte mit entfernten Teams zu vermeiden oder einen neuen lokalen Zweig zu erstellen und mit dem Hauptzweig zu vergleichen und zusammenzuführen.

#set -x 
branchname=`git branch | grep -F '*' |  awk '{print $2}'`
echo $branchname
git fetch origin ${branchname}
for file in `git status | grep "modified" | awk "{print $2}" `
do
echo "PLEASE CHECK OUT GIT DIFF FOR "$file 
git difftool FETCH_HEAD $file ;
done

im obigen Skript hole ich Remote-Hauptzweig (nicht notwendig seine Master-Zweig) zu FETCH_HEAD machen sie eine Liste meiner geänderten Datei nur und vergleichen modifizierte Dateien mit Git Difftool

hier viele difftool von Git unterstützt, konfiguriere ich 'Meld Diff Viewer' für gute GUI Vergleich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X