Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 将分支合并到与起始分支不同的分支_Git - Fatal编程技术网

Git 将分支合并到与起始分支不同的分支

Git 将分支合并到与起始分支不同的分支,git,Git,我有分支主控和分支开发。我错误地从主控启动了一个功能分支。也就是说,我在master上时执行了git checkout-b功能分支 现在我想合并branch dev上的功能分支。我该怎么做?要将您从一个分支所做的提交更改合并到另一个分支,您可以使用:git merge。让我给你举个例子: 我想将我在分支dev上所做的更改与我的master分支合并。我要做的第一件事是提交分支dev上的更改,然后切换到分支master,并使用以下命令合并来自dev分支的更改: git merge dev 因此,一

我有分支主控和分支开发。我错误地从主控启动了一个功能分支。也就是说,我在master上时执行了git checkout-b功能分支


现在我想合并branch dev上的功能分支。我该怎么做?

要将您从一个
分支
所做的提交更改合并到另一个分支,您可以使用:
git merge
。让我给你举个例子:

我想将我在分支
dev
上所做的更改与我的
master分支
合并。我要做的第一件事是提交分支
dev
上的更改,然后切换到分支
master
,并使用以下命令合并来自
dev
分支的更改:

git merge dev
因此,一步一步:首先从开发分支提交您的更改

git commit -m "<commit message>"
最后一步:合并
dev
分支中的更改/

git merge dev

希望这有帮助!

您可以在开始工作之前使用“git log”查找点,然后使用“git diff”查找当前头部和该点之间的差异。“git apply”将应用该差异

  • 在功能分支上,使用git日志查找工作的开始。在工作之前记录提交

     git checkout feature-branch
     git log
    
  • 存储您在上面找到的点和您的工作(当前HEAD修订)之间的差异。HEAD是一个隐含参数

     git diff (commit_from_step_above) > patch.txt
    
  • 将更改应用于正确的要素分支

     git checkout dev
     git checkout -b proper_feature-branch
     git apply patch.txt
     (add, commit, etc)
    

  • 如果其他人更改了您正在更改的相同文件,您将遇到合并冲突。这是意料之中的。

    如果提交次数不太多,则“git cherrypick”是一个选项:

  • 从开发分支创建新的主题分支
  • 使用git cherrypick从原始主题分支复制提交
  • 删除原始主题分支
  • 编辑:我添加了一个如何使用“git rebase”命令执行相同操作的示例:

  • 找出作为主题分支父级的提交的哈希
  • git rebase——在开发人员hash_b4_主题主题分支上

  • 如果您不害怕计算提交次数,也可以使用branch~N语法而不是commit hash;)虽然它只是一个命令,但我仍然会使用第一个选项,因为它需要付出更多的努力才能正确执行(即检查手册,选择正确的命令行参数)。因此,只有移动更长的主题分支才有意义。

    git签出主机和git合并功能分支
    ??@ckruczek但我想在签出开发时合并到dev而不是主机。怎么了?这实际上是最简单的解决方案!另一个不错的选择是“git-rebase”,但这可能需要更多的时间和精力才能正确使用命令行参数。出于好奇,我如何使用rebase实现这一点?当然,我还包括了rebase选项。
     git checkout dev
     git checkout -b proper_feature-branch
     git apply patch.txt
     (add, commit, etc)