Дополнительно
Создайте ветку в Git из другой ветки
У меня есть две ветви: мастер и дев
Я хочу создать «фирменную ветвь» из ветки dev .
В настоящее время на ветке dev, я делаю:
$ git checkout -b myfeature dev
(некоторая работа)...
$ git commit -am "blablabla"
$ git push origin myfeature
Но после визуализации моих веток я получил:
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
Я имею в виду, что ветка кажется объединенной, и я не понимаю почему...
Что я делаю неправильно?
Не могли бы вы объяснить мне, как вы открепились от другой ветки и перешли обратно в удаленное хранилище для ветки функций?
Все это в ветвящейся модели, такой как описанная здесь.
839
7
Если вам нравится метод в ссылке, которую вы разместили, взгляните на Git Flow.
Это набор сценариев, которые он создал для этого рабочего процесса.
Но чтобы ответить на ваш вопрос:
Создает ветку MyFeature от dev. Делай свою работу и потом
Теперь объедините свои изменения в dev без перемотки вперед
Теперь нажмите изменения на сервере
И вы увидите, как вы этого хотите.
Если вы хотите создать новую ветку из любой из существующих ветвей в Git, просто следуйте параметрам.
Сначала измените / проверьте ветку, откуда вы хотите создать новую ветку. Например, если у вас есть следующие ветви, как:
Поэтому, если вы хотите создать новую ветку с именем "subbranch_of_b1" под веткой с именем "branch1" , выполните следующие действия:
Оформить заказ или перейти на "branch1"
Теперь создайте свою новую ветку с именем "subbranch_of_b1" под "branch1" , используя следующую команду.
Выше будет создана новая ветка с именем subbranch_of_b1 под веткой branch1 (обратите внимание, что
branch1
в приведенной выше команде не является обязательным, поскольку HEAD в настоящее время указывает на нее, вы можете уточнить ее, если вы на другой ветке, хотя).Теперь, после работы с subbranch_of_b1 , вы можете зафиксировать и нажать или объединить его локально или удаленно.
Создать филиал
Создать ветку при проверке основной ветки. Здесь коммиты в master будут синхронизированы с созданной вами веткой.
< код > $ git branch branch1 < / код >
Создать ветку при проверке branch1 . Здесь коммиты в branch1 будут синхронизированы с branch2
< код > $ git branch branch2 < / код >
Оформить заказ филиала
Команда git checkout переключает ветви или восстанавливает рабочие файлы дерева
Переименование филиала
Удалить филиал
$ git branch -d branch-to-delete < / code >
$ git branch -D branch-to-delete < / code > ( принудительное удаление без проверки объединенного статуса )
Создание и переключение филиала
Ветви, которые полностью включены
*** Различия в ветвях [git diff branch1..branch2] **
Многострочная разница
$ git diff master..branch1 < / code >
Разница в одной линии
$ git diff --color-words branch1..branch2 < / code >
Выполните одновременную работу над веткой
dev
. Что происходит, так это то, что в вашем сценарии ветвь функции перемещается вперед от кончика ветви dev, но ветка dev не изменяется. Проще рисовать как прямую линию, потому что это можно рассматривать как движение вперед. Вы сделали это, чтобы указать A на dev, и оттуда вы просто продолжили параллельный путь. Две ветви на самом деле не разошлись.Теперь, если вы сделаете коммит на dev, перед объединением вы снова начнете с того же коммита, A, но теперь функции перейдут на C и dev на B. Это покажет разделение, которое вы пытаетесь визуализировать, как ветви теперь разошлись.
Versus
Git 2.23 вводит
git retist
иgit restore
разделить обязанностиgit checkout
Создание новой ветки из существующей ветки с помощью git 2.23:
git switch -c my-new-branch
Если вы хотите создать ветку из какой-то другой ветки, выполните следующие действия:
Предположения :
BranchExisting
- это имя ветки, из которой вам нужно создать новую ветку с именемBranchMyNew
.Шаги :
Принеси ветку на свою местную машину.
Эта команда создаст новую ветку в вашем локальном с тем же именем ветки.
Теперь, от проверки основной ветки до недавно выбранной ветки
Вы сейчас в BranchExisting. Теперь создайте новую ветку из этой существующей ветки.
Ну вот!
Для создания ветки из другого можно также использовать этот синтаксис:
Это немного короче, чем "git checkout -b < targetBranch >" + "git push origin < targetBranch >"