Создайте ветвь в 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**
Я имею в виду, что ветка кажется ff слитой, и я не понимаю, почему...
Что я делаю неправильно?
Можете ли вы объяснить мне, как вы отключаетесь от другой ветки и отсылаете обратно в удаленный репозиторий для ветки функции?
Все это в модели ветвления, например описанной здесь.
Ответы
Ответ 1
Если вам нравится метод в ссылке, которую вы опубликовали, взгляните на Git Flow.
Это набор скриптов, которые он создал для этого рабочего процесса.
Но чтобы ответить на ваш вопрос:
$ git checkout -b myFeature dev
Создает ветвь MyFeature. Сделайте свою работу, а затем
$ git commit -am "Your message"
Теперь объедините свои изменения в dev без быстрой перемотки вперед
$ git checkout dev
$ git merge --no-ff myFeature
Теперь нажмите изменения на сервере
$ git push origin dev
$ git push origin myFeature
И вы увидите, как вы этого хотите.
Ответ 2
Если вы хотите создать новую ветку из любой из существующих веток в Git, просто следуйте инструкциям.
Сначала измените/извлеките ветку, из которой вы хотите создать новую ветку. Например, если у вас есть следующие ветки, такие как:
Поэтому, если вы хотите создать новую ветку с именем "subbranch_of_b1" под веткой с именем "branch1", выполните следующие действия:
Оформить заказ или перейти на "branch1"
git checkout branch1
Теперь создайте новую ветвь с именем "subbranch_of_b1" под "branch1", используя следующую команду.
git checkout -b subbranch_of_b1 branch1
Приведенное выше создаст новую ветвь с именем subbranch_of_b1 под веткой branch1 (обратите внимание, что branch1
в приведенной выше команде не является обязательным, поскольку в данный момент HEAD указывает на нее Вы можете указать это, если находитесь в другой ветке).
Теперь, поработав с subbranch_of_b1, вы можете фиксировать, перемещать или объединять его локально или удаленно.
![A sample Graphical Illustration Of Creating Branches Under another Branch]()
нажмите subbranch_of_b1 на удаленный
git push origin subbranch_of_b1
Ответ 3
Создать ветвь
- Создайте ветвь, когда извлечена ведущая ветка. Здесь фиксации в мастере будут синхронизированы с созданной вами веткой.
$ git branch branch1
- Создайте ветвь, когда выделена ветвь1. Здесь commits в branch1 будет синхронизироваться с веткой2
$ git branch branch2
Оформить выделение
git ветки диспетчера команд проверки или восстановление рабочих файлов дерева
-
$ 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 diff branch1..branch2] ** **********************
Многострочная разность
-
$ git diff master..branch1
Разница в одной строке
-
$ git diff --color-words branch1..branch2
Ответ 4
Выполняйте одновременную работу с ветвью dev
. Случается, что в вашем сценарии ветвь функции перемещается вперед от кончика ветки dev, но ветвь dev не изменяется. Легче рисовать как прямую линию, потому что ее можно рассматривать как движение вперед. Вы сделали это, чтобы указать A на dev, и оттуда вы просто продолжили параллельный путь. Эти две ветки не расходились.
Теперь, если вы сделаете фиксацию на dev, перед слиянием вы снова начнете с того же commit, A, но теперь функции перейдут на C и dev на B. Это покажет раскол, который вы пытаетесь визуализировать, поскольку ветки теперь расходились.
*-----*Dev-------*Feature
Против
/----*DevB
*-----*DevA
\----*FeatureC
Ответ 5
Git 2.23 представляет git switch
и git restore
, чтобы разделить обязанности git checkout
Создание новой ветки из существующей ветки с git 2.23:
git switch -c my-new-branch
Перешел на новую ветку 'my-new -b ranch'
- -c - это сокращение от - -c reate и заменяет известную проверку git -b
.Посмотрите это сообщение в блоге Github, объясняющее изменения более подробно:
Git 2.23 приносит новую пару экспериментальных команд в набор существующих из них: git switch и git restore. Эти два предназначены в конечном итоге обеспечить лучший интерфейс для хорошо известного git checkout. Новый Команды намерены иметь четкое разделение, аккуратно поделить какие обязанности git checkout
Ответ 6
git checkout branchName
Переключено на другую ветку "branchName"
Ответ 7
Если вы хотите создать ветку из какой-то другой ветки, выполните следующие действия:
Предположения:
- Вы находитесь в основной ветке.
- У вас нет изменений для фиксации. (Если у вас есть какие-либо изменения, сохраните их!).
BranchExisting
- это название ветки, из которой вам нужно создать новую ветку с именем BranchMyNew
.
Шаги:
Загрузите ветку на свой локальный компьютер.
$ git fetch origin BranchExisting : BranchExisting
Эта команда создаст новую ветку в вашей локальной сети с тем же именем.
Теперь от извлечения главной ветки до вновь извлеченной ветки
$ git checkout BranchExisting
Вы сейчас в BranchExisting. Теперь создайте новую ветку из этой существующей ветки.
$ git checkout -b BranchMyNew
Ну вот!
Ответ 8
Для создания ветки из другого можно также использовать этот синтаксис:
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
Это немного короче, чем "git checkout -b" + "git push origin"