Tworzenie gałęzi w Git z innej gałęzi

Mam dwie gałęzie: master i dev

Chcę utworzyć "feature branch" z gałęzi dev.

Obecnie na gałęzi dev, robię:

$ git checkout -b myfeature dev

... (niektóre prace)

$ git commit -am "blablabla"
$ git push origin myfeature

Ale po wizualizacji moich gałęzi otrzymałem:

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

Chodzi mi o to, że gałąź wydaje się FF połączona, i nie rozumiem dlaczego...

Co robię źle? Czy możesz mi wyjaśnić, jak się odgałęzia od innej gałęzi i odepchnie do zdalne repozytorium dla gałęzi feature?

Wszystko to w modelu rozgałęziającym jak ten opisany tutaj.

Author: Peter Mortensen, 2010-12-17

4 answers

Jeśli podoba ci się metoda w linku, który zamieściłeś, spójrz na Git Flow.

To zestaw skryptów, które stworzył dla tego obiegu pracy.

Ale odpowiadając na twoje pytanie:

$ git checkout -b myFeature dev

Tworzy gałąź MyFeature z dev. Wykonuj swoją pracę, a następnie

$ git commit -am "Your message"

Teraz Połącz swoje zmiany z dev bez przewijania do przodu

$ git checkout dev
$ git merge --no-ff myFeature

Teraz wciśnij zmiany na serwerze

$ git push origin dev
$ git push origin myFeature
Zobaczysz, jak chcesz.
 879
Author: Abizern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-02 21:00:31

Jeśli chcesz utworzyć nową gałąź z którejkolwiek z istniejących gałęzi w Git, po prostu postępuj zgodnie z opcjami.

Pierwsza zmiana / kasa w oddziale, z którego chcesz utworzyć nową gałąź. Na przykład, jeśli masz następujące gałęzie jak:

  • master
  • dev
  • branch1

Więc jeśli chcesz utworzyć nową gałąź o nazwie "subbranch_of_b1" pod filią o nazwie "branch1" wykonaj kroki:

  1. Wymeldowanie lub zmiana na "branch1"

    git checkout branch1
    
  2. Teraz Utwórz nową gałąź o nazwie "subbranch_of_b1" Pod "branch1" używając następującego polecenia.

    git checkout -b subbranch_of_b1 branch1
    

    Powyższe polecenie utworzy nową gałąź o nazwie subbranch_of_b1 pod gałąź branch1 (zauważ, że branch1 w powyższym poleceniu nie jest obowiązkowe, ponieważ głowica aktualnie na nią wskazuje, możesz można go precyzyjnie określić, jeśli jesteś na innej gałęzi).

  3. Teraz po pracy z subbranch_of_b1 Możesz zatwierdzić i wypchnąć lub scalić go lokalnie lub zdalnie.

Przykładowa Ilustracja graficzna tworzenia gałęzi pod inną gałęzią

 227
Author: Praveen George,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-18 12:52:33

Tworzenie gałęzi

  • Utwórz gałąź po sprawdzeniu gałęzi master. Tutaj commity w master zostaną zsynchronizowane z utworzoną gałęzią.

    $ git branch branch1

  • Utwórz gałąź, gdy funkcja branch1 jest zaznaczona . Tutaj commity w branch1 zostaną zsynchronizowane z branch2

    $ git branch branch2


Sprawdź Oddział

Git checkout command switch branches or restore working tree pliki

  • $ git checkout branchname

Zmiana nazwy gałęzi

  • $ git branch -m branch1 newbranchname

Delete a Branch

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete (Wymuś usunięcie bez sprawdzania statusu połączenia )

Tworzenie i przełączanie gałęzi

  • $ git checkout -b branchname

Gałęzie, które są całkowicie included

  • $ git branch --merged


************************** różnice w gałęzi [git diff branch1..branch2 ] ************************

różnica Wieloliniowa
  • $ git diff master..branch1
różnica Singleline
  • $ git diff --color-words branch1..branch2
 17
Author: Gnanasekar S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-08 18:36:34

Wykonaj jednoczesną pracę na gałęzi dev. Dzieje się tak, że w Twoim scenariuszu gałąź funkcji przesuwa się do przodu od wierzchołka gałęzi dev, ale gałąź dev się nie zmienia. Łatwiej jest rysować jako linię prostą, ponieważ można ją traktować jako ruch do przodu. Dotarłeś do punktu A na Deva, a stamtąd po prostu kontynuowałeś równoległą ścieżkę. Obie gałęzie tak naprawdę się nie rozeszły.

Teraz, jeśli wykonasz commit na dev, przed scaleniem ponownie zaczniesz od ten sam commit, A, ale teraz funkcje przejdą do C, a dev do B. pokaże to podział, który próbujesz wizualizować, ponieważ gałęzie się rozeszły.

*-----*Dev-------*Feature

Kontra

       /----*DevB
*-----*DevA
       \----*FeatureC
 11
Author: ToothlessRebel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-19 18:38:49