2010-12-17 68 views
501

创建Git中的一个分支,我有两个分支:开发从另一个分支

我想创建从开发分支“特性分支”。

目前在树枝上开发的,我做的事:

$ git checkout -b myfeature dev 

...(事情)

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

但是,可视化我的树枝后,我得到了:

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

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

我做错了什么?

您能解释一下我如何从另一个分支分支并推回到远程存储库以获取功能分支?

所有在分支模型如the one described here

+9

你会发现它更容易在C画ode块(缩进四个空格,或使用101010按钮或ctrl-k),而不是块引号。一个随机的例子:http://stackoverflow.com/questions/2474353/how-to-copy-commits-from-one-branch-to-another/2474371#2474371 – Cascabel 2010-12-17 14:41:38

回答

731

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

这是他为该工作流创建的一组脚本。

但是,为了回答你的问题:

$ git checkout -b myFeature dev 

创建我的功能岔开开发。做你的工作,然后

$ git commit -am "Your message" 

现在合并所做的更改,以开发没有快进

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

编辑

现在更改推送到服务器

$ git push origin dev 
$ git push origin myFeature 

你会看到你想要它。

+0

感谢您的回答;) 我也一样(没有合并) 在看Git Flow源代码后,它大致相同... 我不明白为什么当我创建我的功能分支,提交并推送到它(远程)时,分支似乎合并时,我可视化所有我的分支 – revohsalf 2010-12-17 13:36:02

+0

因为您正在将myFeature分支推送到服务器,并且它显示它已脱离开发分支。没有合并。我的例子合并到开发分支并推送合并的分支到服务器。 – Abizern 2010-12-17 13:49:00

+0

我已经更新了我的答案。 – Abizern 2010-12-17 13:54:24

9

同时在dev分支上工作。会发生什么情况是,在您的场景中,功能分支从开发分支的顶端向前移动,但开发分支不会更改。画直线很容易,因为它可以被认为是向前运动。你让它指向开发者,并从那里继续进行并行路径。这两个分支并没有真正分离。

现在,如果您在合并之前对dev进行了提交,那么您将再次从相同的提交A开始,但现在特性将会转到C并且将转移到B.这将显示您尝试可视化的分割,因为分支机构现在已经发生分歧。

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

对战

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

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

首先从您想要创建新分支的分支中更改/检出。例如,如果您有以下分支机构,如:

  • 开发
  • BRANCH1

所以,如果你想创建一个新的分支称为“subbranch_of_b1”下分支名为“BRANCH1”遵循的步骤:

  1. Checkout或变成“BRANCH1”

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

    git checkout -b subbranch_of_b1 branch1 
    

    以上会创建一个名为subbranch_of_b1该分支下新的分支BRANCH1(注意:branch1上面的命令是不是强制性的,因为头是目前指向它,你可以精确的,如果尽管你在不同的分支上)。

  3. 现在使用subbranch_of_b1后,您可以在本地或远程提交或推送或合并它。

A sample Graphical Illustration Of Creating Branches Under another Branch

+1

如何将subbranch_of_b1推送到远程? – user269867 2016-12-07 21:03:25

+7

@ user269867:“git push origin subbranch_of_b1”将为您完成这项工作。 – 2016-12-08 04:56:38

+0

现在,如果我将更改推送给master,它是否会自动发生在branch1中? – 2017-11-28 07:25:42

-1
git checkout branchName 

切换到另一分支 “分支名称”

+4

这只能从当前分支创建它,而不一定是你想从哪里分支出去的地方。 @ Alex的[回答](http://stackoverflow.com/a/32391944/5804443)是IMO的正确答案。 – 2016-10-20 09:42:24

10

创建一个分支

  • 当主分支签出创建分支。这里的主要提交将同步到您创建的分支。

    $ git branch branch1

  • 当检出分支1时创建分支。在BRANCH1这里承诺将同步到店2

    $ 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力缺失而不检查合并后的状态

创建和交换机分公司

  • $ git checkout -b branchname

分行被完全包括

  • $ git branch --merged


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

多行差
  • $ git diff master..branch1
SINGLELINE差
  • $ git diff --color-words branch1..branch2
+0

感谢您的额外命令。 。 。 – 2017-08-10 01:23:54

相关问题