Po co uczyć się git, gdy istnieją aplikacje GUI dla GitHub?

84

Biorąc pod uwagę, że GitHub zapewnia aplikacje GUI zarówno dla komputerów Mac, jak i Windows , jakie są zalety nauki korzystania z git z wiersza poleceń?

Obecnie używam ich aplikacji Mac do aktualizacji moich repozytoriów i jak dotąd wydaje się, że pokrywają moje potrzeby. Czego mi brakuje?

histelheim
źródło
15
Nie zapomnij gitk, który jest GUI dla Linuksa.
DeveloperDon
14
Brakuje Ci wszystkich skryptów.
SK-logic
3
@KChalhal, tak, istnieje bardzo dobry powód, dla którego większość aplikacji GUI w ogóle nie jest skryptowalna. A te, które są skryptowalne, są po prostu okropne (pomyśl COM i podobne obrzydliwości).
SK-logic
2
@KChalhal, żaden powód nie jest jakością. Naprawdę trudno jest stworzyć skryptową aplikację z czystym GUI. Wszystkie rozsądne podejścia, które znam, są w zasadzie oparte na wprowadzeniu jakiejś formy interfejsu wiersza poleceń - albo CLI w stylu Uniksa, albo tekstowego języka poleceń, albo jakiegoś protokołu binarnego, który jest zasadniczo taki sam jak język poleceń patrz COM. Ale najlepszym podejściem jest oczywiście wspólny rdzeń, który jest dostępny zarówno za pośrednictwem różnych narzędzi CLI, jak i GUI. Ten ostatni można również zbudować na CLI dla uproszczenia.
SK-logic
13
Ty nie. W ten sam sposób nie musisz uczyć się HTML / CSS, ponieważ istnieją programy Dreamweaver i Frontpage (lub cokolwiek to jest teraz). Może zadziała dla ciebie w niektórych przypadkach, ale kiedy nie, ktoś lepiej nie wie, jak to naprawdę działa.
DorkRawk

Odpowiedzi:

116

Myślę, że to pytanie jest tylko szczególnym przypadkiem „Dlaczego powinienem nauczyć się dowolnego CLI, dla którego istnieje alternatywa dla GUI?”. Podejrzewam, że to ostatnie pytanie jest tak stare jak GUI, i zakładam, że przez wiele lat próbowano na nie odpowiedzieć. Mógłbym spróbować przebić się przez własną odpowiedź na to pytanie, ale Neal Stephenson sformułował to, z czym się zgadzam, jako „ostateczną odpowiedź” ponad dziesięć lat temu w jego niezwykłym eseju Na początku ... Była linia poleceń .

Podczas gdy esej dotyczy wielu aspektów informatyki, a nawet sam Stephenson uważa, że wiele z nich jest obecnie nieaktualnych, esej wyjaśnia, w jaki sposób CLI są lepszymi GUI w niezwykle przekonujący sposób, który dosłownie zmienił moje życie. To długa lektura (~ 40 stron), ale nie mogę jej wystarczająco polecić każdemu, kto zadaje pytania takie jak zadane tutaj.

Na koniec, choć odpowiedziałbym na jakiekolwiek pytanie CLI kontra GUI w podobnym tonie, myślę, że moja odpowiedź jest szczególnie zgodna z twoim konkretnym pytaniem, ponieważ na wszystkie pytania dotyczące komputera, o które zdecydowałeś się zapytać git. gitjest prawdopodobnie najnowszym narzędziem z niezbyt długiej listy narzędzi komputerowych, które naprawdę są warte metafory „dziurawej dziury”, jak opisano w eseju Stephensona. git, podobnie jak kilka innych uniksowych rzeczy, jest powodem, aby znać CLI same w sobie. Czasami pomimo nieregularnej „porcelany” ; czasami z tego powodu.

Tak, z pewnością możesz być produktywny dzięki graficznemu interfejsowi użytkownika github, zarówno dla OSX, jak i tylko na ich stronie internetowej. Tak, w rzeczywistości jest dość elegancki, często korzystam z funkcji strony. Ale nie, nigdy nie będziesz odczuwał tego pobożnego uczucia, gdy prawy mały wisi nad szalonym git filter-branchrozkazem na eon lub dwa. Gdybym musiał powstrzymać się przed jednym doświadczeniem z komputerami - mentalnymi wyzwaniami, bliskimi przyjaźniami nawiązanymi w centrum danych o 2 nad ranem, nieskończoną drabiną kompetencji do wspinania się, dotykania życia użytkowników i panowaniem nad PB cennych danych, cushy praca i wygodne życie - zachowaj tylko jedną rzecz - byłoby to boskie uczucie.

Yaniv Aknin
źródło
5
Bardziej dostępny link do Na początku ... Był wiersz poleceń: pauillac.inria.fr/~weis/info/commandline.html
Elias Zamaria,
1
Re: przestarzałe: to byłaby część „BeOS as Batmobile”, prawda?
naught101
2
Garrett Birkel zaktualizował esej „Na początku ... był wierszem poleceń”, przerywając swoje komentarze oryginalnym esejem Neala Stephensona. Możesz przeczytać o tym tutaj .
Lubię
2
... tak, kto potrzebuje interfejsu CLI, kiedy można utworzyć interfejs GUI za pomocą Visual Basic. Idealne do takich rzeczy jak śledzenie adresu IP.
Hej,
3
Nie sugerowałem, że „starszy jest lepszy”, sugerowałem, że CLI są (dla wielu przypadków użycia hakerów) lepsze niż GUI. Interfejsy CLI są również lepsze niż przełączniki binarne i kable krosowe. Dlatego używam CLI. Artykuł nie jest „dowodem”, ponieważ jest „w artykule”, jest prozą z argumentami, które wyrażają to, co lubię w CLI. Jest stary, ale taki też jest UNIX, więc co z tego. Nawiasem mówiąc, pracuję dla Google, a przeważająca większość programistów wokół mnie używa środowiska programistycznego opartego na CLI (ale oczywiście nie mogę mówić w imieniu Google jako całości).
Yaniv Aknin
108

Jeśli wszystkie twoje potrzeby są zaspokojone, niesamowite, nie musisz zagłębiać się w git, lepiej poświęć swój czas na naukę czegoś, czego naprawdę potrzebujesz.

git to tylko narzędzie, gdy będziesz musiał zrobić coś, czego nie możesz zrobić z aplikacją GUI, będziesz o tym wiedział. Pamiętaj tylko, że github! = Git.

Yannis
źródło
1
Zgadzam się z tobą, ale mogą być rzeczy, o których obecnie nie wiem, które mogą być dla mnie przydatne, gdybym był ich świadomy. Nie?
histelheim
28
@AronLindberg Tak, prawdopodobnie są. Ale zadajesz niewłaściwe pytanie. Powinieneś poświęcić czas na badanie przepływów pracy i koncepcji gita, a nie wiersza poleceń. Nawet jeśli ktoś wyświetli listę wszystkich funkcji, których brakuje aplikacjom GUI, to skąd miałbyś wiedzieć, czy rzeczywiście tego potrzebujesz? (też jest to coś, co możesz bardzo łatwo zrobić sam, po prostu przeglądając dokumentację gita)
yannis
//, CLI zmusi cię do myślenia o przepływach pracy i pojęciach, ponieważ cała organizacja, wybory i przepływ zachodzą w twojej głowie, a nie w Kreatorze i rozwijanych menu.
Nathan Basanese
57

Większość funkcji dostępnych tylko w interfejsie CLI wchodzi w grę tylko wtedy, gdy przypadkowo wprowadzisz repozytorium w dziwny stan i chcesz go naprawić. Z drugiej strony najczęstszym sposobem na wprowadzenie repozytorium w dziwny stan jest użycie zaawansowanych funkcji, których nie rozumiesz. Jeśli będziesz trzymać się tego, co zapewnia GUI, to pokryje twoje potrzeby w 99% przypadków.

Innym powodem, dla którego możesz chcieć nauczyć się CLI, jest to, że jest to lingua franca git. Oznacza to, że chociaż wiele osób używa różnych GUI na różnych platformach, jeśli poprosisz o pomoc w StackOverflow lub gdzie indziej, odpowiedź najprawdopodobniej przyjdzie w postaci poleceń CLI. Jeśli nie znasz interfejsu CLI, opcje uzyskania pomocy będą znacznie bardziej ograniczone.

Karl Bielefeldt
źródło
Zdecydowanie najlepsza odpowiedź tutaj. Nie bla-bla-bla-filozofia.
john cj
//, To była moja pierwsza myśl i chociaż filozoficzne odpowiedzi przemówiły do ​​mnie, głównym powodem, dla którego używam CLI, jest to, że są one znacznie łatwiejsze do uzasadnienia, standaryzacji i komunikacji z innymi przez tekst. Nie wszyscy wiemy, jak rysować, ale wszyscy wiemy, jak pisać.
Nathan Basanese
9

Aplikacje GUI polegają na ręcznych interakcjach w celu wykonywania złożonych zachowań. Jest to świetne do tworzenia projektów i opracowywania nowych rzeczy.

Zalety interfejsu wiersza poleceń (CLI) wynikają z możliwości tworzenia z góry określonych skryptów, które można zautomatyzować. Wszystkie GUI GitHub to ładne grafiki i fantazyjne przyciski, które wywołują CLI git.

To, czego aplikacja GUI nie zrobi dla ciebie, to automatyczna aktualizacja pnia repo na serwerze codziennie o 1:30, ale zadanie cron, które wywołuje CLI git, jest naprawdę łatwym sposobem na skonfigurowanie tego.

Ponadto podczas pracy nad projektem w zespole wygodnie jest konfigurować skrypty instalacyjne, budować skrypty, wdrażać skrypty itp., Aby członkowie drużyny mogli skupić się na rozwiązywaniu problemów zamiast żmudnych, powtarzalnych zadań.

zzzzBov
źródło
bagażnik samochodowy? Myślę, że masz na myśli mistrza.
jpmc26
@ jpmc26, napisałem to, kiedy byłem nowy w Git pochodzącym z SVN, wybacz terminologię.
zzzzBov
6

Innym powodem, dla którego preferowany może być interfejs CLI, jest przepływ pracy. Wiele platform jest zarządzanych za pomocą wiersza polecenia. Używanie git przez CLI pozwala mi pozostać skupionym na moim projekcie i katalogu tego projektu. Na przykład mogę uruchomić test, a następnie zdecydować o zatwierdzeniu wszystkich zmian z tego samego interfejsu i lokalizacji.

Shigar Kenze
źródło
+1; a im łatwiejszy / bardziej dostępny jest jego użycie, tym bardziej prawdopodobne jest, że użyję go w odpowiednim czasie (stuknij stuknij stuknij w git zatuknij stuknij stuknij) zamiast (stuknij stuknij uruchom GUI git zatwierdź „zatwierdzenie końca tygodnia”)
Abe,
5

Niedawno muszę naprawdę zagłębić się w Git, aby móc pomóc w migracji SVN do Git. I nauczyłem się, że narzędzia wiersza poleceń Git nie są skomplikowaną częścią do nauki.

Koncepcje i pomysły stojące za Git stanowią część złożoną (i to nie dlatego, że są źle zaprojektowane, ale po prostu dlatego, że są obce większości ludzi pochodzących z innych, scentralizowanych VCS).

Po zrozumieniu pojęć rzeczywiste instrukcje wiersza poleceń stały się stosunkowo łatwe. Oznacza to, że interfejs użytkownika tak naprawdę nie pomaga zrozumieć Git (z wyjątkiem najprostszych operacji).

Joachim Sauer
źródło
3
W rzeczywistości koncepcje gitsą tak proste, że ludzie nie mogą ich rozgryźć - szukają czegoś trudniejszego.
gahooa
4

Znajomość interfejsu CLI jest przydatna, gdy (a nie jeśli) jesteś w środowisku, w którym nie można uzyskać aplikacji GUI.

Jeden potencjalny scenariusz: poproszono Cię o pomoc przez kilka dni w projekcie w zamkniętym miejscu, w którym denerwująco trudno jest wprowadzić nowe narzędzia do systemu. Używają tylko CLI. Twoja produktywność właśnie uderzyła, ponieważ musisz nauczyć się wszystkiego od nowa.

Grumpasaurus
źródło
Odpowiedzi w jednym zdaniu rzadko mają dużą wartość. Czy możesz rozwinąć swoją odpowiedź?
Walter
// On jest @grumpasaurus. Czego się spodziewałeś, sonet?
Nathan Basanese
2

Jednym z powodów, dla których warto nauczyć się git z wiersza poleceń, jest to, że większość dokumentacji jest napisana dla tego środowiska. Ponadto, jeśli zadasz pytanie: „jak zrobić X za pomocą git?”, Są szanse, że odpowiedź będzie zawierać polecenia wiersza polecenia.

Nemanja Trifunovic
źródło
1

Jednym z głównych problemów z użyciem GUI w porównaniu z wierszem poleceń jest to, że w większości przypadków nie można mieć takiej samej kontroli nad procesem. Na przykład aplikacja GitHub jest świetna pod względem użyteczności dla wielu przepływów pracy git, ale nadal może być uciążliwa dla zaawansowanych procesów git.

Jako przykład, oto kilka rzeczy, których nie wymyśliłem, jak korzystać z aplikacji GitHub (należy również zauważyć, że każdy GUI ma również krzywą uczenia się).

  • Rebasing zatwierdza
  • Wciśnij / pociągnij / pobierz indywidualnie (w GitHub są one zgrupowane w jednym poleceniu „synchronizacji”, co może czasami powodować problemy)
  • Zmienia zobowiązania

Wreszcie interfejsy CLI pozwalają użytkownikom korzystać z tych narzędzi podczas tworzenia skryptów.

KLee1
źródło
Ostatni punkt jest dla mnie kluczowy. Skrypty kompilacji, narzędzia i serwery rzadko używają GUI do kontroli wersji dostępu GUI. Zamiast tego należy użyć wiersza polecenia.
0

Nie wiem o GitHub dla komputerów Mac, ale aplikacja Windows wykonuje tylko najbardziej typowe zadania - dodawanie, zatwierdzanie, wypychanie, wyciąganie itp. Bardziej złożone zadania, takie jak git merge --no-ffmuszą być wykonywane z wiersza poleceń.

Są też przypadki z git, gdy GUI nie jest dostępne, np. Gdy SSHing do zdalnych serwerów.

Ale w przeciwnym razie, jeśli GUI daje ci wszystko, czego potrzebujesz, to nauka wiersza poleceń może być stratą czasu. Moja praca wykorzystuje TortoiseSVN w środowisku tylko Windows i nie musiałem dotykać wiersza poleceń SVN ani razu.

ikh
źródło
0

Właśnie nauczyłem się jednego przypadku, w którym CLI może być lepszy niż GUI. Aby to zilustrować, wziąłem przykład z książki git - kontrola wersji dla wszystkich.

Jeśli chcesz udostępnić przez intranet, możesz użyć:

  1. Serwer Gitolite
  2. Wspólny katalog udostępniania z nagimi repozytoriami

Spójrz na kroki, aby utworzyć nagie repo.

Tworzenie pustego repozytorium w trybie CLI

Polecenie utworzenia pustego repozytorium byłoby takie samo, jak użyte do klonowania repozytorium, z wyjątkiem parametru --bare, co robi różnicę. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench Wykonanie powyższego kodu w konsoli powinno utworzyć czysty klon naszego repozytorium Workbench we wspólnym folderze współdzielonym o nazwie udział_ogólny.

Tworzenie nagiego repozytorium w trybie GUI

Tworzenie gołego klonu z już istniejącego repozytorium za pomocą GUI jest łatwym procesem. Wszystko, co musisz zrobić, to:

  1. Skopiuj katalog .git z istniejącego repozytorium i wklej go z inną nazwą ..git (jakakolwiek nazwa chcesz nadać nowemu nagiemu repozytorium) poza repozytorium. W naszym przypadku mamy niezabezpieczone repozytorium o nazwie Workbench w C: \ Users \ raviepic3 \ Desktop \, w którym mamy content.docx. A teraz chcę utworzyć nowe nagie repozytorium z tego interfejsu graficznego. Skopiuję C: \ Users \ raviepic3 \ Desktop \ Workbench.git i wkleję go jako C: \ generic_share \ Bare_Workbench.git.

  2. Otwórz config filewewnętrzny plik Bare_Workbench.git za pomocą edytora tekstu i znajdź wiersz, który mówi, bare = falsei zamień ciąg false na true.

  3. Zapisz i wyjdź.

W GUI musisz wykonać tak wiele kliknięć i pamiętać, który plik ma być edytowany. W CLI jedno proste polecenie robi to wszystko za Ciebie.

Sid Smith
źródło