subbranch:从另一个分支在Git中创建一个分支

我有两个分支:masterdev

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

目前在分支机构dev上,我执行以下操作:

$ git checkout -b myfeature dev

... (一些工作)

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

但是,在可视化我的分支之后,我得到了:

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

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

我做错了什么?

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

像这里描述的那样的分支模型中的所有内容。


#1楼

同时在dev分支上工作。 发生的情况是,在您的场景中,功能分支从dev分支的顶端向前移动,但是dev分支没有改变。 绘制为直线更容易,因为可以将其视为向前运动。 您将其指向开发人员上的A,然后从那里继续沿着并行路径前进。 这两个分支并没有真正分开。

现在,如果您对dev进行提交,则在合并之前,您将再次从相同的提交A开始,但是现在功能将转到C,将开发人员转到B。这将显示您尝试可视化的拆分,即分支现在分歧了。

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

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

#2楼

如果要从Git中的任何现有分支创建新分支,只需遵循这些选项即可。

首先在要创建新分支的分支中更改/签出。 例如,如果您具有以下分支,例如:

  • 开发者
  • 分支1

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

  • 结帐或更改为“ branch1”

    git checkout branch1
  • 现在,根据“BRANCH1”使用下面的命令创建名为“subbranch_of_b1”新的分支。

    git checkout -b subbranch_of_b1 branch1

    上面的代码将创建一个名为分支BRANCH1subbranch_of_b1新的分支(请注意, branch1上面的命令是不是强制性的,因为头是目前指向它,你可以精确的,如果你是在一个不同的分支,虽然)。

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

  • 将subbranch_of_b1推送到远程

    git push origin subbranch_of_b1

    #3楼

    创建一个分支

    • 检出主分支后创建分支。 master中的提交将被同步到您创建的分支。

      $ git branch branch1

    • 在检出branch1时创建分支。 在这里,在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 (在不检查合并状态的情况下强制删除 )

    创建和切换分支

    • $ git checkout -b branchname

    完全包含的分支

    • $ git branch --merged


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

    多行差异
    • $ git diff master..branch1
    单行差异
    • $ git diff --color-words branch1..branch2

    #4楼

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

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

    但是要回答你的问题:

    $ 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

    然后您会看到它想要的样子。


    #5楼

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

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

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


    #6楼

    Git 2.23引入了git switch和git restore来分割git checkout的职责

    从git 2.23开始,从现有分支创建一个新分支:

    git switch -c my-new-branch

    切换到新分支“ my-new-branch”

    • -c--create的缩写-替换众所周知的git checkout -b

    看看这个 Github博客文章,更详细地解释更改:

    Git 2.23为现有的命令集带来了一对新的实验命令:git switchgit restore。 这两个是为了最终为众所周知的git checkout提供更好的界面。 新命令旨在使每个命令有一个清晰的分隔,整齐地划分出git checkout的许多职责


    #7楼

    如果要从另一个分支创建分支,请遵循以下步骤:

    假设

  • 您目前在master分支中。
  • 您没有要提交的更改。 (如果您有任何要提交的更改,请隐藏它!)。
  • BranchExisting是分支的名称,您需要从该分支中​​创建一个名为BranchMyNew的新分支。
  • 步骤

  • 将分支获取到本地计算机。

    $ git fetch origin BranchExisting : BranchExisting
  • 此命令将在本地使用相同的分支名称创建一个新分支。

  • 现在,从主分支结帐到新获取的分支

    $ git checkout BranchExisting
  • 您现在位于BranchExisting中。 现在从该现有分支创建一个新分支。

    $ git checkout -b BranchMyNew
  • 干得好!


    #8楼

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

    git checkout -b <sub-branch> branch

    例如:

    • 要创建的新分支的名称“ XYZ”
    • 必须在其下创建XYZ的分支ABC的名称
    git checkout -b XYZ ABC

    相关推荐

    相关文章