我有一个本地开发分支“dev”和一个远程“主”分支。对于“dev”分支,我有一个非常复杂的提交历史(近20次连续提交)。我试着用
"git rebase -i origin/master"
然而,在答案 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
然后你可以添加所有内容并提交。