Tło: Używamy github do naszego projektu i pracuję na własnym rozwidleniu naszego głównego repozytorium. Używamy rebase zamiast scalania, aby uniknąć dużych commitów.git rebase na oddziałach o długiej żywotności (zdalnej)
Scenariusz: Sposób chcę pracować jest tak:
- Przy wdrażaniu nowej funkcji, należy utworzyć lokalny oddział pana mego widelca i umieścić w moich zmian tam. Ja i inni członkowie grupy wykonujemy wiele małych zatwierdzeń, więc prawie zawsze będzie wiele zatwierdzeń, które wpływają na ten sam plik w oddziale.
- Popchnij lokalny oddział do mojego widelca, więc mam zdalną kopię tego, nad czym pracuję (nie chcę, aby wszystkie moje zmiany zostały utracone, gdy mój laptop zginie lub zginie.) Próbuję to zrobić na końcu każdego dnia).
- Jeśli ukończenie tej operacji zajmuje dużo czasu, od czasu do czasu dokonuję ponownej oceny mastera widelca, aby upewnić się, że nie nastąpiły żadne zmiany, które mogłyby spowodować uszkodzenie mojej funkcji. Zwykle to działa dobrze.
- Aby zachować zdalną kopię gałęzi, przesyłaję lokalny oddział do tego po bazie danych.
Problem: Krok 4 to miejsce, w którym pojawia się problem. Niemal zawsze muszę radzić sobie z nieprzeciętnymi zatwierdzeniami i używać git push --force.
Szukałem na
Git: how to maintain permanent parallel branches
How to maintain (mostly) parallel branches with only a few difference
i nie znalazłem sposób, aby moje prace workflow. Wykonywanie wyszukiwania google w przepływie pracy git głównie zwraca wyniki, które zakładają, że wszyscy pracują w lokalnych oddziałach i nie przechowują zdalnej kopii na github (na przykład http://nvie.com/posts/a-successful-git-branching-model/).
Jestem względnie nowy w Git, więc chciałbym się dowiedzieć, czy czegoś tu nie ma. Chciałbym móc wykonać krok 4 bez użycia siły. Alternatywny przepływ pracy, który nadal pozwala używać rebase zamiast scalania i utrzymywania zdalnej kopii mojego lokalnego oddziału, również byłby bardzo przydatny.
Możesz uniknąć warunku wyścigu, używając '--force-with-lease', który nie powiedzie się, jeśli poprzedni jest nowszy niż twój lokalny. – mLuby