2017-05-29 128 views
1

我有分支主分支dev。我错误地从主人开始了一个功能分支。意思是,我在做主人时做了git checkout -b feature-branch将分支合并到与起始分支不同的分支

现在我想合并分支开发中的功能分支。我该怎么做?

+0

'git checkout master && git merge featurebranch' ?? – ckruczek

+0

@ckruczek但我想合并到dev –

+0

然后签出dev而不是master。怎么了? – ckruczek

回答

1

如果没有太多的提交,然后“混帐cherrypick”是一个选项:

  1. 创建Dev分支的新特性分支
  2. 使用git cherrypick从原来的话题分支复制提交
  3. 删除原来的话题分支

编辑:我添加了一个例子,如何做同样用“git的变基”命令:

  1. 弄清楚了提交散列是主题分支
  2. git的变基--onto开发hash_b4_topic topicbranch的父

您还可以使用支〜n的语法,而不是提交哈希如果你不害怕提交提交;)尽管它只是一个命令,但我仍然会使用第一个选项,因为它需要付出相当多的努力才能使其正确(即检查手册,选择正确的命令行参数)。所以只有移动更长的主题分支才有意义。

+0

这实际上是最简单的解决方案! –

+0

另一个不错的选择是“git rebase”,但这可能需要更多的时间和精力来获得命令行参数。 – JooMing

+0

只是出于好奇,我如何用rebase做到这一点? –

0

将您从一个branch所做的已提交更改合并到另一个您可以使用的:git merge <branchname>。让我帮你一个例子:”

我要合并我已经与分支dev所做的更改我的master branch我会做的第一件事是提交分支dev的变化的话,我会切换到分支。 master,我会通过合并从dev分支的变化:

git merge dev 

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

git commit -m "<commit message>" 

第二步:SWITC h至主分支

git checkout master 

最后一步:/从dev分支合并更改

git merge dev 

希望这有助于!

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) 
    

如果其他人已经改变了您要更改相同的文件,你就会有一个合并冲突。这是预料之中的。