Develop Branch — to główna gałąź integracyjna w Git Flow, do której trafiają wszystkie ukończone gałęzie feature przed przygotowaniem wydania. W przeciwieństwie do main, develop zawiera najnowsze, ale jeszcze nieopublikowane zmiany — tutaj odbywa się codzienna integracja kodu od wszystkich programistów w zespole. Według danych Atlassian, 2024, develop jest obowiązkową gałęzią w Git Flow i zapewnia stabilne środowisko integracyjne dla zespołu.
Najważniejsze
Develop Branch (gałąź deweloperska) — to długożyjąca gałąź w Git Flow, która służy jako centralny węzeł integracji kodu od wszystkich programistów. Trafiają do niej gałęzie feature po zakończeniu rozwoju i przejściu code review.
Kod w develop zawsze znajduje się w stanie gotowym do utworzenia wydania, choć jeszcze nie został opublikowany w produkcji. Oznacza to, że wszystkie funkcje w develop przeszły recenzję, testowanie i sprawdzenia integracyjne, ale wciąż oczekują na swój cykl wydania.
W przeciwieństwie do main, gdzie każda wersja kodu to wydanie, develop zawiera ciągły strumień zmian. Commity w develop pojawiają się w miarę scalania gałęzi feature, co może występować kilka razy dziennie.
Według danych Vincent Driessen, 2010, develop jest kluczowym elementem udanego modelu rozgałęzień, ponieważ oddziela roboczą pracę od wersji gotowych do wydania.
Zrozumienie różnic między develop a main jest krytycznie ważne dla prawidłowej pracy w Git Flow. Te gałęzie pełnią różne funkcje i mają różne wymagania dotyczące stabilności.
| Cecha | Develop | Main / Master |
|---|---|---|
| Przeznaczenie | Integracja nowych funkcji | Stabilny kod wydaniowy |
| Stabilność | Wysoka (po testach) | Maksymalna (produkcja) |
| Częstotliwość commitów | Codziennie (scalanie feature) | Według wydań (co 1-4 tygodnie) |
| Źródło gałęzi | Od niej tworzone są feature | Od niej tworzone są hotfix |
| Scalanie | Z feature przez PR | Z release przez merge |
Podział na develop i main pozwala zespołowi na ciągłą integrację nowego kodu bez ryzyka dla stabilności wersji produkcyjnej. Programiści mogą widzieć swój kod w develop natychmiast po zatwierdzeniu PR, nawet przed oficjalnym wydaniem.
W modelu Git Flow develop zajmuje centralne miejsce między gałęziami feature (źródło zmian) a gałęziami release (przygotowanie do wydania). Zrozumienie tej hierarchii jest podstawą efektywnego rozgałęziania.
Taka struktura gwarantuje, że develop zawsze zawiera najnowszą wersję kodu ze wszystkimi nowymi funkcjami, a main — tylko sprawdzony kod produkcyjny. Jest to szczególnie ważne dla projektów mobilnych z długim cyklem recenzji w App Store i Google Play.
Develop pełni rolę centralnego ogniwa między gałęziami feature, release i hotfix. Zrozumienie kierunków scalania jest podstawą zapobiegania konfliktom i utracie commitów.
Jakość kodu w develop musi być wysoka, ale nie absolutna. W przeciwieństwie do main, gdzie każdy błąd oznacza pilny hotfix, develop dopuszcza drobne niedoróbki, które zostaną poprawione przed wydaniem.
Minimalne wymagania dla kodu przed scalaniem do develop:
Automatyczne sprawdzenia w CI/CD pipeline powinny uruchamiać się na każdy push do develop. Jeśli kompilacja się psuje, odpowiedzialny programista musi naprawić problem w ciągu godziny lub wycofać swój commit.
Konfiguracja GitHub Actions dla develop gwarantuje, że każdy PR przed scalaniem przechodzi automatyczne sprawdzenie. Typowy pipeline obejmuje kompilację, testy i linting.
# GitHub Actions — sprawdzanie develop po scalaniu
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
Scalanie do develop musi podlegać ścisłym zasadom, aby utrzymać stabilność gałęzi integracyjnej. Naruszenie tych zasad prowadzi do konfliktów, złamanych kompilacji i straty czasu zespołu.
Zasada aktualności PR jest szczególnie ważna. Jeśli gałąź feature została utworzona tydzień temu, a develop poszedł do przodu o 50 commitów, bezpośrednie scalanie może prowadzić do konfliktów, które lepiej rozwiązać w kontekście PR, a nie w develop.
Branch protection rules (zasady ochrony gałęzi) — to ustawienia na poziomie GitHub, GitLab lub Bitbucket, które zapobiegają nieprawidłowym zmianom w develop. Gwarantują, że nawet przypadkowy push nie złamie gałęzi integracyjnej.
Zalecane zasady ochrony dla develop:
Konfiguracja ochrony develop zajmuje 10 minut, ale zapobiega tygodniom przestojów związanych ze złamaną gałęzią integracyjną. Dla projektów mobilnych z wieloplatformowymi zespołami jest to szczególnie istotne.
Rozpatrzmy typowy dzień programisty: rano aktualizuje develop, tworzy nową gałąź feature, a po zakończeniu zadania scala zmiany z powrotem do develop.
# Poranna synchronizacja develop
git checkout develop
git pull origin develop
# Tworzenie nowej gałęzi feature z develop
git checkout -b feature/add-push-notifications
# Praca nad funkcją...
git add . && git commit -m "Add FCM integration"
# Aktualizacja develop podczas rozwoju
git fetch origin develop
git rebase origin/develop
# Po zatwierdzeniu PR — aktualizacja lokalnego develop
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
Polecenie git pull w develop wykonuje jednocześnie dwie operacje: git fetch (pobiera nowe commity z serwera) i git merge (scala je z lokalną gałęzią). Dla develop jest to standardowy sposób synchronizacji.
Jeśli do develop trafił kod, który złamał kompilację, należy działać szybko. Każda godzina przestoju develop to zablokowana praca całego zespołu programistów.
Jeśli do develop trafił kod, który złamał kompilację, użyj git revert do utworzenia nowego commita cofającego problematyczne zmiany. Nie używaj git reset w develop — to przepisuje historię, która już istnieje u innych uczestników.
# Znajdowanie problematycznego commita
git log --oneline develop
# Cofnięcie commita przez revert (bezpieczne)
git revert a1b2c3d
# Wysłanie poprawki do zdalnego develop
git push origin develop
# Przeglądanie zmian w konkretnym commicie
git show a1b2c3d --stat
Często zadawane pytania
Dla projektów z jednym-dwoma programistami develop jest często zbędny — wystarczą main i gałęzie feature. Gdy zespół urośnie do 3+ osób, develop staje się niezbędny do izolacji niedokończonych funkcji od stabilnego kodu produkcyjnego.
Nie, bezpośredni zapis do develop jest zabroniony w każdym profesjonalnym projekcie. Wszystkie zmiany przechodzą przez Pull Request z code review i automatycznymi sprawdzeniami. Wyjątkiem są administracyjne poprawki README lub konfiguracji CI, ale i lepiej je robić przez PR.
W trunk-based development nie ma osobnej gałęzi develop — wszyscy programiści pracują w main z bardzo krótkimi gałęziami feature (1-2 dni). To alternatywa dla Git Flow, popularna w kulturze DevOps z wysokim poziomem automatyzacji testowania.
Po każdym wydaniu gałąź release jest scalana z powrotem do develop, aby wprowadzić do niej wszystkie poprawki dokonane podczas przygotowania wydania. Jeśli tego nie robić, develop będzie różnił się od kodu wydaniowego, co spowoduje konflikty przy następnym wydaniu.
Jeśli develop jest złamany, starszy programista tworzy gałąź hotfix od ostatniego stabilnego commita, naprawia problem i scala poprawkę bezpośrednio do develop przez PR ze specjalnym statusem. Po przywróceniu przeprowadzana jest analiza przyczyny awarii.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również