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

我有两个分支: 主和 开发

我想从开发分支创build一个“function分支”。

目前在分支开发,我做:

$ git checkout -b myfeature dev 

… (一些工作)

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

但是,在形象化我的分支之后,我得到了:

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

我的意思是分支似乎融合,我不明白为什么…

我做错了什么?

你能解释我怎么从另一个分支分支,并推回到function分支的远程存储库?

所有这一切都在这里描述的分支模型中。

如果你喜欢你发布的链接的方法,看看Git Flow 。

这是他为该工作stream创build的一组脚本。

但要回答你的问题:

 $ git checkout -b myFeature dev 

创buildMyFeature分支开关。 做你的工作,然后

 $ git commit -am "Your message" 

现在,将您的更改合并到开发中,而无需快进

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

编辑

现在将更改推送到服务器

 $ git push origin dev $ git push origin myFeature 

你会看到你想要的。

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

首先从您想要创build新分支的分支中更改/结帐。 例如,如果您有以下分支:

  • 开发
  • BRANCH1

所以如果你想在名为“branch1”的分支下面创build一个名为“subbranch_of_b1”的新分支,请按照以下步骤操作:

  1. 结帐或更改为“分支1”

     git checkout branch1 
  2. 现在使用以下命令在“branch1”下创build名为“subbranch_of_b1”的新分支。

     git checkout -b subbranch_of_b1 branch1 

    以上将在分支branch1下创build一个名为subbranch_of_b1的新分支(注意,上述命令中的branch1不是必须的,因为HEAD当前指向它,如果您位于不同的分支上,则可以精确)。

  3. 现在使用subbranch_of_b1之后,您可以在本地或远程进行提交或合并。

在另一个分支下创建分支的示例图形插图

同时在dev分支上工作。 会发生什么情况是,在您的场景中,function分支从开发分支的顶端向前移动,但开发分支不会更改。 画一条直线比较容易,因为它可以被认为是向前运动。 你把它指向开发者,从那里你只是继续在平行的道路上。 这两个分支并没有真正的分歧。

现在,如果你在dev上进行提交,在合并之前,你将再次从相同的提交开始,A,但是现在特性将会转到C并且被转移到B.这将显示你想要显示的分割,作为分支现在已经分歧了。

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

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

创build一个分支

  • 主分支签出时创build分支。 这里在主要提交将同步到您创build的分支。

    $ git branch branch1

  • 当branch1被签出时创build分支。 这里在branch1中的提交将被同步到branch2

    $ git branch branch2


结帐分行

git checkout命令切换分支或恢复工作树文件

  • $ git checkout branchname

重命名分支

  • $ git branch -m branch1 newbranchname

删除分支

  • $ git branch -d branch-to-delete
  • $ git branch -D branch-to-delete强制删除而不检查合并状态

创build并切换分支

  • $ git checkout -b branchname

完全包括的分支

  • $ git branch --merged


************************** 分支差异 [git diff branch1..branch2] ************** **********

多行差异

  • $ git diff master..branch1

单线差异

  • $ git diff --color-words branch1..branch2
 git checkout branchName 

切换到另一个分支“branchName”