我有两个分支:master和dev

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

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

git checkout -b myfeature dev

…(一些工作)

git commit -am "blablabla"
git push origin myfeature

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

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

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

我做错了什么?

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

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


当前回答

如果您想从Git中的任何现有分支创建一个新分支,只需遵循以下选项即可。

首先从要创建新分支的位置更改/签入分支。例如,如果您有以下分支,如:

主人开发分支1

因此,如果要在名为“branch1”的分支下创建名为“subbranch_of_b1”的新分支,请执行以下步骤:

签出或更改为“branch1”git结帐分支1现在,使用以下命令在“branch1”下创建名为“subbranch_of_b1”的新分支。git checkout-b subbranch_of_b1分支1上面的命令将在branchbranch1下创建一个名为subbranch_of_b1的新分支(注意,上面命令中的branch1不是强制性的,因为HEAD当前指向它,但是如果您在不同的分支上,则可以精确到它)。现在,在使用subbranch_of_b1之后,您可以在本地或远程提交、推送或合并它。

将subbranch_of_b1推到远程:

 git push origin subbranch_of_b1

其他回答

Git2.23引入了Git switch和Git restore来划分Git checkout的职责。

从Git 2.23的现有分支创建新分支:

git开关-c我的新分支

切换到新分支“我的新分支”

-c是--create的缩写,并替换众所周知的gitcheckout-b

看看这篇GitHub博客文章,更详细地解释了这些变化:

Git 2.23为现有的命令集带来了一对新的实验命令一个:git开关和git恢复。这两个是注定的为著名的git结帐提供更好的界面。新的司令部希望每个司令部都有明确的分隔,整齐地划分git结账有哪些职责

要从本地目录中的另一个分支创建分支,可以使用以下命令。

git checkout -b <sub-branch> branch

例如:

要创建的新分支的名称为“XYZ”分支机构的名称“ABC”,必须在其下创建“XYZ”

git checkout -b XYZ ABC

如果要从其他分支创建分支,请执行以下步骤:

假设:

您当前在主分支中。您没有要提交的更改。(如果要提交任何更改,请将其隐藏起来!)BranchExisting是您需要从中创建名为BranchMyNew的新分支的分支的名称。

步骤:

将分支提取到本地计算机。git fetch origin BranchExisting:BranchExisting

此命令将在本地创建具有相同分支名称的新分支。

现在,从主分支签出到新获取的分支git checkout Branch现有您现在处于BranchExisting中。现在从现有分支创建一个新分支。git checkout-b BranchMyNew

干得好!

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

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

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

这对我很有用:

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

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