Mam dwie gałęzie: master i dev
Chcę utworzyć „gałąź funkcji” z gałęzi deweloperów .
Obecnie w oddziale dewelopera wykonuję:
$ git checkout -b myfeature dev
... (trochę pracy)
$ git commit -am "blablabla"
$ git push origin myfeature
Ale po wizualizacji moich oddziałów otrzymałem:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Mam na myśli, że gałąź wydaje się połączona i nie rozumiem, dlaczego ...
Co robię źle?
Czy możesz mi wyjaśnić, w jaki sposób oddziałujesz z innej gałęzi i wypychasz z powrotem do zdalnego repozytorium dla gałęzi funkcji?
Wszystko to w rozgałęzionym modelu, takim jak opisany tutaj .
źródło
myFeature
po połączeniu z dowcipemdev
?myFeature
gałąź została zepchnięta na serwer przed połączeniem, to nic. Ale jeślimyFeature
nie jest jeszcze wypychany na serwer i chcesz, aby pojawił się na serwerze, musisz go wypchnąć.git checkout -b myFeature dev
taki sam jak te 3 polecenia:git checkout dev
wtedygit branch myFeature
, a potemgit checkout myFeature
?--no-ff
wygląda scalenieJeśli chcesz utworzyć nowy oddział z dowolnego z istniejących oddziałów w Git, po prostu postępuj zgodnie z opcjami.
Najpierw zmień / wpłać do oddziału, z którego chcesz utworzyć nowy oddział. Na przykład, jeśli masz następujące gałęzie, takie jak:
Więc jeśli chcesz utworzyć nowy oddział o nazwie „subbranch_of_b1” w gałęzi o nazwie „branch1” wykonaj następujące kroki:
Kasa lub zmiana na „oddział1”
Teraz utwórz nową gałąź o nazwie „subbranch_of_b1” pod „branch1” za pomocą następującego polecenia.
Powyższe spowoduje utworzenie nowej gałęzi o nazwie subbranch_of_b1 pod gałęzią gałąź 1 (zauważ, że
branch1
w powyższym poleceniu nie jest obowiązkowe, ponieważ HEAD obecnie wskazuje na to, możesz to sprecyzować, jeśli jesteś na innej gałęzi).Teraz po pracy z subbranch_of_b1 możesz zatwierdzać i wypychać lub scalać je lokalnie lub zdalnie.
wypchnij subbranch_of_b1 do zdalnego
źródło
git checkout -b some-branch
jest to skrótgit checkout -b some-branch master
. Okazuje się, żegit checkout -b some-branch
jest to skrótgit checkout -b some-branch <current_active_branch>
Utwórz oddział
$ git branch branch1
$ git branch branch2
Przejdź do oddziału
polecenie git checkout przełącza gałęzie lub przywraca działające pliki drzewa
$ git checkout branchname
Zmiana nazwy oddziału
$ git branch -m branch1 newbranchname
Usuń oddział
$ git branch -d branch-to-delete
$ git branch -D branch-to-delete
( wymuś usunięcie bez sprawdzania scalonego stanu )Utwórz i zmień oddział
$ git checkout -b branchname
Oddziały, które są całkowicie uwzględnione
$ git branch --merged
************************** Różnice między gałęziami [git diff branch1..granch2] ************** **********
Różnica wieloliniowa$ git diff master..branch1
$ git diff --color-words branch1..branch2
źródło
git push origin :old-name new-name
do usunięcia gałęzi zdalnej o starej nazwie i wciśnij gałąź lokalną o nowej nazwie.Wykonuj równoczesne prace w
dev
oddziale. W twoim scenariuszu gałąź funkcji przesuwa się do przodu od wierzchołka gałęzi deweloperów, ale gałąź deweloperów się nie zmienia. Łatwiej jest rysować jako linię prostą, ponieważ można ją traktować jako ruch do przodu. Dotarłeś do punktu A na dev, a stamtąd po prostu kontynuowałeś równoległą ścieżkę. Dwie gałęzie tak naprawdę się nie rozeszły.Teraz, jeśli dokonasz zatwierdzenia na dev, przed scaleniem, zaczniesz ponownie od tego samego zatwierdzenia, A, ale teraz funkcje przejdą do C i dev do B. To pokaże podział, który próbujesz wizualizować, jako gałęzie teraz się rozeszły.
Przeciw
źródło
Git 2.23 wprowadza
git switch
igit restore
rozdziela obowiązkigit checkout
Tworzenie nowej gałęzi z istniejącej gałęzi od git 2.23:
git switch -c my-new-branch
Przeniesiono do nowej gałęzi „moja nowa gałąź”
Spójrz na ten post na blogu Github, wyjaśniając bardziej szczegółowo zmiany:
źródło
Aby utworzyć gałąź z innej gałęzi w katalogu lokalnym, możesz użyć następującego polecenia.
Na przykład:
źródło
Jeśli chcesz utworzyć gałąź z innej gałęzi, wykonaj następujące kroki:
Założenia :
BranchExisting
to nazwa oddziału, z którego należy utworzyć nowy oddział o nazwieBranchMyNew
.Kroki :
Pobierz gałąź na komputer lokalny.
To polecenie utworzy w oddziale lokalnym nowy oddział o tej samej nazwie.
Teraz, od kasy głównej gałęzi do nowo pobranej gałęzi
Jesteś teraz w BranchExisting. Teraz utwórz nową gałąź z tej istniejącej gałęzi.
Proszę bardzo!
źródło
Aby utworzyć gałąź z innej, możesz również użyć tej składni:
Jest nieco krótszy niż „git checkout -b” + „git push origin”
źródło