Tại sao phải học git khi có ứng dụng GUI cho GitHub?


84

Cho rằng GitHub cung cấp ứng dụng GUI cho cả MacWindows , lợi ích của việc học cách sử dụng git từ dòng lệnh là gì?

Hiện tại tôi đang sử dụng ứng dụng mac của họ để cập nhật kho lưu trữ của mình và cho đến nay nó dường như đáp ứng nhu cầu của tôi. Những gì tôi có thể bỏ lỡ?


15
Đừng quên gitk là một gui cho Linux.
Nhà phát

14
Bạn đang thiếu tất cả các kịch bản.
SK-logic

3
@KChaloux, vâng, có một lý do rất chính đáng tại sao hầu hết các ứng dụng GUI không có kịch bản. Và những người có khả năng viết kịch bản chỉ là khủng khiếp (nghĩ COM và những điều ghê tởm tương tự).
SK-logic

2
@KChaloux, không có lý do gì không phải là chất lượng. Thật sự rất khó để tạo một ứng dụng GUI thuần túy có thể viết được. Về cơ bản, tất cả các cách tiếp cận hợp lý mà tôi biết là được xây dựng khi giới thiệu một số dạng giao diện dòng lệnh - hoặc CLI kiểu Unix hoặc ngôn ngữ lệnh dựa trên văn bản hoặc một giao thức nhị phân về cơ bản giống như ngôn ngữ lệnh , xem COM. Nhưng cách tiếp cận tốt nhất, tất nhiên, là có một lõi chung có thể truy cập được thông qua các công cụ CLI khác nhau và từ GUI. Cái sau cũng có thể được xây dựng dựa trên CLI để đơn giản.
SK-logic

13
Bạn không. Theo cùng một cách bạn không cần phải học HTML / CSS vì Dreamweaver và Frontpage (hoặc bất cứ thứ gì hiện tại) tồn tại. Có thể nó sẽ làm việc cho bạn một số thứ, nhưng khi nó không có ai đó biết rõ hơn về cách nó thực sự hoạt động.
DorkRawk

Câu trả lời:


116

Tôi nghĩ rằng câu hỏi này chỉ là một trường hợp đặc biệt của "Tại sao tôi nên tìm hiểu bất kỳ CLI nào tồn tại thay thế GUI?". Tôi nghi ngờ câu hỏi sau cũng cũ như GUI và tôi cho rằng có nhiều nỗ lực để trả lời nó trong nhiều năm qua. Tôi có thể cố gắng vượt qua câu trả lời của mình cho câu hỏi này, nhưng Neal Stephenson đã nói rõ điều mà tôi đồng ý với tư cách là 'câu trả lời cuối cùng' hơn mười năm trước trong bài tiểu luận đáng chú ý của anh ấy trong Khởi đầu ... là Dòng lệnh .

Trong khi bài luận chạm đến nhiều khía cạnh của điện toán, và ngay cả khi chính Stephenson nghĩ rằng rất nhiều trong số đó đã lỗi thời, bài luận giải thích cách CLI là GUI tốt hơn theo cách cực kỳ hấp dẫn đã thay đổi cuộc sống của tôi. Đó là một bài đọc dài (~ 40 trang), nhưng tôi không thể giới thiệu nó đủ cho bất kỳ ai đặt câu hỏi như bạn hỏi ở đây.

Cuối cùng, mặc dù tôi trả lời bất kỳ loại câu hỏi CLI và GUI nào theo cách tương tự, tôi nghĩ rằng câu trả lời của tôi đặc biệt đúng với câu hỏi cụ thể của bạn vì tất cả những điều máy tính bạn chọn hỏi git. gitđược cho là công cụ mới nhất trong một danh sách dài các công cụ máy tính thực sự xứng đáng với phép ẩn dụ lỗ hổng như mô tả trong bài tiểu luận của Stephenson. git, giống như một số thứ Unix-ish khác, là một lý do để biết tất cả CLI. Đôi khi, mặc dù 'sứ' thất thường của nó ; đôi khi vì nó

Vì vậy, có, bạn chắc chắn có thể làm việc hiệu quả với GUI của github, cho OSX hoặc thậm chí chỉ trên trang web của họ. Vâng, nó thực sự khá bóng bẩy, tôi thường xuyên sử dụng các tính năng của trang web. Nhưng không, bạn sẽ không bao giờ có cảm giác tin kính đó khi màu hồng bên phải của bạn treo trên một git filter-branchmệnh lệnh điên rồ cho một hoặc hai con aeon. Nếu tôi phải giữ một điều duy nhất từ ​​kinh nghiệm của mình với điện toán - những thách thức về tinh thần, thì tình bạn thân thiết đã hình thành trong một trung tâm dữ liệu lúc 2 giờ sáng, nấc thang vô hạn của năng lực để trèo lên, chạm vào cuộc sống của người dùng và thống trị PB của dữ liệu quý giá, cushy công việc và cuộc sống thoải mái - chỉ giữ một điều - đó là cảm giác tin kính.


5
Liên kết dễ truy cập hơn vào lúc bắt đầu ... Là dòng lệnh: pauillac.inria.fr/~weis/info/commandline.html
Elias Zamaria

1
Re: lỗi thời: đó sẽ là phần "BeOS as Batmobile", phải không?
ness101

2
Garrett Birkel đã cập nhật bài tiểu luận "Lúc mới bắt đầu ... Là dòng lệnh" bằng cách xen kẽ các bình luận của ông với bài tiểu luận gốc của Neal Stephenson. Bạn có thể đọc về nó ở đây .
Tôi thích Mã

2
... vâng, ai cần CLI khi bạn có thể tạo giao diện GUI bằng Visual Basic. Tuyệt vời cho những thứ như theo dõi một địa chỉ IP.
Này

3
Tôi không gợi ý 'cũ hơn là tốt hơn', tôi đã gợi ý CLI là (đối với nhiều tin tặc của hacker) vượt trội hơn GUI. CLI cũng vượt trội so với công tắc nhị phân và dây vá. Đó là lý do tại sao tôi sử dụng CLI. Bài viết không phải là "bằng chứng" bởi vì nó là "trong một bài viết", nó là văn xuôi với những lập luận thể hiện những gì tôi thích về CLI. Nó đã cũ, nhưng UNIX cũng vậy, vậy thì sao. Nhân tiện, tôi làm việc cho Google và phần lớn các nhà phát triển xung quanh tôi sử dụng môi trường phát triển dựa trên CLI (tất nhiên tôi không thể nói cho Google nói chung).
Yaniv Aknin

108

Nếu tất cả các nhu cầu của bạn được bảo hiểm, tuyệt vời, không cần phải đào sâu vào git, thời gian của bạn sẽ được dành tốt hơn để học những thứ bạn thực sự cần.

git chỉ là một công cụ, khi bạn cần làm gì đó với ứng dụng GUI, bạn sẽ biết nó. Chỉ cần nhớ rằng github! = Git.


1
Tôi đồng ý với bạn, nhưng có thể có những điều mà tôi không biết hiện tại, nó có thể hữu ích cho tôi nếu tôi biết về chúng. Không?
histelheim

28
@AronLindberg Vâng, có lẽ là có. Nhưng bạn đang đặt câu hỏi sai, điều bạn nên dành thời gian để điều tra là quy trình và khái niệm công việc của git, chứ không phải dòng lệnh. Ngay cả khi ai đó liệt kê cho bạn tất cả các chức năng mà các ứng dụng GUI bị thiếu, làm sao bạn biết nếu bạn thực sự cần nó? (cũng là điều bạn có thể dễ dàng tự làm, chỉ bằng cách xem tài liệu của git)
yannis

//, CLI sẽ buộc bạn phải suy nghĩ về quy trình làm việc và khái niệm nhiều hơn một chút, bởi vì tất cả các tổ chức, lựa chọn và luồng sẽ xảy ra trong đầu bạn, không phải trong trình hướng dẫn và trình đơn thả xuống.
Nathan Basan

57

Hầu hết các tính năng chỉ dành cho CLI chỉ phát huy tác dụng khi bạn vô tình đưa kho lưu trữ của mình vào trạng thái kỳ lạ và muốn sửa nó. Mặt khác, cách phổ biến nhất để đưa repo của bạn vào trạng thái kỳ lạ là sử dụng các tính năng nâng cao mà bạn không hiểu. Nếu bạn tuân theo những gì GUI cung cấp, điều đó sẽ đáp ứng 99% nhu cầu của bạn.

Một lý do khác mà bạn có thể muốn học CLI là vì đó là lingua franca. Điều đó có nghĩa là trong khi nhiều người sử dụng GUI khác nhau trên các nền tảng khác nhau, nếu bạn yêu cầu trợ giúp trên StackOverflow hoặc ở nơi khác, câu trả lời rất có thể sẽ đến dưới dạng các lệnh CLI. Nếu bạn không biết CLI, các tùy chọn nhận trợ giúp của bạn sẽ bị hạn chế hơn nhiều.


Chắc chắn câu trả lời tốt nhất ở đây. Không phải blah-blah-blah-triết lý.
john cj

//, Đây là suy nghĩ đầu tiên của tôi và mặc dù các câu trả lời triết học đã hấp dẫn tôi, lý do chính khiến tôi sử dụng CLI là vì chúng dễ dàng lý luận hơn, chuẩn hóa và giao tiếp với người khác qua văn bản. Chúng ta có thể không biết vẽ, nhưng tất cả chúng ta đều biết cách gõ.
Nathan Basan

9

Các ứng dụng GUI dựa trên các tương tác thủ công để thực hiện các hành vi phức tạp. Điều này là tuyệt vời để thiết lập các dự án và phát triển những điều mới.

Lợi ích của Giao diện dòng lệnh (CLI) đến từ khả năng tạo các tập lệnh được xác định trước có thể được tự động hóa. Tất cả GUI của GitHub là, một số đồ họa đẹp và các nút lạ mắt gọi là git CLI.

Những gì ứng dụng GUI sẽ không làm cho bạn là tự động cập nhật trung kế của máy chủ trên máy chủ hàng ngày lúc 1:30 sáng, nhưng một công việc định kỳ gọi git CLI là một cách thực sự dễ dàng để thiết lập.

Ngoài ra, khi làm việc trong một dự án trong một nhóm, thật thuận tiện để thiết lập các tập lệnh cài đặt, xây dựng tập lệnh, triển khai tập lệnh và tương tự để đồng đội có thể tập trung vào giải quyết các vấn đề thay vì các nhiệm vụ lặp đi lặp lại tẻ nhạt.


Thân cây? Tôi nghĩ bạn có nghĩa là chủ.
jpmc26

@ jpmc26, tôi đã viết bài này khi tôi mới sử dụng git đến từ SVN, xin lỗi về thuật ngữ này.
zzzzBov

6

Một lý do khác tại sao CLI có thể thích hợp hơn là vấn đề về quy trình làm việc. Nhiều khung được quản lý thông qua dòng lệnh. Sử dụng git thông qua CLI cho phép tôi tập trung vào dự án của mình và trong thư mục dự án đó. Chẳng hạn, tôi có thể chạy thử nghiệm và sau đó quyết định cam kết tất cả các thay đổi mới từ cùng một giao diện và vị trí.


+1; và càng dễ sử dụng / dễ truy cập hơn, tôi càng có khả năng sử dụng nó khi vào thời điểm thích hợp (nhấn tap tap git commit tap tap tap) thay vì (nhấn tap khởi chạy GUI git commit 'end of week commit')
Abe

5

Gần đây tôi phải thực sự đào sâu vào Git để có thể giúp đỡ với việc di chuyển từ SVN sang Git. Và điều tôi học được là các công cụ dòng lệnh Git không phải là phần phức tạp để học.

Các khái niệm và ý tưởng đằng sau Git là phần phức tạp (và đó không phải vì chúng được thiết kế tồi, mà đơn giản vì chúng xa lạ với hầu hết những người đến từ một số VCS tập trung khác).

Khi tôi đã nắm được các khái niệm, các câu lệnh dòng lệnh thực tế trở nên tương đối dễ dàng. Điều đó có nghĩa là UI không thực sự giúp hiểu Git (ngoại trừ các thao tác đơn giản nhất).


3
Trên thực tế, các khái niệm đằng sau gitđơn giản đến mức mọi người không thể tìm ra chúng - họ đang tìm kiếm thứ gì đó khó hơn.
gahooa

4

Biết CLI sẽ có ích khi bạn (không phải) ở trong một môi trường mà bạn không thể truy cập vào ứng dụng GUI.

Một kịch bản tiềm năng: Bạn được yêu cầu giúp đỡ chỉ trong vài ngày cho một dự án ở một địa điểm kín, nơi rất khó khăn và lâu dài để có được các công cụ mới vào hệ thống. Họ chỉ sử dụng CLI. Năng suất của bạn chỉ là một cú hích vì bạn cần phải học lại mọi thứ.


Một câu trả lời hiếm khi cung cấp rất nhiều giá trị. Bạn có thể vui lòng mở rộng khi câu trả lời của bạn?
Walter

//, Anh ấy là @grumpasaurus. Bạn đã mong đợi điều gì, một sonnet?
Nathan Basan

2

Một lý do để học git dòng lệnh là hầu hết các tài liệu được viết cho môi trường đó. Ngoài ra, nếu bạn hỏi một câu hỏi: "làm thế nào để tôi làm X với git?", Rất có thể câu trả lời sẽ chứa các lệnh dòng lệnh.


1

Một trong những vấn đề chính khi sử dụng GUI so với dòng lệnh là bạn không thể có cùng quyền kiểm soát quy trình của mình, trong hầu hết các trường hợp. Ví dụ, ứng dụng GitHub rất tuyệt vời về khả năng sử dụng cho rất nhiều quy trình công việc git, nhưng vẫn có thể cồng kềnh cho các quy trình git nâng cao.

Ví dụ, đây là một số điều mà tôi chưa tìm ra cách thực hiện bằng ứng dụng GitHub (một điều khác cần lưu ý là mỗi GUI cũng có một đường cong học tập).

  • Cam kết nổi loạn
  • Đẩy / kéo / tìm nạp riêng lẻ (trong GitHub, chúng được nhóm thành một lệnh "đồng bộ hóa" duy nhất có thể gây ra sự cố một số lần)
  • Sửa đổi cam kết

Cuối cùng, CLI cho phép người dùng sử dụng các công cụ này khi viết kịch bản.


Điểm cuối cùng là khá quan trọng đối với tôi. Xây dựng tập lệnh, công cụ và máy chủ hiếm khi có một trình sử dụng gui để có quyền kiểm soát phiên bản truy cập gui. Thay vào đó, người ta phải sử dụng dòng lệnh.

0

Tôi không biết về GitHub cho Mac, nhưng ứng dụng Windows chỉ thực hiện các tác vụ phổ biến nhất - thêm, cam kết, đẩy, kéo, v.v. Các tác vụ phức tạp hơn như git merge --no-ffphải được thực hiện từ dòng lệnh.

Ngoài ra, có những trường hợp với git khi GUI không khả dụng, ví dụ như khi SSH vào máy chủ từ xa.

Nhưng nếu không, nếu GUI cung cấp cho bạn mọi thứ bạn cần thì việc học dòng lệnh có thể gây lãng phí thời gian. Công việc của tôi sử dụng TortoiseSVN trong môi trường chỉ dành cho Windows và tôi chưa phải chạm vào dòng lệnh SVN dù chỉ một lần.


0

Tôi mới học được một trường hợp trong đó CLI có thể tốt hơn GUI. Để minh họa điều này, tôi lấy một ví dụ từ một cuốn sách git - kiểm soát phiên bản cho mọi người.

Khi bạn muốn chia sẻ qua mạng nội bộ, thì bạn có thể sử dụng:

  1. Máy chủ
  2. Thư mục chia sẻ chung với kho lưu trữ trần

Nhìn vào các bước để tạo ra một repo trần.

Tạo một kho lưu trữ trần trong chế độ CLI

Lệnh tạo một kho lưu trữ trần sẽ giống như lệnh mà bạn đã sử dụng để sao chép một kho lưu trữ ngoại trừ tham số --bare, điều này tạo ra sự khác biệt. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench Thực thi mã trước trong bảng điều khiển của bạn sẽ tạo một bản sao trần của kho lưu trữ Workbench của chúng tôi trong thư mục dùng chung chung của bạn được gọi là generic_share.

Tạo một kho lưu trữ trần trong chế độ GUI

Tạo một bản sao trần từ một kho lưu trữ đã có sẵn bằng GUI là một quá trình dễ dàng. Tất cả bạn cần làm là:

  1. Sao chép thư mục .git từ kho lưu trữ hiện có và dán nó với khác_name.git (bất kỳ tên nào bạn muốn đặt cho kho lưu trữ mới của bạn) bên ngoài kho lưu trữ. Trong trường hợp của chúng tôi, chúng tôi có một repo không có tên là Workbench tại C: \ Users \ raviepic3 \ Desktop \ bên trong mà chúng tôi có content.docx. Và bây giờ tôi muốn tạo một kho lưu trữ mới từ GUI này bằng GUI. Tôi sẽ sao chép C: \ Users \ raviepic3 \ Desktop \ Workbench.git và dán nó dưới dạng C: \ generic_share \ Bare_Workbench.git.

  2. Mở config fileBare_Workbench.git bên trong bằng trình soạn thảo văn bản và tìm dòng có nội dung bare = falsevà thay thế chuỗi sai bằng true.

  3. Lưu và thoát.

Trong GUI, bạn phải thực hiện rất nhiều lần nhấp và nhớ tệp nào sẽ được chỉnh sửa. Trong CLI, một lệnh đơn giản sẽ làm tất cả cho bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.