我正在修改其他人的(非 git)代码。我下载了原版,随后进行了修改,然后立即行动并将修改后的版本作为我的第一次提交。这是一个错误,我应该在第一次提交时添加原始下载的代码。
然后雪上加霜的是,我添加了原始代码作为我第一次编辑的一个分支。换句话说,它现在一团糟:(
简单来说,我所拥有的看起来像下面的蓝色图表。 C5 是实际的原始代码,C1、C2-C6 是我逐步修改的(C4 是多余的)。我宁愿让绿色成为我的历史。
任何想法如何修改历史来完成这个?
非常感谢,
狡猾的
最佳答案
我已完全在命令行中完成此操作,但我将插入来自 SourceTree 的屏幕截图来说明发生了什么。
首先从 C5 提交中获取提交 ID (50da9c3) 的前 7 或 8 位数字,并将其放入剪贴板或文本编辑器或其他内容中 - 稍后您将需要它
为了确认,这是我们的起始状态:
以下是到达目的地的步骤:
创建一个新的非根分支以开始从命名基础构建提交
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 分支重新根植到 base 分支上
git rebase --onto base --root master
现在可以删除base和c4-c5分支
git branch -d base
git branch -D c4-c5branch
请记住“初始提交”是一个没有文件的空提交,所以不要被愚弄了。 C5 提交实际上是第一个基于内容的提交。
关于git - (还有一个)修改 git 历史以添加第一次提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081308/