2012-08-01 10 views
6

Ich verwende Kommandozeilen-Git und Kaleidoscope, um meine Code-Bewertungen durchzuführen. Wenn ich einen Zweig in einen anderen verschmelzen undWie bekomme ich mein Git-integriertes Kaleidoscope, um alle Dateien anzuzeigen, die festgeschrieben werden sollen?

git difftool 

Kaleidoskopart zeigt nur Änderungen, die ‚für begehen nicht inszeniert‘ werden und nicht angezeigt werden ‚unmerged Pfade‘ oder ‚geändert begangen werden.‘

Die Befehlszeile zeigt den Rest des Zeugs an.

Irgendeine Idee warum?

Das ist mein ~/.gitconfig

[user] 
     name = Dirty Henry 
     email = [email protected] 
[core] 
     excludesfile = /Users/dirty/.gitignore_global 
     editor = mate 
[difftool "Kaleidoscope"] 
     cmd = ksdiff-wrapper git \"$LOCAL\" \"$REMOTE\" 
[mergetool "sourcetree"] 
     cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\" 
     trustExitCode = true 
[diff] 
     tool = Kaleidoscope 
[credential] 
     helper = osxkeychain 
[difftool] 
     prompt = false 

Antwort

14

Kurze Antwort: Was wollen Sie in der Befehlszeile zu tippen ist git difftool HEAD, nicht git difftool.

Lange Antwort: Das ist normales Git Verhalten, und es ist irgendwie frustrierend, wenn Sie nicht wissen, was passiert. Ich bin mir nicht sicher, warum die Befehlszeilen diff funktioniert wie erwartet, aber beide git diff und git difftool sollte ähnlich wie pro git Manpage aufführen:

git diff [--options] [-] [<Pfad> ...] Dieses Formular dient zum Anzeigen der Änderungen, die Sie relativ zum Index vorgenommen haben (Staging-Bereich für das nächste Commit). Mit anderen Worten, die Unterschiede sind, was Sie git sagen können, um den Index weiter zu ergänzen, aber Sie haben immer noch nicht. Sie können diese Änderungen mithilfe von Git-Add (1) bereitstellen.

So git diff und git difftool sollten Sie nur unstaged Änderungen zeigen.

Wenn Sie inszeniert Änderungen sehen möchten, können Sie git diff --cached und git difftool --cached stattdessen verwenden sollten:

git diff [--options] --cached [<begehen>] [-] [<Pfad> ...] In diesem Formular werden die Änderungen angezeigt, die Sie für das nächste Commit relativ zum angegebenen <-Commit > vorgenommen haben. Normalerweise würden Sie wollen Vergleich mit dem neuesten Festschreiben, also wenn Sie <Commit> nicht geben, ist es HEAD standardmäßig. Wenn HEAD nicht vorhanden ist (z. B. nicht verzweigte Verzweigungen) und <commit> nicht angegeben ist, werden alle gestuften Änderungen angezeigt. --gestaged ist ein Synonym für --cached.

Schließlich, wenn Sie beide sehen wollen inszeniert und unstaged Änderungen verwenden Sie die dritte Form, git diff HEAD oder git difftool HEAD:

git diff [--options] < > [begehen - ] [<Pfad> ...] Dieses Formular zeigt die Änderungen an, die Sie in Ihrem Arbeitsbaum relativ zu dem genannten <Commit> haben. Sie können HEAD verwenden, um es mit dem letzten Commit oder einem -Zweig-Namen zu vergleichen, der mit der Spitze eines anderen Zweiges verglichen wird.

+0

genial. Vielen Dank! –

1
git difftool --staged 

Wollen Sie genau geben, dass.

staged in diesem Fall ist ein Synonym für cached, obwohl ich staged leichter zu merken finde.

Verwandte Themen