使用git,如何在保持提交的时间顺序的同时,将一个分支的内容重设为另一个分支的内容?
我有三个分支机构:使用git,如何在保持提交的时间顺序的同时,将一个分支的内容重设为另一个分支的内容?,git,Git,我有三个分支机构: 发展 a、 从dev创建 b、 从dev创建 在分支a,我在15:33有一个提交a1,在15:35有另一个提交a2 在分支b,我在15h34有一个提交b1 我想把这些修改放到dev中并保存历史记录。我从分支a开始 git checkout a git rebase dev git checkout dev git merge a 这个很好用。正如我所期望的,提交在这三种情况中,因为基本上没有工作要做 然后我想用branchb获得相同的结果 git checkout b
- 发展
- a、 从dev创建
- b、 从dev创建
a
,我在15:33有一个提交a1
,在15:35有另一个提交a2
在分支b
,我在15h34有一个提交b1
我想把这些修改放到dev
中并保存历史记录。我从分支a
开始
git checkout a
git rebase dev
git checkout dev
git merge a
这个很好用。正如我所期望的,提交在这三种情况中,因为基本上没有工作要做
然后我想用branchb
获得相同的结果
git checkout b
git rebase dev
>fix conflict because there was one that was expected<
git checkout dev
git merge a
git签出b
git rebase开发
>修复冲突,因为存在预期的冲突<
git签出开发
git合并a
这会造成提交顺序如下的情况:
b1 15h34
a1 15h33
a2 15h35 >dev<
b115h34
a1 15h33
a2 15h35>开发<
此时,如果我想按时间顺序获取历史记录,我必须重新设置head~4的基址
,以对提交进行重新排序。但这需要用力推遥控器,我想避免
我如何修改我的“git流”,或者我可以使用什么解决方案将我的功能分支重新基础/合并到开发分支中,并保持历史记录的整洁(按时间顺序)?这里有两个问题: 首先,如何按照您想要的顺序进行提交。正如您所注意到的,您可以使用
rebase-i
在一个分支中完成提交
你所说的问题是,你必须用力推。如果你已经推动了重新基准的结果,那么这是真的;但未来的解决方案是,在推之前执行rebase-i
这导致了第二个问题:
如果你已经推动了历史,你如何在没有强制推动的情况下修复它?答案是:你不能
顺便说一句,我根本不建议这样做。我理解你认为按时间顺序进行提交是有道理的。当你看历史是如何被实际使用的,它不是;您所做的是通过将相关更改与其他更改组混合来取消分组。为什么不选择cherry pick?@matt,因为我不知道这一点,我执行的命令越少,团队就越高兴:D@matt我的话有什么变化?我说我不知道,如果可能的话,我希望使用尽可能少的命令。并不是说我不想用它。请不要成为那种修改别人所说的话的人……谢谢,特别是旁注。这和一个大学生对我说的话不谋而合。