我有两个分支:master和dev

我想从开发分支创建一个“功能分支”。

目前在分支开发中,我做到了:

git checkout -b myfeature dev

…(一些工作)

git commit -am "blablabla"
git push origin myfeature

但是,在想象我的树枝之后,我得到了:

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

我的意思是分支似乎很快就合并了,我不明白为什么。。。

我做错了什么?

如何从另一个分支分支并将其推回到功能分支的远程存储库?

所有这些都在一个分支模型中,就像这里描述的那样。


当前回答

要从另一个分支创建分支,也可以使用以下语法:

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

它比“git checkout-b”+“git push origin”略短

其他回答

创建分支

签出主分支时创建分支。此处,master中的提交将同步到您创建的分支。git分支1签出branch1时创建分支。此处,branch1中的提交将同步到branch2git分支分支2


签出分支

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

git签出分支名称


重命名分支

git branch-m branch1 newbranchname


删除分支

gitbranch-d要删除的分支git branch-要删除的D分支(强制删除而不检查合并状态)


创建和切换分支

git checkout-b branchname


完全包含的分支

git分支--合并



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

多行差异

git diff主机。。分支1

单线差异

git diff—颜色词branch1..branch2

在开发分支上同时执行工作。在您的场景中,功能分支从开发分支的顶端向前移动,但开发分支不会改变。画直线更容易,因为它可以被认为是向前运动。您到达了dev上的A点,从那里开始,您只需沿着一条平行路径继续。这两个分支并没有真正分开。

现在,如果您在合并之前对dev进行提交,您将再次从同一个提交a开始,但现在功能将转到C,而dev转到B。这将显示您正在尝试可视化的拆分,因为分支现在已经分叉。

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

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

如果您喜欢发布的链接中的方法,请查看GitFlow。

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

但要回答您的问题:

git checkout -b myFeature dev

从dev创建MyFeature分支。完成您的工作,然后

git commit -am "Your message"

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

git checkout dev
git merge --no-ff myFeature

现在将更改推送到服务器

git push origin dev
git push origin myFeature

你会看到你想要的样子。

要从另一个分支创建分支,也可以使用以下语法:

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

它比“git checkout-b”+“git push origin”略短

这对我很有用:

转到GitHub存储库,选择要从中创建新分支的分支名称,如下图所示:

然后键入要创建的分支名称,然后单击“创建分支”。