2012-08-01 12 views
6

Używam gita z wiersza polecenia i Kaleidoscope do wykonywania recenzji kodu. Kiedy scalić oddziału do innego i wpisaćJak uzyskać mój kalejdoskop zintegrowany z Git, aby wyświetlić wszystkie pliki, które mają zostać zatwierdzone?

git difftool 

Kaleidoscope wyświetla tylko zmiany, które są „nie wystawiono popełnić” i nie display „niezłączonych ścieżek” lub „zmieniły się być zaangażowana”.

Wiersz polecenia wyświetla resztę rzeczy.

Każdy pomysł, dlaczego?

To jest mój ~/.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 

Odpowiedz

14

Krótka odpowiedź: co chcesz być wpisując w wierszu poleceń jest git difftool HEAD nie git difftool.

Długa odpowiedź: To normalne zachowanie gitów i frustruje, jeśli nie zdajesz sobie sprawy z tego, co się dzieje. Nie jestem pewien, dlaczego diff wiersza poleceń działa zgodnie z oczekiwaniami, ale zarówno git diff i git difftool powinno być wykonywanie podobnie jak na stronie git człowieka:

git diff [--options] [-] [< ścieżka > ...] Ten formularz służy do przeglądania zmian dokonanych względem indeksu (obszar przemieszczania dla następnego zatwierdzenia). Innymi słowy, różnice są tym, co można powiedzieć git, aby dalej dodać do indeksu, ale nadal nie ma. Możesz wprowadzić te zmiany za pomocą git-add (1).

Więc git diff i git difftool powinny pokazać tylko Unstaged zmian.

Jeśli chcesz zobaczyć wystawił zmian, należy użyć git diff --cached i git difftool --cached zamiast:

git diff [--options] --cached [< popełnić >] [-] [ścieżka < > ...]... Ten formularz służy do wyświetlenia zmian, które wystawiłeś dla następnego zatwierdzenia względem podanego <commit>. Zwykle chciałbyś, aby było porównywane z ostatnim zatwierdzeniem, więc jeśli nie przyznasz <commit>, domyślnie jest to HEAD. Jeśli HEAD nie istnieje, (np. Gałęzie nieobjęte) i <zatwierdzenie> nie jest podane, pokazuje wszystkie zmiany etapowe. --staged jest synonimem --cached.

Wreszcie, jeśli chcesz zobaczyć zarówno wystawił i Unstaged zmiany, należy użyć trzecią formę, git diff HEAD lub git difftool HEAD: Diff

git [--options] < popełnienia > [- ] [< ścieżka > ...] Ten formularz służy do przeglądania zmian, które posiadasz w swoim drzewie roboczym względem nazwanego <commit>. Możesz użyć HEAD, aby porównać go z ostatnim zatwierdzeniem lub nazwą oddziału , aby porównać ją z końcówką innego oddziału.

+0

niesamowite. Dzięki! –

1
git difftool --staged 

daje dokładnie to.

staged w tym przypadku jest synonimem dla cached, choć uważam, że łatwiej jest zapamiętać staged.

Powiązane problemy