Вопрос

У меня есть две ветви: мастер а также девчонка

Я хочу создать «филиал функций» из девчонка ответвляться.

В настоящее время на филиале Dev, я делаю:

$ git checkout -b myfeature dev

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

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

$ git checkout -b myFeature dev

Создает MyFeature Flank Off Dev. Сделай свою работу, а затем

$ git commit -am "Your message"

Теперь объедините свои изменения в DEV без ускорения

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

Теперь выдвиньте изменения на сервер

$ git push origin dev
$ git push origin myFeature

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

Другие советы

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

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

  • мастер
  • девчонка
  • филиал1

Так что, если вы хотите создать новую ветку под названием "subbranch_of_b1" под названной ветвью "Branch1" Следуйте шагам:

  1. Зарегистрироваться или изменить "Branch1"

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

    git checkout -b subbranch_of_b1 branch1
    

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

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

A sample Graphical Illustration Of Creating Branches Under another Branch

подтолкнуть subbranch_of_b1 на удаленное

 git push origin subbranch_of_b1 

Создать ветвь

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

    $ git branch branch1

  • Создайте филиал, когда Branch1 проверяется. Здесь Comting in 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
Разница в одиночной линии
  • $ git diff --color-words branch1..branch2

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

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

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

Против

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

GIT 2.23 представляет git switch а также git restore разделить обязанности git checkout

Создание новой ветви из существующей ветви по состоянию на GIT 2.23:

git switch -c my-new-branch

Переключился на новую ветвь "My-New-ranch"

  • -c короткий для --Создайте и заменяет известного GIT Checkout -b

Взгляни на это Пост в блоге GitHub, объясняющий изменения более подробно:

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

Если вы хотите сделать ветвь из другой ветви, следуйте на более революционных шагах:

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

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

Шаги:

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

    $ git fetch origin BranchExisting : BranchExisting
    

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

  1. Теперь от Master Branch Checkout до недавно выбранной филиала

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

    $ git checkout -b BranchMyNew
    

Ну вот!

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

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

Это немного короче, чем "git cakeout -b" + "git push Origin"

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top