2013-08-08 17 views
13

tôi đang học Git và đã unabletofindanyexplanationoftheflagsyntax.Git Flag Cú pháp: tại sao một số cờ có dấu gạch ngang và một số có --two?

Tôi không đề cập đến những "dấu gạch ngang đôi trần"

--

đó, như chúng ta biết, chỉ ra rằng những gì sau không phải là một lựa chọn. Tôi đang đề cập đến các cờ thực tế khác nhau mà đôi khi có một dấu gạch ngang và đôi khi có hai dấu gạch ngang.

git log -2 -p -U1 --graph

sự khác biệt giữa một lá cờ với một dấu gạch ngang và hai dấu gạch ngang là gì? Dấu gạch ngang kép chỉ ra điều gì?

Ví dụ, hai cờ sau giống hệt nhau, (according to this):

-q 
--quiet 

Tại sao số lượng khác nhau của dấu gạch ngang? Nếu tôi đặt sai số thì sao?

+0

Hoặc những tùy chọn yêu cầu không có dấu gạch ngang (ví dụ: danh sách stit git)? –

Trả lời

16

Sự hiểu biết của tôi là git tuân theo quy ước Linux 'chuẩn' cho cờ. Đó là:

  • một dấu gạch ngang cho 'ngắn' cờ: thường một lá cờ nhân vật, nhưng đôi khi những lá cờ với một nhân vật duy nhất, sau đó ký tự tiếp tục đại diện cho một tham số để lá cờ (ví dụ git log -SFoo, trong đó Foo là một tham số vào cờ -S). Những lá cờ này có thể hoặc không thể viết tắt là những lá cờ dài khác.
  • Hai dấu gạch ngang cho cờ 'dài': cờ nhiều ký tự thường là từ tiếng Anh. Nếu những cờ này nhận được thông số, nó sẽ được tách ra khỏi cờ bằng một dấu hiệu = (ví dụ: git log --author=Peter).

Đây là 'lý do': đó là quy ước được nhúng trong thế giới Linux. Git đến từ thế giới này, vì vậy nó theo quy ước. Các 'hai dấu gạch ngang cho một lá cờ dài, một cho một cờ ngắn' quy tắc nên hướng dẫn bạn như thế nào nhiều dấu gạch ngang để sử dụng cho một lá cờ.

Vì lý do tại sao có các cờ ngắn và dài trùng lặp, chẳng hạn như --quiet-q, đó chỉ là để cung cấp tùy chọn thuận tiện hoặc dễ nhớ. --quiet dễ nhớ hơn, nhưng -q nhanh hơn khi nhập và phân tích cú pháp về tinh thần nếu bạn quen với nó. Ví dụ, tôi gõ git commit -m "...blah" vì vậy thường xuyên nó sẽ nhận được trên dây thần kinh của tôi nếu tôi đã tăng gấp đôi chiều dài của lệnh của tôi mỗi lần bằng cách nhập git commit --message='...blah'.

tôi đã không gặp bất kỳ cờ git mà hành xử khác nhau cho hai dấu gạch ngang và một dấu gạch ngang, vì vậy thường nếu bạn nhập hai dấu gạch ngang cho một lá cờ một dấu gạch ngang hoặc ngược lại, không có gì không thể sửa chữa xấu sẽ xảy ra, git sẽ chỉ phàn nàn về lá cờ của bạn và không làm gì cả.

Tất nhiên, git có một số lượng lớn lệnh, mỗi lệnh có số lượng cờ lớn, vì vậy có thể có ngoại lệ đối với tất cả các quy tắc này. Họ thường nên giữ mặc dù.

+3

Các lá cờ dài cũng thường được ưa thích trong các kịch bản, vì ai đó đọc một kịch bản ngay lập tức có ý tưởng tốt về những gì '--quiet' làm, nhưng một cái gì đó như' -q' có thể sẽ cần được tìm kiếm để hiểu nó. –

+4

Cờ ngắn truyền thống có thể được đóng gói; ví dụ 'ls -ltr' tương đương với' ls -l -t -r'. Nhưng git dường như không ủng hộ điều đó. –

+0

@KeithThompson Một số lệnh git hỗ trợ bundling, chẳng hạn như 'git grep'. Tôi không biết lý do để hỗ trợ hoặc không hỗ trợ nó cho một lệnh nhất định, mặc dù. – Peter

Các vấn đề liên quan