从另一个分支在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”
git checkout branch1
-
现在使用以下命令在“branch1”下创build名为“subbranch_of_b1”的新分支。
git checkout -b subbranch_of_b1 branch1
以上将在分支branch1下创build一个名为subbranch_of_b1的新分支(注意,上述命令中的
branch1
不是必须的,因为HEAD当前指向它,如果您位于不同的分支上,则可以精确)。 -
现在使用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”