2012-12-09 8 views
5

Próbowałem git commit -vJak wyświetlić zmiany w pliku przed zatwierdzeniem?

[email protected]:~/agile$ git commit -v 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: .htaccess 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
[email protected]:~/agile$ 

ale to tylko pokazuje mi, że .htaccess uległa zmianie, ale nie to, co się zmieniło. Jak to osiągnąć?

Aktualizacja: W Aptana Studio jest możliwe, aby zobaczyć zmiany przed popełnić niczego. Wracając do mojego pytania, musi istnieć sposób, aby zobaczyć różnicę do pierwotnego stanu, zanim faktycznie popełnisz błąd. Może istnieje inna komenda do tego.

Odpowiedz

10

Upewnij się, że wprowadziłeś kilka zmian. W przeciwnym razie, git commit -v pokaże ci blok podobny do tego, co napisałeś, ale nic nie zrobisz. Możesz zmieniać etapy ręcznie za pomocą git add lub jeśli pliki są już wersjonowane, możesz użyć git commit -a -v do scenie i zatwierdzenia zmian.

Na przykład:

$ echo "more foo" >> foo.txt 
$ git commit -v 
# On branch master 
# Changes not staged for commit: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# modified: foo.txt 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

Staging zmianę pokazuje diff z git commit -v:

:: git add foo.txt 
:: GIT_EDITOR=cat git commit -v 

# Please enter the commit message for your changes. Lines starting 
# with '#' will be ignored, and an empty message aborts the commit. 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: foo.txt 
# 
diff --git a/foo.txt b/foo.txt 
index 257cc56..a521556 100644 
--- a/foo.txt 
+++ b/foo.txt 
@@ -1 +1,2 @@ 
foo 
+more foo 
Aborting commit due to empty commit message. 

Jeśli tylko chcesz zobaczyć diff bez popełnienia użyć git diff zobaczyć Unstaged zmian git diff --cached do zobacz zmiany wystawiane do zatwierdzenia lub git diff HEAD, aby wyświetlić zmiany zarówno etapowe, jak i niezarządzane w drzewie roboczym.

AKTUALIZACJA: biorąc pod uwagę Twoją edycję, to, czego naprawdę chcesz, to powyższe pochodne git diff. Nie jestem pewien, jak działa Aptana Studio. Może nie być zgodny z typowym przepływem git z linii poleceń. W wierszu poleceń wprowadzasz zmiany, a następnie zatwierdzasz. Powyższe polecenia git diff służą do sprawdzania tych zmian. I zazwyczaj alias je jako git unstaged, git staged i git both dodając to do mojego ~/.gitconfig:

[alias] 
    # show difference between working tree and the index 
    unstaged = diff 

    # show difference between the HEAD and the index 
    staged = diff --cached 

    # show staged and unstaged changes (what would be committed with "git commit -a") 
    both = diff HEAD 
+0

+1 Tak. 'git diff .htaccess' robi to, co chciałem osiągnąć. Dziękuję Ci :) – Houman

6

Aby zobaczyć diff w plikach śledzone ale nie wystawił:

git diff 

lub

git diff path/to/a/given/file 

, aby zobaczyć różnicę tylko dla pliku. Można również zobaczyć diff w danym podkatalogu projektu:

git diff path/to/a/dir/ 

Jeśli już wystawił zmiany z git add, można zobaczyć, co łatka już wystawił z

git diff --staged 

ty może również określić ścieżkę z --staged.

Powiązane problemy