Jestem programistą .NET i wielokrotnie używałem TFS (serwer fundacji zespołu) jako mojego oprogramowania do kontroli źródła. Dobre cechy TFS to:
- Dobra integracja z Visual Studio (więc robię prawie wszystko wizualnie; bez poleceń konsoli)
- Łatwe wymeldowanie, proces zameldowania
- Łatwe łączenie i rozwiązywanie konfliktów
- Łatwe automatyczne kompilacje
- Rozgałęzienie
Teraz chcę używać Git jako szkieletu, repozytorium i kontroli źródła moich projektów open source. Moje projekty są w języku C #, JavaScript lub PHP z bazami danych MySQL lub SQL Server jako mechanizm przechowywania.
Właśnie skorzystałem z pomocy github.com w tym celu, utworzyłem tam profil i pobrałem GUI dla Git. Do tej części było tak łatwo.
Ale prawie utknąłem na dalszych krokach. Chcę po prostu wykonać kilka prostych (naprawdę prostych) operacji, w tym:
- Tworzenie projektu w Git i mapowanie go do folderu na moim laptopie
- Sprawdzanie / sprawdzanie plików i folderów
- Rozwiązywanie konfliktów
To wszystko, co muszę teraz zrobić. Wygląda jednak na to, że GUI nie jest tak przyjazny dla użytkownika. Oczekuję, że GUI będzie mieć Connect To...
coś takiego, a następnie spodziewam się, że zostanie wyświetlona lista projektów, a kiedy wybiorę jeden, spodziewam się zobaczyć listę plików i folderów tego projektu, podobnie jak eksploracja projektu TFS w Visual Studio. Następnie chcę móc kliknąć plik prawym przyciskiem myszy i wybrać check-in...
lub check-out
i tak dalej.
Czy oczekuję dużo? Co powinienem zrobić, aby łatwo korzystać z Git tak jak TFS? Czego tu brakuje?
źródło
Odpowiedzi:
Zalety git wynikają z odrzucenia wielu starych założeń dotyczących tego, co powinien zrobić VCS. Wady git wynikają z niemożności wykorzystania wcześniejszego doświadczenia i niemożności robienia rzeczy tak, jak jesteś przyzwyczajony.
Jeśli zamierzasz przejść z czegoś innego na git, spróbuj uruchomić tabula-rasa (chociaż nie jest to możliwe w praktyce). Oceń to na podstawie tego, co robi i jak dobrze to robi, a nie jak to robi w porównaniu do tego, jak jesteś przyzwyczajony do tego. Nie chodzi o to, że oczekujesz zbyt wiele, ale o to, że twoje oczekiwania są ortogonalne względem tego, co zapewnia git. Jeśli jesteś żonaty z operacją GUI, będziesz rozczarowany. Git ma dostępne narzędzia GUI, ale niewiele dodają. To nie jest brak dostarczenia ich tak bardzo, że gui może dodać niewiele. GitK pomaga nie w codziennych operacjach, ale w wizualizacji struktury gałęzi i analizowaniu lub przeszukiwaniu historii.
Oto głupia analogia do tego, co rozumiem przez „ortogonalny”. Jedną z rzeczy, które możesz zrobić z gazetą, jest owinięcie w nią ryb lub użycie jej do wyłożenia klatki dla ptaków. Ale nie są one niezbędne do funkcjonowania gazety, są to przypadkowe cechy formy, w jakiej się pojawia. Oczekuje, że git „sprawdzi pliki” lub „pozwoli ci wybierać projekty” lub zapewni „połącz z ... ”przypomina trochę oczekiwanie, że uda się owinąć ryby lub wyłożyć klatki dla ptaków na stronie internetowej gazety .
źródło
Czy rozważałeś rtęć? Podobnie jak git, jest to DCVS i pozwala robić wszystkie fajne rzeczy, które można zrobić z DCVS. Podobnie jak git, istnieje całkiem niezły dostawca usług w chmurze (bitbucket). Ale, w przeciwieństwie do gita, historia systemu Windows jest całkiem przyzwoita, nie jesteś obywatelem drugiej klasy. Masz dobre opcje narzędzi (TortiseHG) i całkiem przyzwoitą integrację Visual Studio (VisualHG).
Jednak w studiu wizualnym nic nie będzie takie jak TFS - świat po prostu nie jest tak okablowany.
źródło
svn
i przegapiłem wiele rzeczy, które były tak łatwehg
. Teraz przeprowadzam sięgit
i mam mieszane uczucia. Uwielbiam odzyskiwać wiele udogodnień, za którymi tęskniłemsvn
, ale wciąż tęsknię za prostotą whg
porównaniu do niepotrzebnej złożonościgit
. Nawet sama instalacja TortoiseGit w systemie Windows wymaga przeskakiwania przez obręcze, które po prostu nie są konieczne w TortoiseHg .Rok temu przeszedłem z SVN na git i jestem z tego bardzo zadowolony. Jednak nie polegam na żadnym GUI, a jeśli sztywno odmówisz wiersza poleceń, może to stanowić problem.
Wydaje się, że spodziewasz
git
się działać tak, jak zwykle, ale tak nie jest. Nie jest to trudne, ale zanim przejdziesz dalej, powinieneś zapoznać się z jego zasadami.Git jest dystrybuowany, co oznacza, że zawsze pracujesz z lokalnym repozytorium, które może być mapowane na dowolną liczbę pilotów, w tym zero. Podczas zabawy z projektem innej osoby używam dwóch pilotów: ich repozytorium git lub SVN i mojego własnego serwera.
Zawsze zaczynam od utworzenia pustego katalogu a następnie albo
git init
albogit clone SOME-REMOTE-REPOSITORY
. Ten link może ci pomóc.Nie udało Ci się napisać, jakiego GUI używasz. Zarówno
TortoiseGit
igit-gui
na pewno może to zrobić.Do tego używam
git-gui
lub mojego ulubionego edytora tekstu.Połącz z czym, kiedy może być 0 do N pilotów? Git nie pozostaje połączony ze zdalnym serwerem, tworzy połączenie tylko tymczasowo i tylko dla kilku poleceń pracujących ze zdalnym repozytorium. Większość pracy wykonywana jest lokalnie.
Zakładam, że
projects
masz na myślirepositories
.Obawiam się, że nie ma czegoś takiego. Git na zdalnym serwerze działa ściśle tylko z jednym repozytorium. Wyświetlanie wszystkich repozytoriów jest równoważne z wyświetlaniem wszystkich katalogów zawierających podkatalog
.git
. Jestem pewien, że jest coś takiegoGitHub
.Ponownie obawiam się, że nie ma czegoś takiego, ponieważ
git
działa lokalnie. I znowu nie przydałoby się wiele. Po prostu klonuj repozytorium i przeglądaj je na swoim komputerze. Podczas gdy klonowanie dużych repozytoriów zajmuje trochę czasu, wszystkie kolejne operacje są znacznie szybsze i możesz spojrzeć na dowolne zatwierdzenie lub gałąź.Znowu
git
działa lokalnie. Nie ma więc sensu zameldowanie się ani wyrejestrowanie w zdalnym repozytorium. Praca w ten sposób to strata czasu nawet w szybkiej sieci LAN. Pobierz repozytorium na swój komputer, pracuj z nim igit push
zmianami w pilocie. Pomyśl o tym jak o opublikowaniu zmian i tworzeniu kopii zapasowej. Powinieneś popełniać bardzo często lokalnie .Przed rozpoczęciem pracy
git fetch
lubgit pull
zmian wprowadzonych z pilota na wypadek, gdyby ktoś inny z nim pracował.Tak i nie. Oczekujesz czegoś innego niż to, co oferuje. Możesz uzyskać coś znacznie lepszego,
git
jest mocny, elastyczny, bezpieczny, szybki jak diabli i może zrobić wszystko, czego potrzebujesz, ale nie może dokładnie naśladować tego, co robi scentralizowany system VCS.źródło
Sprawiłem, że podróż ze źródła wizualnego jest bezpieczna do TFS, SVN i GIT.
Przejście od vss do tfs było przyjemnym doświadczeniem. Przejście z TFS do SVN było przyjemnym doświadczeniem. Przejście z svn na git było rodzajem wewnętrznej bitwy.
Często uważam się za konserwatywnego i staram się trzymać tego, co działa. Ładne GUI jest dla mnie lepsze niż wiersz poleceń, a ja szukałem GUI, które pozwoliłyby mi bawić się z fajnymi dziećmi, z którymi pracuję. Wszyscy używali git wyłącznie z linii poleceń.
Moment eureki przyszedł dla mnie, gdy zrezygnowałem z poszukiwania GUI ze srebrną kulą i zacząłem próbować git bash (wciąż się uczę).
Mam zainstalowane GUI, które uzupełniają git z wiersza poleceń. Rozszerzenia Git, dostawca kontroli źródła Git dla studia wizualnego i gita żółwia. Ale mówię, że zapoznaj się z git bash. Polecenia mogą być nieco tajemnicze, ale kiedy się ich nauczysz, są one znacznie szybsze niż GUI.
Rozgałęzienie za pomocą git jest po prostu NIESAMOWITE w porównaniu do innych. Twórz gałęzie i przełączaj między nimi niemal natychmiast. Możesz robić rzeczy, których nie chciałbyś robić z svn, ponieważ svn w zasadzie kopiuje twoją kopię roboczą (przynajmniej tak jak ja to zrobiłem).
Uważam, że Git ma bardziej stromą krzywą uczenia się niż svn. Ale kiedy „dostaniesz” za pomocą git, nie chcesz wracać.
Git do końca.
źródło
Jesteś przyzwyczajony do posiadania serwera, który przechowuje twoje pliki i jest ich wszechmocnym właścicielem. Aby edytować plik, musisz poprosić o zgodę serwera.
Git nie jest taki. Pomyśl o git w ten sposób: masz lokalne repozytorium. Git pozwala zatwierdzać zmiany, cofać zatwierdzenia, łatwe i szybkie rozgałęzianie itp. Gdy chcesz wykonać kopię zapasową historii kontroli źródła, przesuwasz zmiany do innego repozytorium, które „po prostu jest” serwerem, takim jak GitHub.com.
Przepływ pracy:
To wszystko.
źródło
Co masz na myśli mówiąc „git gui”? Jest ich mnóstwo, w tym wtyczka do integracji ze studiem wizualnym, o ile dobrze pamiętam. Jeśli jeden interfejs GUI nie działa dla Ciebie, spróbuj jeszcze raz, aż znajdziesz taki, który działa. Osobiście używam różnych GUI do różnych zadań (i CLI do innych).
Jednak git jest bardziej strukturą kontroli wersji niż stałym systemem. Nadal będziesz musiał nauczyć się podstaw, aby jak najlepiej z tego skorzystać.
źródło
tak
Nic. Git jest skoncentrowany na CLI i nie ma dobrego frontendu (wiem o TortoiseGit, co nie jest odpowiedzią w porównaniu do innych Tortoise *). Możesz spróbować użyć SmartGit (uważaj na Javę)
źródło