如何在git的开发分支中合并本地提交?

时间:2011-12-06 04:06:37

标签: git merge branch

我有一个本地开发分支“dev”和一个远程“主”分支。对于“dev”分支,我有一个非常复杂的提交历史(近20次连续提交)。我试着用

"git rebase -i origin/master" 
然而,在,我发现这个过程非常容易出错(你必须逐个应用每个提交并解决冲突......)并且令人沮丧... 我现在需要的是将“dev”的提交历史压缩为单个提交,并将此大提交推送到“master”以供审阅和合并。 有没有安全有效的方法呢? 非常感谢你们!

2 个答案:

答案 0 :(得分:1)

我会做那样的事情:

$> git merge-base dev origin/master
<commit>

无论返回什么,都将是用于压缩你的提交的合并点......

然后,假设您在开发分支上,只需执行:

$> git reset <commit>

这样可以有效地将20次连续提交的所有更改重新放回到修改后的文件中。 git status中的部分......

然后只需创建一个新的提交(确保git add --all就是你想要的):

$> git add --all
$> git commit -m "my squeezed stuff"

然后修复你的冲突并推送到原点......

希望它有所帮助,

答案 1 :(得分:0)

如果重置当前分支是有问题的,那么创建一个新分支是一个很好的选择(你做到了),但你不需要复制所有内容。

创建dev2(基于master)之后,您可以checkout dev,然后checkout dev2,而无需修改工作目录中当前存在的dev的任何文件(!)。登记/> 请参阅“switch git branch without files checkout”:

git symbolic-ref HEAD refs/heads/dev2
git reset

然后你可以添加所有内容并提交。