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

时间:2017-05-29 07:07:12

标签: git

我有分支主管和分支开发。我错误地从master开始了一个功能分支。意思是,当我在掌握时,我做了git checkout -b feature-branch

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

3 个答案:

答案 0 :(得分:1)

如果没有太多提交,那么" git cherrypick"是一个选项:

  1. 从开发分支
  2. 创建新主题分支
  3. 使用git cherrypick复制原始主题分支的提交
  4. 删除原始主题分支
  5. 编辑:我添加了一个例子,如何使用" git rebase"命令:

    1. 找出作为主题分支的父级的提交的哈希值
    2. git rebase --onto dev hash_b4_topic topicbranch
    3. 如果您不害怕计数提交,也可以使用branch~N语法而不是提交哈希;)虽然它只是一个命令,但我仍然会使用第一个选项,因为它需要相当多的努力为了正确(即检查手册,选择正确的命令行参数)。因此,只有移动更长的主题分支才有意义。

答案 1 :(得分:0)

将您从一个branch提交的提交更改合并到另一个您可以使用的更改:git merge <branchname>。让我举个例子:“

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

git merge dev

所以一步一步:首先从开发分支提交您的更改。

git commit -m "<commit message>"

第二步:切换到主分支

git checkout master

最后一步:合并dev分支/

中的更改
git merge dev

希望这有帮助!

答案 2 :(得分:0)

您可以使用'git log'在开始工作之前找到该点,然后使用'git diff'查找当前HEAD与该点之间的差异。 'git apply'将适用那种差异。

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

     git checkout feature-branch
     git log
    
  2. 存储您在上面找到的点与您的工作之间的差异(当前的HEAD修订版)。 HEAD是一个隐含的论点。

     git diff (commit_from_step_above) > patch.txt
    
  3. 将您的更改应用于正确的功能分支。

     git checkout dev
     git checkout -b proper_feature-branch
     git apply patch.txt
     (add, commit, etc)
    
  4. 如果其他人更改了您正在更改的相同文件,则会发生合并冲突。这是预期的。