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.
merge the feature branches (not dev!) into master
?dev
. Powinieneś zachować specyficzne funkcje swoich gałęzi.dev
zawiera tylko zatwierdzenia scalania. Bardziej sensowne jest scalanie wszystkich nowych funkcji bezpośredniomaster
, niż łączenie razem funkcji, a następnie łączenie wyniku wmaster
.dev
tylko z funkcjamiA
B
i scalanie zC
nim wmaster
jest identyczne jak indywidualne scalanieA
B
iC
wmaster
. Jeśli nie, to podważa moje zrozumienie, jak działa git i byłbym bardzo ciekawy, dlaczego!Masz argumenty w złej kolejności:
i do tego nie ma znaczenia, która gałąź jest wyewidencjonowana; zrobi to, co powiesz. (Jeśli pominiesz argument zatwierdzenia, domyślnie tworzy się gałąź w tym samym miejscu co bieżąca).
Jeśli chcesz sprawdzić nowy oddział w trakcie jego tworzenia:
z tym samym zachowaniem, jeśli pominiesz argument zatwierdzenia.
źródło
Możesz to zrobić lokalnie, jak wszyscy wspominali, używając
Alternatywnie możesz to zrobić w samym githubie, wykonaj następujące kroki:
1- W repozytorium kliknij plik
Commits
.2- na zatwierdzeniu, z którego chcesz się rozgałęzić, kliknij,
<>
aby przeglądać repozytorium w tym punkcie historii.3- Kliknij
tree: xxxxxx
w lewym górnym rogu. Po prostu wpisz nową nazwę oddziału i kliknij,Create branch xxx
jak pokazano poniżej.Teraz możesz pobrać zmiany z tej gałęzi lokalnie i kontynuować z tego miejsca.
źródło
Próbować
Zatwierdzenie powinno istnieć tylko raz w twoim drzewie, a nie w dwóch oddzielnych gałęziach.
Pozwala to sprawdzić to konkretne zatwierdzenie i nazwać je, jak chcesz.
źródło
gitk
Musisz zrobić:
(zamieniłeś nazwę gałęzi i zatwierdzenie)
Możesz też:
Jeśli zamiast niej użyjesz nazwy oddziału, otrzymasz gałąź z czubka gałęzi.
źródło
HEAD
to chodzi. Zamiast tego możesz powiedzieć „końcówka gałęzi” lub „zatwierdzenie, na które wskazuje gałąź”.