如何解决如何在 Git 中变基,但以更智能的方式进行?
我浏览了很多 rebase 的答案和文章,但似乎没有做我想做的事情。
我有一个项目:
startCommit(c1)-->c2-->c3-->c4-->c5-->c6-->c7-->c8-->c9-->c10(当前)
当我想运行项目的多个实例时,这会造成巨大的膨胀。 (.git 目录超过 30 gig,而 .git 以外的项目只有 12g 左右。
所以我想说的是
嘿 git,我不想回到 c6 之后的时间。所以我想要看起来像这样的东西:
c6-->c7-->c8-->c9-->c10(当前)
现在,rebase 听起来是正确的答案,但无论我尝试过多少种方法,它都会引发冲突并要求解决。这对我来说没有意义 - 因为我知道我可以毫无问题地“结帐 c6”。据我所知(可能是大错特错),c7 以后只是快照上的增量,将在 c6 处。 C7不需要知道我是怎么到c6的吧?
我在 rebase 中遇到了很多冲突暂停,并且基于文件(统一场景文件)的性质,我不能就地解决它们。基本上我希望它在这个 rebase 期间自动做的是:
假设无论出于何种原因,1234 与 5 发生冲突。我不在乎你做什么,但壁球的结果应该是我在结帐 c5 时看到的结果。
所以,是的,我根本不明白为什么会有冲突,除非 Git 试图以某种方式将每个步骤的各个更改存储为一种提交形式(这没有意义)。我不在乎c6之前的变化..那我怎么去创造
c6-->c7-->c8-->c9-->c10(当前)
想象一下,当我运行任何 rebase 命令时,有 1000 次提交和 100 次冲突。
这似乎是一个如此明显的功能,我 99% 肯定我只是误读了所有在线指南。
我还看到了很多技巧,比如……无缝、轻松地挤压到这个分支的当前分支头……但是我没有最后 4 个可用的提交。
解决方法
假设你的历史都是线性的,这就是我会做的:
git checkout --orphan new-branch c6 # start a new orphan branch from C6
git commit -m "First commit"
git rebase --onto new-branch c6 c10
瞧!随意将旧分支放在新分支所在的位置,依此类推。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。