我正在修改别人的(非git)代码。我下载了原版,随后进行了修改,然后跳了一下枪,并将修改后的版本作为我的第一次提交。这是一个错误,我应该将原始下载的代码添加为我的第一次提交。
然后加上侮辱伤害,我将原始代码添加为我的第一次编辑的分支..换句话说,它现在是一个大混乱:(
简单来说,我看起来像下面的蓝图。 C5是实际的原始代码,C1,C2-C6是我的逐步修改(C4是多余的)。我宁愿让绿色成为我的历史。
如何修改历史记录以实现此目的?
非常感谢,
狡猾
答案 0 :(得分:9)
我在命令行完全完成了这项工作,但我将插入来自SourceTree的屏幕截图来说明正在发生的事情。
首先从C5提交中获取提交ID(50da9c3)的前7位或8位数字并将其放入剪贴板或textedit或其他内容 - 稍后您将需要它
为了确认,这是我们的起始状态:
以下是获取目标的步骤:
创建一个新的非根分支,以开始从命名基础
构建提交git symbolic-ref HEAD refs/heads/base
现在从git
中删除所有文件和目录git rm --cached -r .
现在所有文件都“未跟踪”,将其从本地工作目录中删除
git clean -d --force
现在创建一个没有任何内容的提交(这将是将要构建其他所有内容的提交)。
git commit --allow-empty -m'Initial Commit'
你的树现在应该是这样的:
现在,樱桃挑选c5提交(你在剪贴板上有什么)
git cherry-pick 50da9c3
现在将master分支重新启动到基本分支
git rebase --onto base --root master
现在你可以删除base和c4-c5分支
git branch -d base
git branch -D c4-c5branch
请记住,'Initial Commit'是一个没有文件的空提交,所以不要被愚弄。 C5提交实际上是第一个基于内容的提交。