2010-10-06 16 views
37

Krótko mówiąc: jakie są najlepsze praktyki w używaniu Intellij Idea (9) i Git?Sprawdzone metody korzystania z Git z Intellij Idea

Kontekst

Niedawno przeniesieni do idei 9 i zaczęli używać Git dla nowej funkcji na istniejącym projekcie.

W dużym stopniu korzystamy z wiersza poleceń git, aby lepiej poznać narzędzie. Ale pomyśleliśmy, że wybierzemy umysł-ul, aby dowiedzieć się, jakie są najlepsze praktyki dla gita z pomysłem.

Interfejs Idea jest podobny zarówno dla CVS, jak i Git, ale podstawowe implementacje różnią się nieco.

Przykład pytania

Na przykład: -Z CVS, kiedy mieliśmy wielu dopuszczenie produktu, każdy z nas miałby lokalną kopię 1-0, 2-0, 3-0 , itp. oddziałów, z których każdy ma własne pliki Intellij (np. .ipr, .iws, itp.). Wydaje się, że "git way" ma jeden projekt i używa gałęzi "git" do przełączania gałęzi. Jest to w porządku, ale generuje ogromne obciążenie dla pomysłu (ponieważ musi przeładowywać każdy zmieniony plik, w tym słoiki do odprawy) podczas zmiany gałęzi. A więc: czy nadal masz osobny projekt (z rozszerzeniem .git) dla każdego "głównego wydania" lub masz jeden projekt i używasz "gałęzi git"?

- Czy warto używać Autostash?

- Czy automatycznie dodajesz każdą modyfikację do swojego zatwierdzenia git? lub użyć "git add" później?

-Zastankujesz?

-Najlepszy sposób na połączenie?

-Inne inne wskazówki/porady/co-działa-dla-ciebie, itp.

Uwagi końcowe

Nadal „myśleć w CVS”, więc część ta jest przyzwyczaić git; część przyzwyczaja się do Ui Idea'a dla gita.

Są to dość podstawowe pytania, ponieważ nadal używamy głównie linii komand. Również słyszałem pomysł 10 ma lepsze/szybsze/silniejszych narzędzi integracyjnych git

Thanks

+3

Jedną z cech, chciałbym mieć to folder systemowy cache IntelliJ zależą mieszania kodu źródłowego (jak git sam jest realizowany). W ten sposób może szybko zsynchronizować pamięć podręczną po przełączeniu między bardzo różnymi gałęziami ... teraz jest to ból. – ripper234

Odpowiedz

15

Oto, co odkryliśmy, po kilku tygodniach Git/Pomysłem. Zrobiłem to jako wiki społeczności. Proszę podać 2 kronor/centimos/pfennings/cents.

Uwaga: mam odpowiedzi na moje własne pytanie, ponieważ szukałem te proste użytku wypunktowania.

Założenie

Idea jest doskonałym narzędziem. Nikt tutaj nie narzeka. Po prostu obserwuję.

Best Practices

  • w tym punkcie (9.0.3) z Git pomysł jest po prostu trudniejszy w obsłudze niż SVN z Pomysłem. Część wynika ze złożoności Git (vs SVN), częściowo dlatego, że narzędzia Idea nie robią wszystkiego w świecie git.

  • Tak więc trzeba będzie korzystać z linii poleceń

  • narzędzie scalania pomysł na roboty znacznie lepiej niż linii poleceń łączących lub nawet przy użyciu mergetool (przy meldunku lub mergetool). Powód: masz dużo więcej freedeom do pracy w "środowisku pomysłów" zamiast naprawiać jedną lint na raz.

  • Pamiętaj, aby zsynchronizować w Idea (Ctrl-Alt-Y) podczas aktualizacji drzewa pracuje z linii poleceń

  • oglądania konsolę Git nauczyć sztuczek git pomysłem jest; Pomysł wykonuje polecenia git tam (zobacz Wersja sterowania, zakładka Console).

przykład:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp 
13:31:02.437: cd J:\projects\PE-GIT\pe 
13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp 
  • Niestety pomysł nie ma dobrych narzędzi do "łączących konfliktów w upstream zobowiązuje" w 9.0 .3

przykład:

  • Alice działa, popełnia (lokalnie) plik A, zobowiązuje pliku B, zobowiązuje się złożyć C
  • Bob działa, popełnia pliku C, popełnia pliku D, zobowiązuje pliku E
  • Alice popycha ją zmienia
  • Bob ściąga zmiany

Pochodzę z CVS/SVN, spodziewałem się, że Pomysły poręczne narzędzie do dyfuzji pojawi się. Zamiast tego git/idea rzuca czerwoną flagę, zwykle kończę używanie "git mergetool" (meld od on linux, tortoiesmerge on windows).

Uwaga: Być może Idea zapewnia lepszy sposób. Proszę, ustaw mnie prosto. Uwaga dla zmotywowanych: czy możesz skonfigurować .gitconfig, aby używać narzędzia dyferencyjnego Idea?

stashing

  • Pomysły "półek" duplikaty funkcjonalność "Git Stash". Obie wydają się podobne. Oba używają łatek. Prawdopodobnie chcesz użyć jednego lub drugiego. Nie zorientowali się wykorzystać jeden lub drugi

Big starych projektów

  • Jeśli pracujesz na dziesięć lat projektu niedawno wyemigrowali do Git z plików jar sprawdzane pod scm (tj. wcześniej sprawdzone w CVS/SVN, gdzie log4j-1.0.jar jest w BRANCH-2-0, a linia główna ma log4j-9.0.jar), POSTĘPUJEMY Z OSTATNIEJ PRZECIWNIKIEM, jeśli chcesz sprawdzić "wersję 2.0" Twój projekt. Idea musi wyładować wszystkie słoje "głowy" i przeładować słoiki-zameldował-w-2.0. To trwa na zawsze.

Inne niewiele rzeczy

  • Pozycje menu idea/UI nadal pokazuje "git startowych ...", choć już zainicjowany Git. To jest mylące, ale zignoruj ​​to.

  • Nie możesz mieć tego samego drzewa roboczego zarówno w Git, jak i CVS/SVN (chociaż może to sugerować interfejs użytkownika).Próbowałem/próbowaliśmy tego podczas początkowej fazy "spróbujmy git i nadal korzystajmy z CVS jako planu tworzenia kopii zapasowych". To nie działa

+0

Wróciłem do korzystania z Intellij i Git w nowym środowisku pracy i szukałem sposobu, w jaki Intellij obsługuje przechowywanie. Z Shelve często odkładam jeden lub dwa pliki, które miały debugowanie zmian, ale używając Stash w Intellijii jedyną opcją było Przechowywanie wszystkich zmian. –

4

Po pierwsze, można wiele informacji na temat git na darmo online leksykony:

Uwaga: Git "dobre praktyki" i przepływ pracy są całkowicie niezależne od IDE, którego używasz. Na szczęście IDEA jest świetnym IDE i większość przydatnych funkcji Git jest dobrze zaimplementowana (podstawa, baza, itp.).

O twoich pytaniach o git-flow, myślisz jak z scentralizowanym VCS.

Git to Rozproszony System kontroli wersji. Musisz więc "myśleć lokalnie najpierw".

Dla zobowiązuje, to naprawdę nie ma znaczenia, jeśli natychmiast lub później dodać każdy plik do indeksu, jeśli często lub nie popełnić. To jest Twoja lokalna praca i możesz ją zorganizować według własnego uznania.

Ważne jest, aby mieć czyste zatwierdzenia, gdy jesteś blisko pchnij swoją pracę (wystaw to innym deweloperom).

Kiedy masz zamiar naciskać, możesz poprawić całą swoją historię od ostatniego naciśnięcia (na przykład z użyciem rebase).

Na przykład (jeśli zapomniałeś zmianę poprzednie popełnić): - popełnić „super funkcję” - popełnić „oups: zapomniałem plik” - popełnić „korektę błędu”

Przed popychanie tezy 3 zobowiązuje, można tez fuzyjne popełnia, używając interaktywną rebase z pomysłem. Tak więc 2 ostatnie poprawki zostaną uwzględnione w pierwszym.

Uwaga: można modyfikować swoją historię, podczas gdy nie jest wciśnięty. Po tym, jak nadal możesz, ale jest to bardzo zły pomysł (i jeśli nie wymusisz na Git, następne działanie zostanie odrzucone), ponieważ może to zniszczyć historię twoich współpracowników (jeśli pobrano/scalono twoją pracę).

O wspólnej Git przepływu pracy, polecam ci ten dobry artykuł: http://nvie.com/posts/a-successful-git-branching-model/

+0

Dzięki za ważenie. Twoje komentarze są generalnie pomocne, a artykuł z informacjami na temat rozgałęzień. – user331465

+5

Dzięki za ważenie. Twoje komentarze są generalnie pomocne, a artykuł z informacjami na temat rozgałęzień. Powiedział, że moje pytanie bardzo konkretnie dotyczyło „przy użyciu git z pomysłem”, a nie „jak używać git?” I specjalnie szukać pragmatycznych punkty na temat korzystania Pomysł UI-for-git vs. przy użyciu git z wiersza poleceń, czyli „wskazówki i techniki, niebezpieczeństwa i pułapki”, „co działa najlepiej dla Ciebie”, „Czego unikać na podstawie listy doświadczenie ", itp. Jeszcze raz dziękuję za oferowanie swoich spostrzeżeń. – user331465