git从另一个分支分支出来

时间:2014-05-01 17:48:09

标签: git github branch branching-and-merging

嗨我有两个分支并行开发' dev'和' prod'我想在本地开发分支中添加另一个本地分支,名为' issue22' (GitPro将此称为主题分支 - 其他人称之为功能分支。所以在终端我用

创建了我的功能/主题分支
git checkout -b issue22 dev

我以为会做一个名为issue22'并从dev分支中的相同源代码开始。我期待看到

prod
dev
dev/issue22

但是当我发送命令时     git branch -a

相反,我看到了

prod
dev
issue22
remotes/origin/head -> origin/master
remotes/origin/dev
remotes/origin/prod

我应该使用什么命令来创建一个新的分支,以便发布22'看起来像一个主题/功能分支,与' dev'并行运行。分支也似乎源于开发分支?

非常感谢

1 个答案:

答案 0 :(得分:3)

提交之间的父母关系是为存储库提供“结构”的原因。使用Git绝对可以实现像displayed on the Git Flow website那样的可视化。它的设计是围绕 Git!

以下是一个可以帮助您入门的示例:

  1. 首先,创建一个新的存储库并添加一个空提交:

    $ mkdir test-repo && cd test-repo
    $ git init
    $ git commit --allow-empty -m "Initial empty commit"
    

    此时你有一个分支和一个提交。您的网络看起来像

    [master]  A
    

    此处,A代表Git-Flow网站最右上角的蓝点。

  2. 此提交缺少图表中的标记。让我们添加它:

    $ git tag -a 0.1
    

    现在我们已经

    [master] [0.1]  A
    
  3. 现在我们将创建develop分支:

    $ git checkout -b develop
    

    此时,我们尚未向develop 中的master添加任何提交,因此分支指向完全相同提交

    [master] [develop] [0.1]  A
    
  4. 这里有点拥挤。让我们再添加几个提交到develop

    $ # Hack, hack, hack...
    $ git add somefile.txt otherfile.dat
    $ git commit
    $ # Hack, hack, hack...
    $ git add foo.bar
    $ git commit
    

    现在我们的网络更有趣了。当我们创建这两个新提交中的每一个时,我们的develop分支被更新为依次指向它们中的每一个。现在我们有了

    [master] [0.1]  A
                     \
    [develop]         B---C
    

    develop实际上指向此时提交C,我们可以将C的祖先追溯到提交A

  5. 我们可以使用新的分支issue22执行相同的操作,但除非我们明确地将其命名为develop/issue22,否则它不会被命名为$ git checkout -b issue22 $ # Hack, hack, hack... $ git add foo.bar $ git commit

    [master] [0.1]  A
                     \
    [develop]         B---C
                           \
    [issue22]               D
    

    现在我们已经

    issue22
    由于develop的父级为D

    C分支develop 。我们可以对issue22[master] [0.1] A \ [develop] B---C---F---G \ [issue22] D---E---H

    进行更多的工作
    issue22

    不改变这种关系。然后我们可以将develop合并回master(或直接合并到[master] [0.1] A \ [develop] B---C---F---G---I \ / [issue22] D---E---H ,但这不是“Git-FLow方式”)并得到类似

    的内容
    {{1}}
  6. 此模型可以扩展到您想要的任意数量的分支,并且可以稍加注意,您可以完全重现Git-Flow图。分支不会“分歧”,直到它们包含不同的提交。

    了解一下Git的内部工作原理可能会有所帮助。网站Think like (a) Git是一个非常好的介绍。