Создать ветку в Git из другой ветки


у меня есть две ветви: мастер и dev

Я хочу создать "ветку" от dev филиала.

В настоящее время на ветке dev, я делаю:

$ git checkout -b myfeature dev

... (некоторые работы)

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

но, визуализировав мои ветви, я получил:

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

Я имею в виду, что ветка, кажется, слил ФФ, и я не понимаю, почему...

что я делаю не так?

вы можете объясните мне, пожалуйста, как вы отделяетесь от другой ветви и возвращаетесь в удаленный репозиторий для ветви функций?

все это в ветвящейся модели, как тот, что описан здесь.

4 612

4 ответа:

Если вам нравится метод в ссылке, которую вы опубликовали, посмотрите на Git Flow.

Это набор скриптов, которые он создал для этого процесса.

но чтобы ответить на ваш вопрос:

$ git checkout -b myFeature dev

создает ветвь MyFeature от dev. Делай свою работу и тогда

$ git commit -am "Your message"

теперь объедините свои изменения в dev без быстрой перемотки вперед

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

теперь нажмите изменения на сервер

$ git push origin dev
$ git push origin myFeature

и вы увидите, как вы хотите оно.

Если вы хотите создать новую ветку из любой из существующих ветвей в Git,просто следуйте инструкциям.

сначала измените / выпишите в ветку, из которой вы хотите создать новую ветку. Например, если у вас есть следующие ветки:

  • мастер
  • dev
  • branch1

Так что если вы хотите создать новую ветку под названием "subbranch_of_b1" под веткой с именем "branch1" выполните действия:

  1. оформить заказ или изменения в "branch1"

    git checkout branch1
    
  2. Теперь создать новую ветку под названием "subbranch_of_b1" под "branch1" С помощью следующей команды.

    git checkout -b subbranch_of_b1 branch1
    

    выше будет создана новая ветвь называется subbranch_of_b1 в филиале branch1 (заметим, что branch1 в приведенной выше команде не является обязательным, так как голова в настоящее время указывает на него, вы можете уточнить его, если вы находитесь на другой ветке, хотя).

  3. Теперь после работы с subbranch_of_b1 вы можете зафиксировать и нажать или объединить его локально или удаленно.

A sample Graphical Illustration Of Creating Branches Under another Branch

создать ветку

  • создать ветвь при извлечении главной ветви. Здесь коммитов в мастер будут синхронизированы в той ветке, которую вы создали.

    $ git branch branch1

  • создать ветвь при извлечении branch1 . Здесь коммиты в branch1 будут синхронизированы с branch2

    $ git branch branch2


проверка филиала

git checkout command switch ветви или восстановить файлы рабочего дерева

  • $ git checkout branchname

переименование филиала

  • $ git branch -m branch1 newbranchname

удалить ветку

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete (принудительное удаление без проверки объединенного состояния)

создание и переключение Ветка

  • $ git checkout -b branchname

ветви, которые полностью включены

  • $ git branch --merged


************************** Филиала Различия [ git diff branch1..branch2 ] ************************

многострочный разница
  • $ git diff master..branch1
Singleline разница
  • $ git diff --color-words branch1..branch2

сделайте одновременную работу на dev филиала. Что происходит, так это то, что в вашем сценарии ветвь функции перемещается вперед от кончика ветви dev, но ветвь dev не изменяется. Его легче нарисовать как прямую линию, потому что его можно рассматривать как движение вперед. Вы сделали это, чтобы указать на dev, и оттуда вы просто продолжили параллельный путь. Эти две ветви на самом деле не разошлись.

Теперь, если вы сделаете фиксацию на dev, перед слиянием, вы снова будете начните с того же commit, A, но теперь функции перейдут на C и dev на B. Это покажет раскол, который вы пытаетесь визуализировать, поскольку ветви теперь разошлись.

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

и

       /----*DevB
*-----*DevA
       \----*FeatureC