2013-08-08 21 views
13

uczę Git i zostały unabletofindanyexplanationoftheflagsyntax.Składnia flagi Git: dlaczego niektóre flagi mają - jedną myślnik, a niektóre - dwie?

Ja nie odnosząc się do „gołych podwójnymi kreskami”

--

który, jak wiemy, wskazują, że co za tym idzie nie jest rozwiązaniem. Mam na myśli różne flagi, które czasem mają jedną kreskę, a czasem dwie.

git log -2 -p -U1 --graph

Jaka jest różnica między flagą z jedną kreską i dwoma kreskami? Co oznacza podwójny kreska?

Na przykład następujące dwie flagi są identyczne (according to this):

-q 
--quiet 

Dlaczego inna liczba kresek? Co się stanie, jeśli podam zły numer?

+0

A co z opcjami, które nie wymagają kresek (np. Lista ukryć git)? –

Odpowiedz

16

Rozumiem, że git jest zgodny ze standardową konwencją Linux dotyczącą flag. Czyli:

  • jedna kreska na „krótkim” flagi: Ogólnie jednej flagi znaków, ale czasami flagi za pomocą jednego znaku, a następnie dalsze znaki, które stanowią parametr do flagi (np git log -SFoo, w którym Foo jest parametrem do flagi -S). Te flagi mogą, ale nie muszą być skróconą formą innych, dłuższych flag.
  • Dwa kreski dla długich flag: flagi wieloznakowe, które zazwyczaj są słowem angielskim. Jeśli te flagi otrzymują parametry, jest ono oddzielone od flagi znakiem = (np. git log --author=Peter).

To jest "dlaczego": jest to konwencja osadzona w świecie Linuksa. Git pochodzi z tego świata, więc podąża za konwencją. "Dwa kreski dla długiej flagi, jedna dla krótkiej flagi" powinny wskazywać, ile kresek należy użyć dla flagi.

Jeśli chodzi o powielanie krótkich i długich flag, takich jak --quiet i -q, wystarczy podać opcję przydatności mnemonicznej lub zwięzłości. Łatwiej jest zapamiętać numer --quiet, ale można go szybciej pisać i przetwarzać w myślach, jeśli już się przyzwyczaiłeś. Na przykład wpisałem git commit -m "...blah", więc często działał mi na nerwy, gdybym musiał podwoić długość mojego polecenia za każdym razem, wprowadzając git commit --message='...blah'.

I nie natknąć żadnej flagi git, które zachowują się inaczej podane dwie kreski i jedna kreska, więc generalnie jeśli wpiszesz dwie kreski na fladze jedna kreska lub odwrotnie, nic nieodwracalnie złego się stanie, będzie git po prostu narzekaj na swoje flagi i nie rób nic.

Oczywiście git ma ogromną liczbę poleceń, z których każda zawiera ogromną liczbę flag, więc możliwe jest, że istnieją wyjątki od tych wszystkich reguł. Powinny jednak ogólnie trzymać.

+3

Długie flagi są często preferowane w skryptach, ponieważ ktoś czytający skrypt natychmiast ma dobre pojęcie o tym, co "--quiet" robi, ale coś takiego jak "-q" będzie prawdopodobnie wymagało sprawdzenia, aby zrozumieć, co robi. –

+4

Tradycyjnie krótkie flagi można łączyć; na przykład 'ls -ltr' jest odpowiednikiem' ls -l -t -r'. Ale git nie wydaje się tego wspierać. –

+0

@KeithThompson Niektóre polecenia git obsługują sprzedaż pakietową, na przykład 'git grep'. Nie znam jednak uzasadnienia dla wspierania lub nieobsługiwania go dla danego polecenia. – Peter