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

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

Я хочу создать «фирменную ветвь» из ветки dev .

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

$ git checkout -b myfeature dev

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

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

Но после визуализации моих веток я получил:

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

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

Что я делаю неправильно?

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

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

Решение

Если вам нравится метод в ссылке, которую вы разместили, взгляните на 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

И вы увидите, как вы этого хотите.

Комментарии (13)

Если вы хотите создать новую ветку из любой из существующих ветвей в 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 в приведенной выше команде не является обязательным, поскольку HEAD в настоящее время указывает на нее, вы можете уточнить ее, если вы на другой ветке, хотя).

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

  • переместите subbranch_of_b1 на удаленный *
 git push origin subbranch_of_b1 
Комментарии (7)

Создать филиал

  • Создать ветку при проверке основной ветки. Здесь коммиты в master будут синхронизированы с созданной вами веткой.

    < код > $ git branch branch1 < / код >

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

    < код > $ git branch branch2 < / код >


Оформить заказ филиала

Команда git checkout переключает ветви или восстанавливает рабочие файлы дерева

  • < код > $ git checkout branchname < / код >

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

  • < код > $ git branch -m branch1 newbranchname < / код >

Удалить филиал

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

Создание и переключение филиала

  • < код > $ git checkout -b branchname < / код >

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

  • < код > $ git branch --merged < / код >


*** Различия в ветвях [git diff branch1..branch2] **

Многострочная разница

  • $ git diff master..branch1 < / code >

Разница в одной линии

  • $ git diff --color-words branch1..branch2 < / code >
Комментарии (1)

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

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

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

Versus

       /----*DevB
*-----*DevA
       \----*FeatureC
Комментарии (0)

Git 2.23 вводит git retist и git restore разделить обязанности git checkout

Создание новой ветки из существующей ветки с помощью git 2.23:

git switch -c my-new-branch

  • Переключен на новую ветку «Моя новая ветвь» *
  • -c - сокращение от - создание и заменяет хорошо известную git checkout -b
  • Взгляните на this Сообщение в блоге Github, объясняющее изменения более подробно: *

Git 2.23 привносит новую пару экспериментальных команд в набор существующих из них: переключатель git и восстановление git . Эти двое предназначены в конечном итоге предоставить лучший интерфейс для известной проверки мерзавцев. Новый команды предназначены для каждого из них, чтобы иметь четкое разделение, аккуратно разделяя их какие обязанности Git Check

Комментарии (0)

Если вы хотите создать ветку из какой-то другой ветки, выполните следующие действия:

Предположения :

  1. Вы в настоящее время в основной ветке.
  2. У вас нет изменений, чтобы совершить. (Если у вас есть какие-либо изменения, чтобы зафиксировать, спрятать его!).
  3. BranchExisting - это имя ветки, из которой вам нужно создать новую ветку с именем BranchMyNew.

Шаги :

  1. Принеси ветку на свою местную машину.

    $ git fetch origin BranchExisting: BranchExisting

Эта команда создаст новую ветку в вашем локальном с тем же именем ветки.

  1. Теперь, от проверки основной ветки до недавно выбранной ветки

    $ git checkout BranchExisting
  2. Вы сейчас в BranchExisting. Теперь создайте новую ветку из этой существующей ветки.

    $ git checkout -b BranchMyNew

Ну вот!

Комментарии (0)

Для создания ветки из другого можно также использовать этот синтаксис:

git push origin refs/heads/:refs/heads/

Это немного короче, чем "git checkout -b < targetBranch >" + "git push origin < targetBranch >"

Комментарии (0)