在Git中从另一个分支创建一个分支

我有两个分支。masterdev

我想从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

在dev之外创建MyFeature分支。做好你的工作,然后

$ git commit -am "Your message"

现在把你的修改合并到dev,不需要快进了

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

现在将更改推送到服务器

$ git push origin dev
$ git push origin myFeature

你就会看到你想要的样子了。

评论(13)

如果你想从Git的任何一个现有分支中创建一个新的分支,只需按照选项即可。

首先改变/签出到你想创建的分支。例如,如果你有以下几个分支,比如。

  • master
  • dev
  • branch1

因此,如果你想在名为"subbranch_of_b1"的分支下创建一个名为"branch1"的新分支,请遵循以下步骤。

1.签出或变更到"branch1"

    git checkout branch1

2.现在在"branch1"下创建新的分支,名为"subbranch_of_b1",使用以下命令。

    git checkout -b subbranch_of_b1 branch1

以上将在**branch1**分支下创建一个名为**subbranch_of_b1**的新分支(注意,上述命令中的`branch1`不是强制性的,因为目前HEAD已经指向它了,不过如果你在不同的分支上,可以精确到它)。

3.现在,在对子分支_of_b1进行处理后,你可以在本地或远程提交、推送或合并它。

把_b1的子分支推到远程

 git push origin subbranch_of_b1 
评论(7)

dev 分支上同时进行工作。发生的情况是,在你的方案中,功能分支从开发分支的顶端向前移动,但开发分支并没有改变。把它画成一条直线比较容易,因为它可以被认为是向前运动。你到了dev的A点,然后从那里继续走平行的道路。这两个分支并没有真正分化。

现在,如果你在合并之前在 dev 上做了一次提交,你将再次从同一个提交点 A 开始,但现在特性将转到 C,而 dev 转到 B。

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

对比

       /----*DevB
*-----*DevA
       \----*FeatureC
评论(0)