2013-08-23 10 views
16

Powiedzmy Utworzyłem nową funkcję z git flow feature start FEATURENAMEDlaczego funkcja śledzenia "git flow pull" nie działa?

następnie opublikowano go git flow feature publish FEATURENAME

Teraz mój kolega chce współpracować w tej funkcji ze mną, więc robi

git flow feature pull FEATURENAME

Spowoduje to utworzenie nowego oddziału na jego lokalnym repozytorium, w oparciu o gałąź funkcji w zdalnym repozytorium. To jednak nie ustawia jego gałęzi funkcji lokalnych do śledzenia gałęzi zdalnych operacji, więc teraz musi ręcznie śledzić tę gałąź.

Co jest przyczyną tego dodatkowego kroku? Dlaczego nie ustawić zestawu poleceń feature pull?

Jaka jest różnica w przepływie pracy między git flow feature pull a git flow feature track.

W jakich przypadkach używałbyś każdego z nich?

+0

Staje się jeszcze bardziej zagmatwany, jeśli twój kolega robi '' 'git pull''' przed' '' feature pull'''. – dashesy

+0

Chcę użyć '' 'git-flow''' ale muszę również uporządkować, jak zrobić część * feature collaboration *, więc ustawię nagrodę za to, mam nadzieję, że otrzymam lepszy pomysł. – dashesy

Odpowiedz

14

Wygląda na to, że używasz git flow feature pull, gdzie powinieneś używać git flow feature track, ponieważ tworzy to lokalny oddział, który śledzi pilota.

Nie mogę naprawdę wymyślić, dlaczego kiedykolwiek użyłbym git flow feature pull. Tworzy lokalny oddział bez zainstalowanego śledzenia i nie wiem, dlaczego byłby przydatny! Jest również źle nazywane, ponieważ pociągnięcie powinno obejmować scalenie, a to nie.

+3

To dość mylące, że funkcja 'git flow [pull, track, checkout]'. – Drake

+0

Czy {X pull}} nie jest używane, gdy śledzisz już oddział i chcesz tylko pobrać i scalić? – acme

7

This answer przez brainimus ilustruje współpracy aspekt gałęzi funkcji, korzystając z GitHub żądania ciągnąć aspekt, który ułatwia przegląd kodu i część dyskusyjnego:

  1. utworzyć oddział cecha: git flow feature start module_1
  2. Kod jest aktualizowany w oddziale funkcji
  3. Po zatwierdzeniu zmian są one przekazywane do GitHub (lub raz na końcu, jeśli jest to preferowane)
  4. Gdy funkcja jest zakończona ciągnąć wniosek został otwarty w GitHub porównując develop i gałąź funkcji module_1
  5. Zespół recenzji prośba przyciąganie i sprawia komentarze
  6. Wszelkie zmiany w stosunku do wniosku ciągnącej są wykonane z gałęzi funkcji
  7. gdy wszystkie zmiany zostały wprowadzone na gałęzi funkcji oddział funkcja jest Ukończony git flow feature finish module_1
  8. develop oddział jest popychany do GitHub (GitHub automatycznie oznaczyć żądanie rozwijane jako zamknięty/połączyły kiedy to nastąpi)

To pozostawia kwestię zamykania tę gałąź choć:

Kto kiedykolwiek biegnie git flow feature finish module_1 będą mieli luksus swojego lokalnego oddziału cechą jest usunięty, ale nikogo, kto wyrejestrowany oddział ze trzeba to zrobić ręcznie, jeśli chcą

ja polecam git fetch --prune, especially since Git 1.8.5 you can set that "prune" step in your config: prosty git sprowadzić usunie swój fabularny oddziału, jeżeli został on usunięty po stronie serwera (przez kogoś innego dokonywania git flow feature finish)


gitflow feature track jeśli AVH edition prostu kasy i śledzić gałąź, to upewnij się, że miejscowy oddział staje się lokalny oddział śledzenia, z upstream branch (zdalnym oddziału śledzenia) związany z nim. Jest to ustawienie branch.<name>.remote i branch.<name>.merge.

Jeśli zrobić git flow feature pull (nowego lokalnego oddziału fabularnego), ale oznaczało faktycznie git flow feature track, wszystko trzeba by zrobić byłoby make your existing branch track the upstream one:

git branch -u origin/feature 

Ogólnie:

  • ty Uruchom z git flow feature track,
  • , a następnie aktualizuj lokalny oddział funkcji o git flow feature pull
  • przełączać między oddziałami fabularnych z git flow feature checkout

As wzmianki w "Getting Started – Git-Flow":

git flow feature pull 

Nastąpi to, gdy więcej niż jedna osoba pracuje na funkcji razem.
Należy użyć tego polecenia, jeśli chcesz zrobić ciągnąć na pilocie funkcji oddziału następująco:

git flow feature pull [alias] [featureName] 

Za pomocą tego polecenia otrzymasz kod źródłowy, który został zepchnięty przez Twoi koledzy z drużyny i ich zmiany zostaną automatycznie połączeni z lokalnym oddziałem.
Jeśli wystąpią konflikty, będziesz miał pecha lub szczęściarza, który wykona postanowienia tych konfliktów.

+0

Co również porady dotyczĘ ... ce oficjalnego git-flow lub wydania AVH?
Niedawno wpadłem w zakłopotanie z odgałęzieniami funkcji, które rozeszły się po '' 'git pull''' i chciałem wprowadzić jakąś procedurę dla naszego zespołu. – dashesy

+0

@dashy Wyszczególniłem różnice między gałęziami 'gitflow feature [pull, track, checkout]' – VonC

+1

@VonC To naprawdę nie rozwiązuje kwestii, dlaczego ktoś chciałby "ciągnąć" zamiast 'track' (a teraz z doświadczenie doszedłem do wniosku, że nie ma żadnego prawdziwego powodu, aby zrobić "pull"). Część pierwsza twojej odpowiedzi w ogóle nie ma nic wspólnego z tematem. Odnośnie drugiej części - nie ma polecenia 'gitflow feature push'. – OpherV