2012-06-11 11 views
15

Czy istnieje funkcja w git, gdzie mogę porównać moje pliki lokalne z kontrolą kodu źródłowego git przed wprowadzeniem zmian?Git Porównaj pliki przed zatwierdzeniem

+0

Próbujesz porównać swoje lokalne repozytorium git ze zdalnym repozytorium github? –

+0

Tak, podobnie do VS.NET TFS, gdzie można porównać wszystkie zmienione pliki przed ich sprawdzeniem. – mallows98

+0

Możliwe duplikaty [Git: Jak wyświetlić różnicę plików przed zatwierdzeniem] (http://stackoverflow.com/ pytania/10039747/git-how-to-view-file-diff-before-commit) – kenorb

Odpowiedz

31

Oczywiście, że możesz zrobić.

  1. Używając polecenia git diff bez żadnych argumentów: porówna każdy zmodyfikowane pliki w systemie plików z plików znajdujących się w bieżącym zameldowaliśmy się oddział (lub) tag.

  2. Porównuje wszystkie zmodyfikowane pliki w systemie plików z plikami w określonym znaczniku branch (lub).

  3. Porównuje określony plik lub pliki w folderze w systemie plików z obecnie wyewidencjonowanym znacznikiem oddziału (lub).

  4. Używanie git diff <tag1(or)branch1 name> <tag2(or)branch2 name>: spowoduje porównanie wszystkich zmodyfikowanych plików między dwoma gałęziami/znacznikami.

Istnieje wiele opcji, można przejść do polecenia „git diff” do formatowania danych wyjściowych.Tutaj mam wymienione kilka:

  • git diff --name-only: Pokaż tylko nazwy zmienionych plików, a nie treści.
  • git diff --name-status: Pokaż tylko nazwy i status zmienionych plików.
  • git diff --cached (or --staged): porównuje tylko pliki, które są wystawiane/indeksowane. Aby uzyskać więcej informacji, należy uzyskać

: wykonać git diff --help w bicie git.

FYI: git diff wygeneruje dane wyjściowe w wierszu poleceń. Jeśli chcesz zobaczyć wyniki w niektórych narzędziach wizualnych, użyj git difftool.

Używanie git difftool: możesz skonfigurować git, aby używał narzędzia porównywania/scalania do porównywania plików. Zamówienie link: use Winmerge inside of Git to file diff

można przejść wszystkie git diff argumenty i opcje git difftool również.

+0

dzięki karthik! to jest przydatne! :RE – mallows98

-1

Ponieważ zatwierdzenia można łatwo zmienić/zmienić przed ich wysłaniem, łatwiej jest je zatwierdzić, a następnie zalogować, aby zobaczyć, co zmieniłem.

W przypadku, gdy nie jest to, co ja spodziewałem się, zmienia, reset rebase -i, etc ...

8

Lubię używać

git status 

To pokazuje, jakie pliki zostały zmienione i co śledzisz. Następnie można użyć

git diff 

lub więcej GUI przyjazne

gitk 

Aby zobaczyć diff.

+2

Również jeśli chcesz sprawdzić, co zostało zainscenizowane (w indeksie) możesz użyć git diff --cached. – Russell

+0

dzięki za to! – mallows98

+0

Och, 'gitk', wow! – Franta

0

Wolę korzystać z tej metody.

Skrypt do porównywania

#!/bin/sh 
(        # execute in a subshell so you can continue 
           # working in the current shell 
    set -o xtrace    # bash setting that echos each command before it's executed 
    > /tmp/auto_bcompare_log # truncate existing log file 
    BCOMP_PATH=/usr/bin/bcompare 
    BRANCH="$1"    # get branch argument from command line 
    TEMPDIR=`mktemp -d`  # get a temp directory 
    CWD=`pwd`     # remember the current directory 
    git clone $CWD $TEMPDIR 
    cd $TEMPDIR 
    git checkout $BRANCH 
    cd $CWD 
    $BCOMP_PATH $CWD $TEMPDIR 
    rm -rf $TEMPDIR 
) >> /tmp/auto_bcompare_log 2>&1 < /dev/null & # background and redirect 
               # stdout/stderr/stdin 

Powyższy skrypt jest zdecydowanie _nie_ napisany przeze mnie. Wziąłem go z sieci, ale nie jestem pewien źródeł. Zapisz to w repozycie jako compare.sh. Upewnij się, że podałeś poprawną ścieżkę do pliku bcompare.

Aby porównać przed zatwierdzeniem.

./compare.sh <branch_you_want_to_compare> 

Co ten skrypt w zasadzie nie jest to, że to kasach gałąź, że dajesz jako parametr do katalogu temp i otwiera się na porównaniu ze swoim pwd. Dzięki temu możesz przejrzeć zmiany przed zatwierdzeniem. Mam nadzieję, że tego właśnie chcesz.

+0

Uh. Czym różni się to od 'git diff '? – kostix

+0

kostix: To da ci tylko jednolity format diff. Niezbyt czyste porównanie, jak to, co nieporównywalne. – positron

Powiązane problemy