Czy Git Add ma pełny przełącznik

104

Jestem w trakcie przenoszenia całego mojego prywatnego repozytorium publicznego na github. Jedną z decyzji, które podjąłem, było używanie tylko konsoli, ponieważ oznacza to mniejszy ślad narzędzi, jeśli kiedykolwiek będę musiał zmienić komputer itp.

Byłbym wielkim użytkownikiem aplikacji konsolowych i będąc nowym w git zdecydowałem się na zakup serii Mastering Git firmy Tekpub, ponieważ pokazuje ona, jak zintegrować git bash jako pasek narzędzi.

Wszystko działa dobrze z wyjątkiem polecenia add all, które jest:

git add .

Wygląda na to, że działa, ale nie widzę żadnych oznak, że działa lub nie. Czy istnieje przełącznik gadatliwy (myślę, że tak by się nazywał), który powiedziałby, jakie pliki były śledzone po uruchomieniu polecenia?

Używam programu Visual Studio 2010 ze standardową instalacją git (nie rozszerzeń Git)

deanvmc
źródło
(Tak, to stare pytanie; widziałem je, ponieważ było właśnie edytowane.) git add --helpPokazuje dokumentację git addpolecenia, w tym --verboseopcję.
Keith Thompson
Nowa myśl na stare pytanie - wolę git add -Aod git add .nie sprawdzać różnic, ale stwierdziłem, że moje preferowane polecenie z większym prawdopodobieństwem doda WSZYSTKIE zmienione lub nowe pliki.
cptully

Odpowiedzi:

134

W przypadku niektórych poleceń git, które możesz określić --verbose,

git 'command' --verbose

lub

git 'command' -v.

Upewnij się, że przełącznik jest po rzeczywistym poleceniu git. W przeciwnym razie - to nie zadziała!

Przydatne również:

git 'command' --dry-run 
Sahil Muthoo
źródło
5
git 1.7.9 (cygwin) mówi mi, że --verbose jest nieznaną opcją
Roy Truelove
5
@RTruelove: możesz używać git --verbose addzamiastgit add --verbose
Bogdan D
30

Debugowałem problem z git i potrzebowałem bardzo szczegółowych danych wyjściowych, aby dowiedzieć się, co się dzieje. Skończyło się na ustawieniu GIT_TRACEzmiennej środowiskowej:

export GIT_TRACE=1
git add *.txt

Wynik:

14:06:05.508517 git.c:415               trace: built-in: git add test.txt test2.txt
14:06:05.544890 git.c:415               trace: built-in: git config --get oh-my-zsh.hide-dirty
Aaron
źródło
1
Bingo! Bardzo dziękuję za tę zmienną środowiskową!
Henry Rivera
3
Aby to ułatwić, możesz powiedzieć: GIT_TRACE=1 git add *.txtwszystko w tej samej linii.
cristianoms
6

Cóż, jak (prawie) każdy program konsolowy dla systemów typu unix, git nic nie mówi, jeśli polecenie się powiedzie. Drukuje coś tylko wtedy, gdy coś jest nie tak.

Jeśli jednak chcesz mieć pewność, co się właśnie stało, po prostu wpisz

git status

i zobacz, które zmiany zostaną wprowadzone, a które nie. Sugeruję, abyś używał tego przed każdym zatwierdzeniem, aby mieć pewność, że niczego nie zapomnisz.

Ponieważ wydajesz się nowy w git, oto link do bezpłatnej książki online, która wprowadza Cię w git. Jest bardzo przydatne, pisze o podstawach, a także o dobrze znanych różnych przepływach pracy: http://git-scm.com/book

Riccardo T.
źródło
Z drugiej odpowiedzi, którą widzę, jest sposób, aby powiedzieć ci, co się dzieje, ale sugeruję, abyś przyzwyczaił się bez parametru -v, domyślne zachowanie jest bardziej praktyczne (i szybsze jest pisanie).
Riccardo T.
// Nigdy wcześniej nie słyszałem, że programy konsolowe dla systemów typu UNIX nie mówią nic, jeśli polecenie się powiedzie. Teraz, kiedy to usłyszałem, przypuszczam, że powinno to być dla mnie oczywiste.
Nathan Basanese
To po prostu nieprawda! Git wiele mi mówi, jeśli używam go regularnie, nawet jeśli polecenia się powiodą. Na przykład git commitinformuje mnie, ile linii i plików się zmieniło, czy utworzono nowe pliki, lub git pushinformuje mnie o postępie wypychania na wyższy poziom.
LukeLR
5

Możesz użyć, git add -iaby uzyskać interaktywną wersję git add, chociaż nie jest to dokładnie to, czego szukasz. Najprościej jest po zakończeniu git addedycji użyć, git statusaby zobaczyć, co jest wystawiane, a co nie.

Używanie git add .nie jest zalecane, chyba że jest to twoje pierwsze zatwierdzenie. Zwykle lepiej jest jawnie wymienić pliki, które chcesz umieścić na poczekalni, aby przypadkowo nie rozpocząć śledzenia niechcianych plików (pliki tymczasowe itp.).

Mata
źródło
1
Po prostu użyj .gitconfig, aby zdefiniować wyjątki, bez potrzeby ręcznego śledzenia.
Steve K