2012-04-04 6 views
26

Jestem trochę nowy w kontroli wersji z GIT. Przeczytałem to Guide i podążam za podstawowym podejściem, które jest pokazane na diagramie HERE. Mam jednak pewne wątpliwości, jak używać gałęzi git, aby oddzielić rozwój nowych funkcji od istniejącego kodu.Jak poprawnie używać git i gałęzi

Oto przykład. Załóżmy, że na początku, mój repozytorium zawiera następujące dwa główne oddziały:

  • gałęzi master (zawierający wersję Release)
  • Develop Branch (zawierający nowe poprawki lub funkcje, aby oddzielić je od istniejących cech projektowych)

Kiedy potrzebuję rozwijać nowe funkcje lub moduły, tworzę oddziały z Develop i uruchamiam tam nowe projekty kodu. Na przykład utworzę trzy nowe gałęzie, aby dodać funkcje związane z Sun, Star i SuperNova. Teraz mój repozytorium zawiera pięć oddziałów:

  • Mistrz Branża: Release 1.0.0
  • rozwinąć gałąź: Modyfikacja po wydaniu 1.0.0
  • NewModule_Sun Branża: Sun dodać do projektu (tworzenie z Develop oddział)
  • NewModule_Star Branża: Gwiazda dodać do projektu (tworzenie z Develop oddział)
  • NewModule_SuperNova Branża: dodać SuperNova do projektu (z Develop stworzyć oddział)

Do wersji 1.0.1 chcę dołączyć moduły Sun i Star, ale nie SuperNova. Tak, mogę połączyć je opracować, a następnie połączyć z Develop wydaniu:

  1. Merge NewModule_Sun do Develop
  2. Merge NewModule_Star do Develop
  3. seryjnej przekształcić Master (zwolnić 1.0.1)

Branża deweloperska musi być stale dostępna, ale oddziały Sun i Star nie są już potrzebne. Oni zostaną usunięte:

  1. Usuń gałąź NewModule_Sun
  2. Usuwanie gałęzi NewModule_Star

Po tych zmianach mój repozytorium zawiera trzy następujące oddziały:

  • gałąź master: Release 1.0. 1
  • Rozwijaj gałąź: modyfikacja po wydaniu 1.0.1
  • Oddział NewModule_SuperNova: Modyfikacja po wydaniu 1.0.0 (utworzony z Develop, gdy nie została połączona z gałęzi Gwiazda/Sun)

==

Po pierwsze, używam poprawnie oddziały git?

Po drugie, zapoznałem się z historią ostatniego oddziału deweloperskiego i wydaje mi się, że straciłem trochę informacji na temat NewModules. Czy to normalne? Czy jest możliwe przeniesienie wszystkich informacji historycznych do oddziału deweloperskiego?

Dziękuję!

+1

To może pomóc. http://stackoverflow.com/questions/2613903/does-deleting-a-branch-in-git-remove-it-from-the-history – codef0rmer

Odpowiedz

16

Czy robię użytek z git?

Tak, przepływy pracy, które opisujesz, są normalnym przepływem pracy. Tworzysz gałąź, pracujesz nad nią, a kiedy skończysz, scalasz ją i usuwasz niepotrzebną gałąź (chyba, że ​​będziesz kontynuować rozwijanie tej gałęzi).

Po usunięciu oddział, przeglądanie historii Wydaje mi się, że straciły wszelkie informacje na temat samej gałęzi ... czy to normalne?

Tak, to jest normalne.

Czy możliwe jest usunięcie oddziału, ale pozostawienie informacji o historii nieprzerwany?

Nie jestem pewien, co masz na myśli. Dopóki scalisz gałąź przed jej usunięciem, historia nadal istnieje. Po prostu połączyłeś go w inny oddział i historię można zobaczyć w tej gałęzi. Nie ma sposobu, aby wiedzieć, kiedy gałąź została usunięta, jeśli o to prosisz.

+0

ah ok .. Szukałem sposobu (że powiedziałeś, że to niemożliwe), aby zobaczyć początek i koniec oddziału ... szkoda :( – Marcx

+0

@Marcx Jestem trochę spóźniony, ale może ty wciąż szukają tej flagi "git merge --no-ff nazwa oddziału" –

9

Proponuję przeczytać http://nvie.com/posts/a-successful-git-branching-model/, który określa dobry wzór dla rozgałęzienia git.

Znalazłem, że utrzymuję gałęzie rozwojowe przez pewien czas, dopóki czas nie uczyni historii zmian dokonanej w tych wersjach, które nie są warte zachowania (około 6 miesięcy), a następnie je skasuje.

+0

Przeczytałem, że ... Używam tego systemu ... Nie jest wyjaśnione moje pytanie o usunięcie oddziału ... to jest zasadniczo moja główna wątpliwość :) – Marcx

+0

Dzięki. Jako kompletny n00b do paradygmatów rozgałęziających, twój link był dokładnie tym, czego potrzebowałem. –