Jeśli używasz tej formy branch
polecenia (z punktem początkowym), nie ma znaczenia, gdzie jesteś HEAD
.
Co robisz:
git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Najpierw ustaw się HEAD
na oddział dev
,
Po drugie, zaczynasz nową gałąź po zatwierdzeniu 07aeec98
. W tym zatwierdzeniu nie ma pliku bb.txt (zgodnie z repozytorium na github).
Jeśli chcesz rozpocząć nowy oddział w miejscu, które właśnie wyrejestrowałeś, możesz uruchomić oddział bez punktu początkowego:
git branch test
lub jak odpowiedzieli inni, oddziału i kasy w jednej operacji:
git checkout -b test
Myślę, że możesz być zdezorientowany tym faktem, który 07aeec98
jest częścią branży dev
. Prawdą jest, że to zatwierdzenie jest przodkiem dev
, jego zmiany są potrzebne, aby osiągnąć najnowsze zatwierdzenie w dev
. Są to jednak inne zobowiązania, które są potrzebne, aby dotrzeć do najnowszego dev
, i niekoniecznie są one w historii 07aeec98
.
8480e8ae
(gdzie dodałeś bb.txt) nie ma na przykład w historii 07aeec98
. Jeśli odłączysz się od 07aeec98
, nie otrzymasz zmian wprowadzonych przez 8480e8ae
.
Innymi słowy: jeśli połączysz gałąź A i gałąź B w gałąź C, a następnie utworzysz nową gałąź na zatwierdzeniu A, nie otrzymasz zmian wprowadzonych w B.
To samo tutaj, miałeś dwie równoległe gałęzie master i dev, które połączyłeś w dev. Odgałęzienie od zatwierdzenia master (starszego niż scalenie) nie zapewni ci zmian w dev.
Jeśli chcesz na stałe zintegrować nowe zmiany z mastera z gałęziami funkcji, powinieneś scalić master
je i kontynuować. Spowoduje to jednak utworzenie zatwierdzeń scalających w gałęziach funkcji.
Jeśli nie opublikowały swoje oddziały funkcję, można również rebase ich sprawie zaktualizowanego mistrza: git rebase master featureA
. Przygotuj się na rozwiązanie ewentualnych konfliktów.
Jeśli potrzebujesz przepływu pracy, w którym możesz pracować nad gałęziami funkcji bez zatwierdzeń scalających i nadal integrować się z nowszymi zmianami w module głównym, polecam:
- oprzeć każdą nową gałąź funkcji na zatwierdzeniu master
- stwórz
dev
gałąź na commicie master
- kiedy chcesz zobaczyć, jak twoja gałąź funkcji integruje się z nowymi zmianami w wzorcu, połącz zarówno główną, jak i gałąź funkcji do
dev
.
Nie angażuj się dev
bezpośrednio, używaj go tylko do łączenia innych gałęzi.
Na przykład, jeśli pracujesz nad funkcją A i B:
a---b---c---d---e---f---g -master
\ \
\ \-x -featureB
\
\-j---k -featureA
Połącz gałęzie w dev
gałąź, aby sprawdzić, czy dobrze współpracują z nowym wzorcem:
a---b---c---d---e---f---g -master
\ \ \
\ \ \--x'---k' -dev
\ \ / /
\ \-x---------- / -featureB
\ /
\-j---k--------------- -featureA
Możesz kontynuować pracę nad gałęziami funkcji i dev
regularnie włączać nowe zmiany z gałęzi głównych i funkcji .
a---b---c---d---e---f---g---h---i----- -master
\ \ \ \
\ \ \--x'---k'---i'---l' -dev
\ \ / / /
\ \-x---------- / / -featureB
\ / /
\-j---k-----------------l------ -featureA
Kiedy nadejdzie czas na integrację nowych funkcji, połącz gałęzie funkcji (nie dev
!) W master.