INS*_*INS 72 git merge rebase git-rebase
我有以下情况:
clone
从主存储库(X)创建了一个(Y),因为有许多人在Y上工作,我们没有做任何事情rebase
,只有merge
s.当我们想要将(push
)Y 传递给X时,我们想做一rebase
件事,以便让事情变得干净整洁问题在于,当rebase
我们被要求进行我们在之前merge
步骤中已经完成的所有合并时.有没有解决方案,除了意味着重新进行合并的那个?
我预计它会非常简单,因为我们已经解决了冲突的合并.
Jon*_*mon 106
git merge --squash
在经过大量工作和许多合并之后,现在是我首选的变基方式(参见这个答案).如果您正在处理的分支被调用my-branch
并且您想要从那里进行rebase,master
请执行以下操作:
git checkout my-branch
git branch -m my-branch-old
git checkout master
git checkout -b my-branch
git merge --squash my-branch-old
git commit
Run Code Online (Sandbox Code Playgroud)
Kar*_*ldt 79
重新获得"干净"的历史被高估了.如果要保留历史记录,最好的方法就是进行合并而不是使用rebase.这样,如果您需要返回修订版,它与您在开发期间测试的版本完全相同.这也解决了您之前解决的合并冲突的问题.
如果您不关心保留历史记录,可以从master创建一个新分支,检查它,然后执行a git read-tree -u -m dev
更新工作树以匹配dev
分支.然后,您可以将所有内容提交到一个大提交中,并将其合并到master中.
Von*_*onC 10
两个评论:
git rerere
,则可以避免合并冲突(在rebase期间),这是针对这种情况所做的.git rerere
.您可以使用分支中的所有更改并将它们放入新的提交中master
,如下所示:
git diff master > my_branch.patch
git checkout master
patch -p1 < my_branch.patch
Run Code Online (Sandbox Code Playgroud)
然后暂存您的文件并提交。